Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TTabSheet Klon auf TPageControl (https://www.delphipraxis.net/56466-ttabsheet-klon-auf-tpagecontrol.html)

chillywilly 6. Nov 2005 12:10


TTabSheet Klon auf TPageControl
 
Hi ihr!
ich würde gerne wissen wie ich bei klick auf einen button ein neues Tabsheet auf ein TPageControl platzieren kann das genau die gleichen Objekte drauf hat wie ein anderes.
(also ich möchte sozusagen einen klon von einem Tabsheet erstellen, wo aber zb die caption variieren kann. aber es soll immer ein editfeld drauf sein)

danke schonmal
mika

ichbins 6. Nov 2005 12:31

Re: TTabSheet Klon auf TPageControl
 
Mit einem Pagecontrol ist das sehr schwierig. Du müsstest alle Komponenten auslesen, die auf der zu kopierenden Page liegen und diese dann irgendwie verdoppeln. Furchtbar kompliziert...

Wenn du dagegen einen Tabcontrol machst, kannst du einfach mit

Delphi-Quellcode:
  tabcontrol1.Tabs.Add(tabname)
ein Tab hinzufügen. Auf allen Tabs wird dann das selbe angezeigt.

chillywilly 6. Nov 2005 12:33

Re: TTabSheet Klon auf TPageControl
 
Ok also mit tabcontrol.
Nur wo finde ich da in der Objektleiste ein Objekt auf das dann halt der Tab ist?

chillywilly 6. Nov 2005 12:41

Re: TTabSheet Klon auf TPageControl
 
hm wadde.
ich habe nunc mal nen tabcontrol benutzt nur will ich ja nich nur mehrere tabs oben in der tableiste haben, er soll mir die objekte (zumbeispiel auf nem panel) pro tab einmal erzeugen, sodass ich für jedes tab halt einen satz von objekten habe, die ich einzelnd ansteuern kann

SirThornberry 6. Nov 2005 12:48

Re: TTabSheet Klon auf TPageControl
 
Wenn du das TabSheet welches du verdoppeln willst vorher von TTabSheet ableitest und die Controls auch in der abgleiteten Version gleich automatisch drauf setzt bräuchtest du einfach nur eine neue Instanz davon erzeugen. Ansonsten geht das mit dem verdoppeln nur wenn du ausschließlich published-Properties gesetzt hast (also alles über den Objectinsprector) weil die anderen Dinge die durch irgendwelche Methoden gesettz wurden nicht zu 100% ausgelesen werden können und somit auch kein clonen möglich ist.

chillywilly 6. Nov 2005 12:50

Re: TTabSheet Klon auf TPageControl
 
ne Beispiel Anwendung für die erste Methode haste nich zufällig oder? :p

SirThornberry 6. Nov 2005 12:52

Re: TTabSheet Klon auf TPageControl
 
na die erste Methode ist einfach eine Komponente von TTabSheet ableiten und im Constructor davon die darauf liegenden Dinge erzeugen. Das hier genauer zu erläutern wäre nicht angebracht denn dazu gibt es entsprechende ausführliche tutorials die sich mit der Ableitung befassen.
Normal würdest du ja ein TabSheet zur Laufzeit so erzeugen:
Delphi-Quellcode:
var LSheet: TTabSheet;
begin
  LSheet := TTabSheet.Create(nil);
  LSheet.PageControl := PageControl1;
und anstelle von TTabSheet nimmst du deine eigene Klasse die du von TTabSheet abgeleitet hast.

Wenn du das ganze jetzt mit einer abgleiteten Version machst siehts so aus:
Delphi-Quellcode:
type
  TOwnTabSheet = class(TTabSheet)
  private
    Button1: TButton;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;
[...]
constructor TOwnTabSheet.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Caption := 'eigenes TabSheet';
  Button1 := TButton.Create(Self);
  Button1.Parent := Self;
end;

destructor TOwnTabSheet.Destroy;
begin
  Button1.Free;
  inherited Destroy;
end;
[...]
var LSheet: TOwnTabSheet;
begin
  LSheet := TOwnTabSheet.Create(nil);
  LSheet.PageControl := PageControl1;

chillywilly 6. Nov 2005 13:10

Re: TTabSheet Klon auf TPageControl
 
ZUU GEIL!!!

danke! läuft so wie ichs mir gewünscht hab!


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz