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 TabSet mach Probleme (https://www.delphipraxis.net/130954-tabset-mach-probleme.html)

Thomas83 16. Mär 2009 16:29


TabSet mach Probleme
 
Servus,

da meine "Tabs" alles Formulare sind, habe ich mit der TabSet eine Reiter erstellt.
Mit dieser Funktion lege ich eine Tab an
Delphi-Quellcode:
procedure AddTabSet(Caption: String; Obj: Tobject);
var
  i : integer;
begin
  i := TabSet.Tabs.Add(Caption);
  TabSet.Tabs.Objects[i] := Obj;
  TabSet.TabIndex := i;
end;

...
AddTabSet('Form1', meineForm);
Mit dieser lösche ich wieder das Formular aus dem TabSet
Delphi-Quellcode:
procedure DelTabSet(Obj: Tobject);
var
  i : integer;
begin
  for i:=TabSet.Tabs.Count-1 downto 0 do
    if TabSet.Tabs.Objects[i] = obj then begin
      try
        TabSet.Tabs.Delete(i);
      except

      end;
      exit;
    end;
end;

...
DelTabSet(meineForm);
Allerdings wenn ich nur eine Form habe kommt eine Exception mit Listenindex bla bla bla.
Wenn ich "TabSet.TabIndex := i;" oben weg lasse kommt kein Fehler.
Try except funktioniert auch solange ich es nicht mit delphi starte. Lass ich es über Delphi starten kommt auch hier immer ein Fehler, was natürlich voll bervig ist.

Habe ich nochwas vergessen?
Mfg

_BlackDragon_ 16. Mär 2009 19:12

Re: TabSet mach Probleme
 
Hi.

Zitat:

Wenn ich "TabSet.TabIndex := i;" oben weg lasse kommt kein Fehler.
Bist du sicher das der Fehler daher kommt?

Ich habe es so getestet und keinen Fehler feststellen können. :?

Dennoch zwei Tipps:

1. Verwende doch direkt AddObject(...). Da kannst du dir die zweite Zeile sparen.
2. Wenn du die Auswahl hast, verwende lieber TTabControl oder TPageControl, denn TTabSet ist nur aus Kompatibilitätsgründen noch vorhanden und absolut veraltet.

Gruß

BlackDragon

Thomas83 17. Mär 2009 08:22

Re: TabSet mach Probleme
 
Zitat:

Zitat von _BlackDragon_
Hi.

Bist du sicher das der Fehler daher kommt?

Jup bin mir sicher weil wenn ich die Zeile weglasse und keinen Index auswähle bekommen ich keinen Fehler. Denke mal wenn der Index gesetzt ist versucht er den Index neu zu zuweisen, da aber kein Tab mehr da ist kommt ein Fehler

Zitat:

Zitat von _BlackDragon_
1. Verwende doch direkt AddObject(...). Da kannst du dir die zweite Zeile sparen.

Das habe ich schon versucht, nur wird dann kein Text angezeigt, keine Ahnung wieso.

Zitat:

Zitat von _BlackDragon_
2. Wenn du die Auswahl hast, verwende lieber TTabControl oder TPageControl, denn TTabSet ist nur aus Kompatibilitätsgründen noch vorhanden und absolut veraltet.

Das kann ich leider nicht habe alles Formen die als Parent ein Panel haben.
Hmmm außer ich erstelle für jedes Form ein Tab, das müste eigentlich auch gehen.

Mfg

_BlackDragon_ 17. Mär 2009 08:50

Re: TabSet mach Probleme
 
Hi nochmal.

Zitat:

Zitat von Thomas83
Zitat:

Zitat von _BlackDragon_
Hi.

Bist du sicher das der Fehler daher kommt?

Jup bin mir sicher weil wenn ich die Zeile weglasse und keinen Index auswähle bekommen ich keinen Fehler. Denke mal wenn der Index gesetzt ist versucht er den Index neu zu zuweisen, da aber kein Tab mehr da ist kommt ein Fehler

Dann gehe ich jetzt mal davon aus, dass du die Zeile in der DelTabSet-Routine stehen hattest und diese Zeile meintest. Denn so wie der Quelltext (AddTabSet) oben steht, funzt es.

Zitat:

Zitat von Thomas83
Zitat:

Zitat von _BlackDragon_

1. Verwende doch direkt AddObject(...). Da kannst du dir die zweite Zeile sparen.

Das habe ich schon versucht, nur wird dann kein Text angezeigt, keine Ahnung wieso.

Da siehst du einen Grund mehr auf die oben genannten Komponenten umzusteigen. :wink:

Zitat:

Zitat von Thomas83
Zitat:

Zitat von _BlackDragon_
2. Wenn du die Auswahl hast, verwende lieber TTabControl oder TPageControl, denn TTabSet ist nur aus Kompatibilitätsgründen noch vorhanden und absolut veraltet.

Das kann ich leider nicht habe alles Formen die als Parent ein Panel haben.
Hmmm außer ich erstelle für jedes Form ein Tab, das müste eigentlich auch gehen.

Das funktioniert auf jeden Fall. Musst halt nur das Parent des Forms zuweisen, was z.B. im Konstruktor
geht -> TForm.CreateParented(ParentWindow: HWND)

Gruß

BlackDragon

Thomas83 17. Mär 2009 08:51

Re: TabSet mach Probleme
 
Dann werde ich es mit TTabControl oder TPageControl mal probieren.
Thx

Thomas83 17. Mär 2009 13:32

Re: TabSet mach Probleme
 
Wollte jetzt TPageControl verwenden,
aber ich hätte gerne die Buttons bzw die Tabs unten, ist auch klein Problem.

Nur ist mir das PageControl zu "dick".
Möchte es lieber das man nur die Buttons sieht,
aber das geht wiederum nicht wenn die Tabs unten dargestellt werden.

Gibt es da eventuell einen anderen Ansatz?

Mfg

SteffenSchm 20. Mär 2009 16:13

Re: TabSet mach Probleme
 
Als Ersatz für TabSet würde ich an Deiner Stelle TabControl anstelle von PageControl verwenden. Während PageControl die Seiten der einzelnen Tabs selber verwaltet, musst Du bei TabControl auf den Wechsel des Tabs selber reagieren und die entsprechende Komponente sichtbar machen.

Wo die Tabs erscheinen kann man übrigens über die Eigenschaft "TabPosition" festlegen.

Thomas83 25. Mär 2009 16:23

Re: TabSet mach Probleme
 
ja aber ich hätte die buttns gerne unten und das geht nur wenn diese dick sind.
Wenn diese flat sind kann ich die nur oben anzeigen lassen und das möchte ich nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:43 Uhr.

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