Pagecontrol und ActivePage

Hallo Delphi Experten,

ich habe ein Pagecontrol mit mehreren Pages.
Wie kann ich eine bestimmte Page in den Vordergrund bringen?

PageControl1.ActivePageIndex:= 1;
und / oder
PageControl1.ActivePage:= PageControl1.Pages[1];
für z.B. die 2. Seite funktionieren nicht. Gibt es noch andere Möglichkeiten?
Ach ja, Delphi 5.

Danke
Manfred

Hallo Manfred,

deine Frage hat mich gewundert also hab ich’s in Delphi5 schnell noch mal ausprobiert.
Sowohl
PageControl1.ActivePageIndex := 1;
als auch
PageControl1.ActivePage := PageControl1.Pages[1];
funktioniert.

Gruß Mike

Hallo Mike,

komisch, dass es bei dir funktioniert.
Ich habe ein PageControl mit mehreren Tabsheets auf einem Formular und versuche im OnShow Ereignis ein bestimmtes Tabsheet in den Vordergrund zu bringen. Und das funktioniert mit beiden Methoden bei mir nicht.

Warum? fragt sich ein ratloser
Manfred

Hallo Manfred,

es sollte auch bei OnShow funktionieren. Ich habe aber gerade kein Delphi zur Hand. Ich werd das Morgen früh schnell versuchen und dir dann berichten. Du kannst dabei schon mal schaun, ob du bei einem Ereignis, das nach OnShow auftritt etwas machst, was die Seite wieder zurück stellt. Trace einfach mal mit F7 durch.

Gruß Mike

Hallo Manfred,

ich habs gerade ausprobiert. Es funktioniert auch bei OnShow der Form.
Dir wird nichts anderes übrig bleiben als dein Programm durch zu tracen.

Such doch mal im Quelltext die Stellen, an denen PageControl1 auftaucht und schau dir an, was an den entsprechenden Stellen passiert. Vielleicht kommst du so weiter.
Du kannst mir auch dein Programm zumailen, oder wenn nicht zu groß, denn Quelltext der Unit hier im Brett einstellen.

Gruß Mike

Hallo Mike,

vielen Dank für deine Mühe.
Schlag mich nicht, aber es funktioniert bei mir nicht.
Na ja, das Programm ist schon sehr groß geworden. Aber es besteht aus vielen (bisher 32) Modulen, die alle sehr überschaubar sind.
Vielleicht liegt es daran, dass das Formular vor jedem Aufruf (und das geschieht selten) neu erstellt wird, und damit auch die TabSheets, und das in variabler Anzahl. Erst ganz zum Schluß im OnShow Ereignis möchte ich gerne ein bestimmtes TabSheet in den Vordergrund bringen, und das funktioniert eben nicht. Natürlich wird das Formular und der Speicher nach Gebrauch wieder richtig freigegeben. Das habe ich überprüft.

Warum funktioniert es trotzdem nicht? fragt sich immer noch
Manfred

Hallo Manfred,

versuch mal folgendes probehalber.
Einen Timer auf die Form. Beim Ereigniss OnTimer auf Tabscheet2 wechseln. Wenn das funktioniert, dann hast du ein Zeitproblem. Abhilfe könnte es dann sein wenn du entweder den Timer auf der Form lässt oder du versuchst das Tabsheet bei OnActivate zu wechseln, da OnActivate nach OnShow aufgerufen wird.

Gruß Mike

Hallo Mike,

danke, werde ich mal probieren. Aber erst am Montag :smile:

Manfred

Es funktioniert so …
An alle Interessierten:

ein „Application.ProcessMessages“ wirkt Wunder.
Nach Einfügen desselben funktioniert es.

Gruß
Manfred