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-