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 PagControl & TabSheet - Refresh erzwingen? (https://www.delphipraxis.net/20516-pagcontrol-tabsheet-refresh-erzwingen.html)

cBoB 19. Apr 2004 13:41


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-

Sharky 19. Apr 2004 15:11

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.

cBoB 19. Apr 2004 15:29

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 18:00 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