![]() |
PagControl & TabSheet - Refresh erzwingen?
Hallo Delphianer!
Nachdem ich darauf aufmerksam gemacht wurde, einer Anfrage auch einen aussagekräftigen Titel zu spendieren - hier nun der 2. Versuch ;-) Folgendes Problem: Während der Laufzeit sollen TabSheets in einem PageControl erzeugt werden - das klappt bereits. In den TabSheets sollen aber wiederum ComboBoxen erzeugt werden, wie unten hoffentlich noch zu erkennen (Aufruf von DevRep). Dies funktioniert eigentlich auch, bis auf den Schönheitsfehler, dass auf dem ersten TabSheet die ComboBox nicht sofort angezeigt wird, sondern erst nachdem ein anderes TabSheet angeklickt bzw aktiviert wurde und danach dann wieder zurück zum 1. TabSheet gewechselt wird. Damit könnt ich auch noch leben - aber es kann der Fall eintreten, dass nur ein TabSheet erzeugt werden soll, dann kann ich durch das Wechseln die ComboBox auf der ersten Seite nicht mehr zum Erscheinen zwingen. Was könnte ich übersehen haben oder wo liegt bei mir ein Fehler?! Auszug aus meinem Code:
Delphi-Quellcode:
procedure TForm1.cr_tabs; //TabSheets sollen erzeugt werden
const TabTitles: array[0..4] of ShortString = ('Gerät1','Gerät2','Gerät3','Gerät4','Gerät5' ); var i: integer; begin for i := 0 to (devcount-1) do //devcount ist globale Variable, Anzahl der TabSheets with TTabSheet.Create(Self) do begin PageControl := Form1.PageControl1; //PageControl1 existiert schon zur Entwurfszeit Name := 'ts' + InttoStr(i); ShowMessage(Name); Caption := TabTitles[i]; DevRep(PageControl1.Pages[i]); //erzeugt ComboBox auf aktuellem TabSheet, ComboBox wird //aber auf dem ersten TabSheet nicht sofort angezeigt, //erst nachdem anderes Tabsheet aktiviert wurde und danach //wieder zurückgewechselt wird, wird's angezeigt end; end; procedure TForm1.dest_tabs; //TabSheets werden einer nach dem anderen gekillt. var i: integer; begin for i := (devcount-1) downto 0 do with Form1.PageControl1 do begin Pages[i].Free; end; end; procedure TForm1.Button1Click(Sender: TObject); //jetzt sollen Tabsheets erzeugt werden! begin dest_tabs; //erstmal alle löschen, für geordnete Verhältnisse devcount:=5; //5 Stück sollen erzeugt werden cr_tabs;; //jetzt erzeuge sie! Form1.PageControl1.Refresh;; //Refresh - nutzt aber nix! end; procedure DevRep(Sender: TTabSheet); //ComboBox wird erzeugt var ListItem: TStrings; IndexDList: Integer; begin with TCombobox.Create(Sender) do begin Parent:=Sender; top:=12; left:=8; IndexDList := Items.Add('Gerät1'); end; end; Vielen Dank erstmal fürs durchlesen! -c- |
Re: PagControl & TabSheet - Refresh erzwingen?
Hai cBoB,
ich kann das nicht bestätigen. Bei mir wird die ComboBox auch angezeigt wenn ich nur ein TabSheet erzeugen lasse. |
Re: PagControl & TabSheet - Refresh erzwingen?
@Sharky:
Hm, dann versuch mal bitte mit einem 2.Button und den selben Befehlen danach eine andere Anzahl an Sheets zu erzeugen, sprich im "Button2Click" dann den devcount auf meinetwegen 7 setzen und dann das erste Sheet betrachten, nachdem erst Button1 und dann Button2 geklickt wurde? BTW: Welche Delphiversion nutzt Du? Ich bin hier leider vorerst auf Delphi4 angewiesen. Gruß -c- [Edit] Oops, sorry der Frage, hab schon gesehen welche Version Du benutzt![/Edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 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