![]() |
Delphi-Version: 10.2 Tokyo
Form-Event global für alle Formulare überschreiben?
Ich bin mir fast sicher, dass das nicht möglich ist.
Trotzdem interessiert es mich, ob es vielleicht doch möglich ist. Ist es in Delphi möglich in einer einzigen Unit ein Event reinzuschreiben, welches ein normales Formular-Event anderer Formulare überschreibt? |
AW: Form-Event global für alle Formulare überschreiben?
Moin...:P
Was hast du denn konkret vor? Ich wette, daß es andere Lösungen gibt. |
AW: Form-Event global für alle Formulare überschreiben?
In einem anderen thread hat mich jemand davon überzeugt, Formulare dynamisch zu erzeugen.
Das setze ich aktuell um. Ich möchte aber ungerne überall wo ich Show brauche das hier schreiben
Delphi-Quellcode:
In eine Prozedur packen ist auch schlecht denke ich.
if not Assigned(formmxyz) then
formmxyz := TFormXYZ.Create; formmxyz.Show; |
AW: Form-Event global für alle Formulare überschreiben?
Dein allererster Schritt sollte sein nicht mehr
Delphi-Quellcode:
sondern deine eigene
TForm
Delphi-Quellcode:
zu benutzen und von dieser abzuleiten. In der Klasse kannst du dann das ganze grundlegende Verhalten einbauen das jedem Formular gleich sein soll.
TGünniForm
|
AW: Form-Event global für alle Formulare überschreiben?
Das klingt kompliziert. Sowas habe ich noch nie gemacht und höre davon auch zum ersten mal.
Hättest du ein Minimalbeispiel für mich? |
AW: Form-Event global für alle Formulare überschreiben?
entweder Ableiten
> ![]() Wobei TFormXYZ doch bereits eine Ableitung ist. Wenn es für alle TFormXYZ gelten soll, dann genau da drin das Event im Formdesigner deklarieren. Für Alle, die du erstellst:
Delphi-Quellcode:
formmxyz := TFormXYZ.Create;
formmxyz.OnEinEvent := DeineMethode; ODER wenn wirklich für "Alle", also nicht nur für eine einzige FormKlasse: dann NEIN ABER Delphi führt für alle Nachfahren von TForm/TCustomForm/TDataModule eine globale Liste, welche man durchlaufen könnte. > Screen ( ![]() |
AW: Form-Event global für alle Formulare überschreiben?
Das versteh ich nicht so ganz.
Das hier steht in meiner DPR:
Delphi-Quellcode:
Die würde ich gerne da rausnehmen und selber erzeugen. Kein Problem. Aber das ergibt dann viel von dem o.g. doppelten Code.
Application.CreateForm(TFormListe, FormListe);
Application.CreateForm(TAlphabet, FormAlphabet); |
AW: Form-Event global für alle Formulare überschreiben?
Zitat:
Delphi-Quellcode:
function CreateAndShowForm(const AFormClass: TFormClass; AFormInstance: TCustomForm): Boolean;
begin if not Assigned(AFormInstance) then AFormInstance := AFormClass.Create(Application); AFormInstance.Show; Result := AFormInstance.Visible; end;
Delphi-Quellcode:
CreateAndShowForm(TFormListe, FormListe);
CreateAndShowForm(TAlphabet, FormAlphabet); |
AW: Form-Event global für alle Formulare überschreiben?
Die Zuweisung und Erstellung funktioniert und ich kann das in einem ButtonClick aufrufen.
Komischerweise kann ich an einer anderen Stelle außerhalb des Formulars was da erstellt wird aber nicht auf die erstellte Klasseninstanz zugreifen. Das hier hingegen funktioniert
Delphi-Quellcode:
if not Assigned(FormListe) then
FormListe:= TFormListe.Create(Application); |
AW: Form-Event global für alle Formulare überschreiben?
Moin...:P
Zitat:
Vererbung: ![]() ![]() Dann hast du in allen Forms die von der Basis ableiten das fertige OnShow Event. inherited ist in diesem Zusammenhang wichtig! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 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