Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Tabsheet samt Inhalt zur Laufzeit erstellen (https://www.delphipraxis.net/60058-tabsheet-samt-inhalt-zur-laufzeit-erstellen.html)

buyden 2. Jan 2006 13:57


Tabsheet samt Inhalt zur Laufzeit erstellen
 
Hi,

Schönes neues Jahr erstmal.

Ich möchte zur Laufzeit Tabsheets erstellen, komplett mit allen Objekten die darauf liegen.
Es handelt sich dabei um ein Formular zu einem Auftrag. Ich möchte für andere Aufträge jeweils ein neues TabSheet mit allen dazugehörigen Formulardaten erstellen.

Wie kann man das am einfachsten anstellen?

jim_raynor 2. Jan 2006 14:08

Re: Tabsheet samt Inhalt zur Laufzeit erstellen
 
Mmh. Ich denke am Besten du machst dafür ein Frame (TFrame). Dort kannst du alle Komponenten zu Designzeit reinpacken und wie mit einem Formular arbeiten. Dieses Frame kann dann in einen Tabsheet eingebettet werden.

Wie man dynamisch TTabsheets erstellt findest du hier zu genüge.

buyden 2. Jan 2006 14:33

Re: Tabsheet samt Inhalt zur Laufzeit erstellen
 
Hört sich ja nicht schlecht an aber wie stell ich das an? Wie kann ich das Frame in das TabSheet einbetten?

buyden 2. Jan 2006 16:09

Re: Tabsheet samt Inhalt zur Laufzeit erstellen
 
Ich stelle mir also nen Button vor, von wegen "Auftrag in neuem Tab öffnen" und ich bekomme auf einem neuen Tab das komplette Formular des neuen Auftrags - in etwa so wie bei Firefox.

buyden 2. Jan 2006 17:30

Re: Tabsheet samt Inhalt zur Laufzeit erstellen
 
Ich hab jetzt wenigstens schonmal rausbekommen, wie ich die Tabsheets zur laufzeit erzeue. Ich hab dafür folgenden code:
Delphi-Quellcode:
procedure Tfrmmain.Button1Click(Sender: TObject);
var newsheet:ttabsheet;

begin
   newsheet:=ttabsheet.Create(pcauftrag);
   newsheet.Caption:='neu'+ inttostr(pcauftrag.PageCount+1);
   newsheet.PageControl:= pcauftrag;
end;
Prinzipiell könnte man jetzt sicher sämtliche darauf befindlichen Objekte genauso erschaffen aber dabei handelt es sich um ca. 20 DBEDITs, Labels, ... mit sämtlichen Positionen und Eigenschaften, was also nen recht großen Aufwand bedeuten würde.
Ich bräuchte also eine Möglichkeit, meine Tabsheets aus einer Vorlage zu erstellen.

Nightshade 2. Jan 2006 17:40

Re: Tabsheet samt Inhalt zur Laufzeit erstellen
 
Du erstellst einfach ein Frame
(Neu -> Frame)
Setzt deine Controls darauf.

Und erstellst es einfach mit dem Tab :
Delphi-Quellcode:
procedure Tfrmmain.Button1Click(Sender: TObject);
var
  newsheet:ttabsheet;
  NewFrame:TFrame1;
begin
   newsheet:=ttabsheet.Create(pcauftrag);
   newsheet.Caption:='neu'+ inttostr(pcauftrag.PageCount+1);
   newsheet.PageControl:= pcauftrag;
   NewFrame := TFrame1.Create(self);
   NewFrame.parent := Newsheet;
end;

buyden 2. Jan 2006 18:03

Re: Tabsheet samt Inhalt zur Laufzeit erstellen
 
OK, ein komplettes Tabsheet kann ich so erstellen, beim zweiten meckert er mich allerdings an, das Frame1 schonmal existiert.

buyden 2. Jan 2006 20:50

Re: Tabsheet samt Inhalt zur Laufzeit erstellen
 
Hab's hinbekommen, einfach umbenennen und schon funzt's

Delphi-Quellcode:
procedure Tfrmmain.Button1Click(Sender: TObject);
var newsheet:ttabsheet;
    newframe:tframe1;
begin
   newsheet:=ttabsheet.Create(pcauftrag);
   newsheet.Caption:='neu'+ inttostr(pcauftrag.PageCount+1);
   newsheet.PageControl:= pcauftrag;
   NewFrame := TFrame1.Create(self);
   newframe.Name := 'tframe' + inttostr(pcauftrag.PageCount+1);
   NewFrame.parent := Newsheet;
end;

Schönen Dank an alle.

buyden 3. Jan 2006 00:04

Re: Tabsheet samt Inhalt zur Laufzeit erstellen
 
Hi nochmal,

Ich hab jetzt auf den Frame noch nen Button gesetzt, mit dem sich das aktuelle Tabsheet mit allem darauf befindlichem schließen soll.



Dazu dieser Code - den hab ich von hier:

Delphi-Quellcode:
procedure Tframeauftrag.Button1Click(Sender: TObject);
begin
  (FindComponent('frameauftrag' + IntToStr(frmmain.pcauftrag.ActivePageIndex)) as TFrameauftrag).Free;
  (FindComponent('tabauftrag' + IntToStr(frmmain.pcauftrag.ActivePageIndex)) as TTabSheet).Free;
end;
Allerdings bekomme ich nen Fehler "undefinierter Bezeichner TTabSheet" in der zweiten Zeile. Wenn ich diese Zeile herauslasse passiert allerdings auch gar nix.

:stupid: Hasst mich nicht für meine Dummheit!! :lol:

Matze 3. Jan 2006 00:10

Re: Tabsheet samt Inhalt zur Laufzeit erstellen
 
Zitat:

Zitat von buyden
Dazu dieser Code - den hab ich von hier

Da muss ein Bug in meiner Webseite sein, der korrekte Link ist dieser.
Nachtrag: Hm, ich komme nicht auf den von dir genannten Link, seltsam.

Wo ich schonmal schreibe: Man kann und soll Beiträge editieren.


Hast du evtl vergessen, die ComCtrls.pas einzubinden?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:03 Uhr.
Seite 1 von 2  1 2      

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