![]() |
Seltsames Verhalten; ShowModal, Button.Visible
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich habe ein seltsames Verhalten bei Forumlaren, die mit ShowModal angezeigt werden und der Eigenschaft "Visible" von z.B. Buttons festgestellt. Ich lasse aus dem Hauptformular ein Formular "Rechnung" mit ShowModal anzeigen und schliesse dieses wieder mit ModalResult:=1. Dann lasse ich aus dem Hauptformular ein anderes Formular "Beleg" auch mit ShowModal anzeigen. Nun lasse ich aus diesem das Formular "Rechnung" wieder mit ShowModal anzeigen, allerdings sollen z.B. drei Buttons nicht sichtbar sein, also vor 'ShowModal' 'Button.Visible:=False;' Die drei Buttons werden aber angezeigt ... Und die Eigenschaft 'Visible' der Buttons ist aber 'False' ... Lasse ich nach Programmstart sofort das Formular "Beleg" anzeigen und dann das Formular "Rechnung", sind die Buttons nicht sichtbar ... Doch sobald ich das Formular "Rechnung" aus dem Hauptformular habe anzeigen lassen, geht das Unsichtbarmachen über das Formular "Beleg" wieder nicht mehr. :? Habe mal ein kleines Beispiel-Prog angehangen. Hat jemand eine Erklärung für dieses Verhalten? Benutze: CodeGear Delphi für Microsoft WindowsVersion 11.0.2627.5503 |
AW: Seltsames Verhalten; ShowModal, Button.Visible
Ich kann das beschrieben Verhalten nicht nachvollziehen, oder ich verstehe das Problem nicht.
|
AW: Seltsames Verhalten; ShowModal, Button.Visible
Zitat:
Es gibt eine Form2, die ich direkt über die Hauptform (Form1) und über eine zweite Form3 anzeigen lasse. Jeweils mit "Form2.ShowModal;" Die Form3 wird über die Hauptform auch mit "Form3.ShowModal;" angezeigt. Wenn die Form2 über Form3 angezeigt werden soll, sollen die Buttons 1-3 der Form2 "unsichtbar" sein, also:
Code:
Die Buttons sind aber nur dann "unsichtbar", wenn vorher Form2 nicht über die Hauptform angezeigt wurde.
procedure TForm3.Button1Click(Sender: TObject);
begin Form2.Button1.Visible:=False; Form2.Button2.Visible:=False; Form2.Button3.Visible:=False; Form2.ShowModal; Form2.Button1.Visible:=True; Form2.Button2.Visible:=True; Form2.Button3.Visible:=True; end; Lasse ich über die Hauptform die Form2 anzeigen:
Code:
und schließe die Form2:
procedure TForm1.Button1Click(Sender: TObject);
begin Form2.ShowModal; end;
Code:
lasse dann Form3 anzeigen:
procedure TForm2.Button7Click(Sender: TObject);
begin ModalResult:=1; Close; end;
Code:
und von hier wieder:
procedure TForm1.Button2Click(Sender: TObject);
begin Form3.ShowModal; end;
Code:
sind die Buttons bei mir sichtbar und auch aktiv, obwohl z.b. die Abfrage 'Button1.Visible' als 'False' angegeben wird.
procedure TForm3.Button1Click(Sender: TObject);
begin Form2.Button1.Visible:=False; Form2.Button2.Visible:=False; Form2.Button3.Visible:=False; Form2.ShowModal; Form2.Button1.Visible:=True; Form2.Button2.Visible:=True; Form2.Button3.Visible:=True; end; Siehe Quellcode Unit2:
Code:
Problem jetzt besser erklärt?
procedure TForm2.Button6Click(Sender: TObject);
begin if (Button1.Visible) then Label1.Caption:='Visible = True' else Label1.Caption:='Visible = False'; if (Button2.Visible) then Label2.Caption:='Visible = True' else Label2.Caption:='Visible = False'; if (Button3.Visible) then Label3.Caption:='Visible = True' else Label3.Caption:='Visible = False'; end; |
AW: Seltsames Verhalten; ShowModal, Button.Visible
Ich hatte Dich schon so verstanden, aber egal in welcher Reihenfolge ich vorgehe, die Buttons sind immer ausgeblendet wenn man über Form3 reinkommt, also so wie man es laut Quelltext erwarten würde.
Die Stelle
Delphi-Quellcode:
sieht verdächtig aus, versuch mal Projekt neu erzeugen, nicht dass da eine eine alte DCU mit dem inzwischen auskommentierten Form2.Show; beim Linken angezogen wird..
//Form2.Show;
Form2.ShowModal; |
AW: Seltsames Verhalten; ShowModal, Button.Visible
Zitat:
Delphi-Quellcode:
Form2.Show;
War nur ein Test meinerseits, doch auch damit funktioniert es nicht, auch wenn ich den Kommentar entferne ... das Projekt habe ich mittlerweile etliche Male neu erzeugen lassen ... immer das gleiche Ergebnis. :( Ist ggf. CodeGear Delphi für Microsoft WindowsVersion 11.0.2627.5503 das Problem? |
AW: Seltsames Verhalten; ShowModal, Button.Visible
Modal ist schon richtig, sonst läuft er direkt nach dem Show ja in den Block wo Du Visible wieder auf True setzt.
Wenn Du in den Labels bei drücken von "Zeige Visible Status Button 1-3" ein False bekommst obwohl die Buttons sichtbar sind hast Du ein größeres Problem... keine Ahnung ob Treiber, Refreshproblem, alte ATI - Grafikkarte.... |
AW: Seltsames Verhalten; ShowModal, Button.Visible
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Im Anhang die .exe zum Testen. Danke |
AW: Seltsames Verhalten; ShowModal, Button.Visible
Liste der Anhänge anzeigen (Anzahl: 1)
mit Deiner Exe kann ich es nachvollziehen, wenn ich es kompiliere nicht.
|
AW: Seltsames Verhalten; ShowModal, Button.Visible
Hallo,
hast du Form2 vielleicht sowohl lokal als auch in deiner Unit2.pas definiert. Was spricht dagegen, die Forms immer selber zu erzeugen, statt wie du wohl hier in der dpr ? Ich arbeite immer mit lokalen Variablen und lösche die globale Form-Variable raus. Heiko |
AW: Seltsames Verhalten; ShowModal, Button.Visible
Hallo,
ich hab Dein Projekt aus #1 auch mal runter geladen. Hab es mit D2007 (CodeGear™ RAD Studio 2007 Version 11.0.2902.10471) kompiliert und es macht das, was es soll. Ein Vorschlag: Gib dem Rechnungsform eine property Modus. In FormShow von dem Form passt du dann aufgrund von Modus immer den Visible-Status der Buttons an. Jedes andere Form, dass das Rechnungsform Aufruft, muss dann vorher nur den Modus anpassen. Aber das nur anbei. Ansonsten ist das Problem tatsächlich merkwürdig :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:44 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