![]() |
Zugang zu modaler Form verhindern
Hi Kollegen,
wie kann ich verhindern, daß eine modale Form angezeigt wird, wenn eine bestimmte Bedingung nicht zutrifft. Habe es folgendermassen versucht:
Delphi-Quellcode:
Im FormCreate habe ich dann in etwa solchen Code:
dlgPzDruck := TfrmPzDruck.Create(self);
dlgPzDruck.ShowModal;
Delphi-Quellcode:
Selbiges hab ich auch schon im OnShow und Activate probiert. Was hab ich für einen Denkfehler? :gruebel:
if IchWillKeineForm then
begin ModalResult := mrCancel; Close; // release führt zum totalen Hänger end; R.B. |
Re: Zugang zu modaler Form verhindern
Hallo rbest,
warum nicht so:
Delphi-Quellcode:
if not IchWillKeineForm then
begin dlgPzDruck := TfrmPzDruck.Create(self); dlgPzDruck.ShowModal; end; |
Re: Zugang zu modaler Form verhindern
weiß ma den vor denm create noch nicht ob man das formular nun haben will oder nicht?
|
Re: Zugang zu modaler Form verhindern
Hallo.
Indem du showModal overridest:
Delphi-Quellcode:
sollte gehen :wink:
type
TModalForm = class(TForm) ... function ShowModal: Integer; override; end; ... function TModalForm.ShowModal: Integer; begin if IchWillKeineForm then ModalResult := mrCancel else result := inherited showModal; end; |
Re: Zugang zu modaler Form verhindern
@r_kerber
Klar, das wär das näxte gewesen. Aber die Macht der Gewohnheit - ich komm von FoxPro, dort gibt es eine Init-Methode, die bei Rückgabe von False den Aufbau der Maske verhindert. So brauche ich eine Prüfung, die ja jedesmal zu dieser Form gehört, nur an einer Stelle. |
Re: Zugang zu modaler Form verhindern
@maximov
exactly. Aber eins verstehe ich trotzdem nicht. Nach showmodal wird auch FormShow ausgeführt. Warum funzt das Close dort nicht? |
Re: Zugang zu modaler Form verhindern
showmodal wartet so lange bis das madalResult <> 0 ist, da hilft vermutlich auch kein close! Wenn du ModalForm.modalResult := mrAbort setzt (oder was anderes) dann sollte es schliessen :wink:
PS: Ich bevorzuge eigentlich selbstgemachte execute methoden, die das alles schön vereinfachen. Weiss jetzt aber nicht was hier erreicht werden soll? |
Re: Zugang zu modaler Form verhindern
@maximov
was gemacht wird? Zum Bleistift eine Mitarbeiter-Code-Eingabe, bei falschem Code Abbruch. Oder ein SQL-Select, wenn dieser kein Ergebnis liefert, soll die Form nicht auftauchen. |
Re: Zugang zu modaler Form verhindern
hi maximov, wie gesagt, mit deinem Vorschlag hab ich's hingekriegt. :cheers: Nur noch der Vollständigkeit halber:
Delphi-Quellcode:
bingt bei mir eine Compiler-Warnung, aber nach Änderung von ModalResult in Result meckert sie nicht mehr.
function TModalForm.ShowModal: Integer;
begin if IchWillKeineForm then ModalResult := mrCancel else result := inherited showModal; end; Besten Dank allen Mitdenkern und schönes Wochenende. BTW, ich finde den Film "Die Passion" entgegen der übertriebenen Medienmeinung sehenswert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:05 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 by Thomas Breitkreuz