pagecontrol

Tags:    delphi technology

Jeg har lavet et program med en pagecontrol, som har en tabsheet på tabsheeten er der memoer osv. Kan jeg lave en kopi af den tabsheet?

Hvis i ikke forstår hvad jeg mener :D såå..
skulle det være noget i stil med det her:

with TTabSheet.Create(PageControl1) do
begin
PageControl := PageControl1;
Caption := 'grip';
end;

men hvis jeg laver det på den måde får jeg ikke en kopi af den gamle tabsheet men en helt ny tom.



3 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
er der ikke en lettere måde at gøre det på end at lave alle componenterne igen?


Lav en klasse som arver fra TTabSheet og som indeholder alle dine komponenter. I constructoren creater du så dine memoer og hvad du nu ellers har af komponenter og sætter deres width, height osv., og herefter bruger du bare din nye klasse på samme måde som du ville have brugt et TTabSheet. Det kommer til at ligne nedenstående lidt:

<pre>

TExtTabSheet = class(TTabSheet)
private
Memo: TMemo;
Label: TLabel;
//flere komponenter
public
constructor Create(AOwner: TObject);
destructor Destroy; override;
end;

....

constructor TExtTabSheet.Create(AOwner: TObject);
begin
Memo := TMemo.Create(nil);
Memo.Parent := AOwner;
Memo.Width := 200;
Memo.Height := 200;
//osv. med de andre komponenter
inherited Create;
end;

destructor Destroy;
begin
inherited
Memo.Free;
end;
</pre>

Herefter bruger du den på samme måde som et normalt TTabSheet:

<pre>
procedure blabla;
var
TS: TExtTabSheet;
begin
TS := TExtTabSheet.Create(PageControl1);
TS.Align := alClient;
//fyld selv mere kode på
end;
</pre>

Jeg skal ikke kunne udelukke at der er en enkelt fejl eller to i det da jeg ikke lige har prøvet om det virker i Delphi :)



Jeg har lavet et program med en pagecontrol, som har en tabsheet på tabsheeten er der memoer osv. Kan jeg lave en kopi af den tabsheet?

Hvis i ikke forstår hvad jeg mener :D såå..
skulle det være noget i stil med det her:

with TTabSheet.Create(PageControl1) do
begin
PageControl := PageControl1;
Caption := 'grip';
end;

men hvis jeg laver det på den måde får jeg ikke en kopi af den gamle tabsheet men en helt ny tom.


procedure TForm1.Button1Click(Sender: TObject);
var
TS: TTabSheet;
begin
TS := TTabSheet.Create(PageControl1);
with TS do begin
Inc(Number);
Caption := 'Tab'+IntToStr(Number);
PageControl := PageControl1;
end;
with TMemo.Create(TS) do begin
Align := alClient;
Text := TS.Caption;
Parent := TS;
end;
end;

Husk at tilføje Number : Integer; i public sektionen!




er der ikke en lettere måde at gøre det på end at lave alle componenterne igen?



t