Jak dynamicznie stworzyć komponent by pokazał się on na stronie w PageControl ?
Aktualne próby tworzą komponent ale nie widać go w zakładce.
By nie było zamieszania edytowałem nazwę tematu. Posty poniżej dotyczą trochę innego problemu.
Jak dynamicznie stworzyć komponent by pokazał się on na stronie w PageControl ?
Aktualne próby tworzą komponent ale nie widać go w zakładce.
By nie było zamieszania edytowałem nazwę tematu. Posty poniżej dotyczą trochę innego problemu.
Pewnie jakaś kolizja z MainFrm.Caption?
Zmień nazwę tablicy Caption na inną (np Captions) i z głowy.
ok teraz nowy problem :(
mam nowa klase
type
TStruct = class(TMainFrm)
public
procedure Make(Which : byte);
procedure Delete(Which : byte);
end;
procedura make wyglada tak jak poprzednio CreateStruct ale nie wyswietlaja sie Labele. Teoretycznie wartosci sa nadane (sprawdzane debuggerem) ale widocznie trzeba wstawic odpowiedni paramatetr parent. Tylko jaki ?
zapomnialem dodac ze pracuje na TPageControl
moze caly kod:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls,ExtCtrls, ComCtrls;
type
TMainFrm = class(TForm)
Who: TLabel;
Angel: TSpeedButton;
Demon: TSpeedButton;
Undead: TSpeedButton;
Human: TSpeedButton;
OpenDialog: TOpenDialog;
SaveDialog: TSaveDialog;
PageControl: TPageControl;
Page1: TTabSheet;
Page2: TTabSheet;
Page3: TTabSheet;
Page4: TTabSheet;
procedure AngelClick(Sender: TObject);
procedure Load(Sender : TObject);
procedure Dalej(Sender : TObject);
procedure Check(Sender : TObject);
procedure FormShow(Sender: TObject);
procedure Page1Show(Sender: TObject);
private
public
{ Public declarations }
end;
type
TStruct = class(TMainFrm)
public
procedure Make(Which : byte);
procedure Delete(Which : byte);
end;
type THero = packed record
Typ : byte;
Hp : integer;
Att : integer;
AA : integer;
Ini : integer;
Def : integer;
end;
var
MainFrm: TMainFrm;
Struct : TStruct;
Hero : THero;
FilesCount : integer;
Edit:array [0..4] of TLabeledEdit;
const
Captions : array [0..4] of string =
(
'Życie',
'Atak',
'Atak przeciwlotniczy',
'Obrona',
'Inicjatywa'
);
implementation
{$R *.dfm}
procedure TStruct.Make(Which : byte);
var
i:shortint;
begin//1
case Which of
0:
begin//2
for i:=0 to 4 do
begin//3
Edit[i] := TEdit.Create(self);
Edit[i].Parent := MainFrm;
if (i=1)or(i=3) then Edit[i].Left := 180 else Edit[i].Left := 40;
if (i=1)or(i=3) then Edit[i].Top := 180 + (30*(i-1)) else Edit[i].Top := 180 + (30*i);
Edit[i].Text := '100';
Edit[i].LabeledEdit.Caption := captions[i];
Edit[i].Name := 'E'+IntToStr(i+1);
Edit[i].OnChange := MainFrm.Check;
end;//3
end;//2
1:
begin//2
///
end;//2
end;//case end
end;//1
//...
//Pozostale procedury
//...
initialization
Struct := TStruct.Create(MainFrm);
finalization
Struct.Free;
end.
Może zamiast wsadzać procedurę w initialization powinieneś użyć OnCreate?
Spróbuj - 100% na procesorze ale program sie nie odpala ? Dlaczego ?
poza tym jaka procedura ? To jest inicjalizacja klasy.
Dobra - poszedlem tropem Entka i w OnShow działa. Może tylko ktoś powiedzieć dlaczego Edity sie pojawiają a reszta nie ?