![]() |
Änderung der Eigenschaft "Visible" hat keine Auswi
Hallo,
ein komisches Problem: Ich habe einen Button "Button1". Wenn man darauf klickt, soll die Eigenschaft "Visible" der Komponente "Label1" auf "false" geändert werden. Entsprechend der Code:
Delphi-Quellcode:
Funktioniert auch.
procedure TForm1.Button1Click(Sender: TObject);
begin Label1.Visible := false; end; Aber exakt dieser Code hat in einem anderen Projekt absolut keine Auswirkungen. Hier ist das "Label" auf ein "PageControl"-Element gesetzt, welches selbst auf einem Panel sitzt. Tests haben aber gezeigt, dass dies egal - ich kann (wüsste auch keinen Grund wieso nicht) jedes Element (immer) ansteuern. Ich habe selbst eine If-Abfrage geschaltet, die mir eine Meldung ausgeben soll. Hier wird korrekt angezeigt, dass das Label "Visible = false" als Wert hat. Aber es wird immer noch angezeigt?! |
Re: Änderung der Eigenschaft "Visible" hat keine A
Hi,
bei einem PageControl-Element muss Du auch die aktive Seite auswählen, z.B.:
Delphi-Quellcode:
Das sollte funzen
PageControl1.ActivePageIndex := 1;
:hi: |
Re: Änderung der Eigenschaft "Visible" hat keine A
Zitat:
|
Re: Änderung der Eigenschaft "Visible" hat keine A
Du mußt wohl dem PageControl mitteilen, daß es da was neuzeichnen soll. Schau dir mal die Methode Invalidate an.
Grüße mikhal |
Re: Änderung der Eigenschaft "Visible" hat keine A
Uuups, da habe ich was überlesen.
Habe aber deinen Fall mal nachgebaut, quasi PageControl mit einem Panel, darauf ein Label. Hat aber funktioniert. Das Label ist bei visible:=false weg :gruebel: |
Re: Änderung der Eigenschaft "Visible" hat keine A
Ja... ich sag ja auch:
In einer Test-App (also einfach neue "EXE", Panel drauf und PC sowie eine "Seite" und Label und ein Button), geht. Ich frage mich daher, wieso geht's in der anderen Anwendung nicht. |
Re: Änderung der Eigenschaft "Visible" hat keine A
Ich verstehe es nicht...
'Ne Frage: Wenn folgender Code zusätzlich ausgeführt wird in der Prozedur, kann dass das Ausführen von "visible := false" verhindern?
Delphi-Quellcode:
Hintergrund ist der:
procedure TMain.pd_MainRund;
begin Label2.Visible := false; lbl_pDialog2_S5_Hinweis.Visible := false; bt_pNavigation_Start.Enabled := false; while ProgressBar2.Position <100 do begin Progressbar2.Position := ProgressBar2.Position + 25; Sleep(1000); end; pd_fertig; end; User klickt auf Button "Start". Hier wird nur zur Prozedur "pd_MainRund" gesprungen. Hier soll er dann den Hinweis, dass er auf Start drücken soll, ausblenden... und den Vorgang starten. Da es noch kein Vorgang gibt, simuliere ich Mittels "while" das Füllen des Progress-Balkens... Wenn ich die While-Schleife herausnehme - geht's. |
Re: Änderung der Eigenschaft "Visible" hat keine A
dadurch das danach noch anweisungen kommen wird noch kein repaint ausgelöst. du müsstest dann in dem Fall hinter dein
Delphi-Quellcode:
ein
Label2.visible := false;
Delphi-Quellcode:
einfügen oder einfach ein
Application.ProcessMessages;
Delphi-Quellcode:
übrigens kannst du auch
Label2.Repaint;
Delphi-Quellcode:
nehmen
Label2.Hide;
|
Re: Änderung der Eigenschaft "Visible" hat keine A
Zitat:
BTW: "Application.ProcessMessages;" hat geholfen... |
Re: Änderung der Eigenschaft "Visible" hat keine A
Zitat:
Für gewöhnlich wird ein Control immer neugezeichnet, wenn es selbst, oder eines der Unter-Controls geändert wird - aber das passiert per Message an das entsprechende Control. So lange wie in deinem Programm aber noch etwas passiert, werden keine weiteren Messages verarbeitet, und kommen in eine Warteschlange. Der Aufruf von Application.ProcessMessages veranlasst dein Programm die anstehende Warteschlange abzuarbeiten, und dann erst weiterzumachen. In diesem Fall werden allerdings alle anstehenden Messages versorgt, also auch Mausclicks, Tastatureingaben etc.pp. Wenn du nur neuzeichnen willst, dann ist (auch schneller) TControl.Repaint bzw. .Refresh dein Kandidat. Dabei wird explizit ein erneutes Zeichnen veranlasst, ohne dass sich um die Message-Queue gekümmert wird. gruss, dizzy |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 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