![]() |
PageControl: Änderung Tabsheet-Inhalt ohne Sprung dorthin?
Salü,
Anwendung hat PageControl mit 8 TabSheets. Wenn nun in TabSheet1 ein Button geklickt wird, löst das Ereignis eine Contentänderung im TabSheet5 aus. Ein Frame wird TabSheet5 hinzuugefügt und angezeigt. Nun wird dann aufgrund dieser Änderung auch TabSheet5 angezeigt, und nicht TabSheet1. Wenn man am Ende des Eventhandler eingibt
Delphi-Quellcode:
kehrt er zwar zu TabSheet1 zurück, aber ein unschönes Flimmern ist noch zu sehen (da der Sprung dorthin ja stattfand, nur sofort Rückkehr).
PageControl1.ActivePageIndex := 0;
Wie kann man einstellen, dass die Änderung des Inhalts von TabSheet5 vollkommen im Hintergrun verläuft, und wir bei TabSheet1 stehenbleiben? TabSheet5 nur dann sehen, wenn wir draufklicken? |
Re: PageControl: Änderung Tabsheet-Inhalt ohne Sprung dorthi
Wie greifst du auf die Elemente des anderen Tabsheets zu?
|
Re: PageControl: Änderung Tabsheet-Inhalt ohne Sprung dorthi
Jedes TabSheet enthält einen Frame. Alle Elemente sind in dem jeweiligen Frame zusammengefasst.
Die Frames sind in getrennten Dateien gespeichert. Anfangs werden sie den jew. TabSheets zugewiesen
Delphi-Quellcode:
später können sich jedoch Komponenten der Frames dynamisch ändern (direkt durch Programmcode).
Application.CreateForm(TSigmaPFrame, SigmaPFrame);
SigmaPFrame.Parent := TabSheet4; CreatedFrames[3] := true; Dann will ich nicht, dass er, wenn ich auf TabSheet1 bin und Komponenten im TabSheet5 sich ändern, automatisch im PageControl das TabSheet5 auswählt. Er soll die Änderung im Hintergrund ausführen und mich auf TabSheet1 lassen. |
Re: PageControl: Änderung Tabsheet-Inhalt ohne Sprung dorthi
Nein ich meine im Eventhandler.
|
Re: PageControl: Änderung Tabsheet-Inhalt ohne Sprung dorthi
Delphi-Quellcode:
CalculationFrame "klebt" auf TabSheet1, Frame5 auf TabSheet5.
Procedure TCalculationFrame.CalcButtonAltClick(Sender: TObject);
begin <bla bla> HauptF.ShowFrame5(self); HauptF.PageControl1.ActivePageIndex := 0 end; Der CalcButton befindet sich auf CalculationFrame. Die Änderung durch ShowFrame5 betrifft dann Frame5.
Delphi-Quellcode:
Procedure THauptF.ShowFrame5(Sender: TObject);
Begin Frame5.FormCreate(Sender); StatusHistory; Frame5.Show; End; |
Re: PageControl: Änderung Tabsheet-Inhalt ohne Sprung dorthi
Ich kann nicht wirklich helfen; aber vielleicht habe ich eine passende Idee, sodass ein Fachmann die Suche an der richtigen Stelle startet:
Bei Datenbank-Controls gibt es DisableControls/EnableControls, damit genau so ein Flackern verhindert wird. Unter NET gibt es für alle WinControls die Methoden SuspendLayout/ResumeLayout. Ich dachte, dass mit Invalidate dies ebenfalls erreicht werden könnte. Aber das ist wohl zu einfach gedacht. Vielleicht bringen Euch diese Gedanken weiter. Jürgen |
Re: PageControl: Änderung Tabsheet-Inhalt ohne Sprung dorthi
Hallo triangulum,
bei zur Laufzeit erstellten Komponenten ist der Aufruf der Methode Show in der Regel überflüssig. Vielleicht hilft es auch hier, auf diesen Aufruf zu verzichten. Gruß Hawkeye |
Re: PageControl: Änderung Tabsheet-Inhalt ohne Sprung dorthi
Zitat:
Zitat:
|
Re: PageControl: Änderung Tabsheet-Inhalt ohne Sprung dorthi
jou dank an alle, es war tatsächlich Show ... :wink:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:54 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