Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Form-Event global für alle Formulare überschreiben? (https://www.delphipraxis.net/196066-form-event-global-fuer-alle-formulare-ueberschreiben.html)

günni0 20. Apr 2018 08:27

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?

haentschman 20. Apr 2018 08:29

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.

günni0 20. Apr 2018 08:33

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:
 if not Assigned(formmxyz) then
  formmxyz := TFormXYZ.Create;

 formmxyz.Show;
In eine Prozedur packen ist auch schlecht denke ich.

Der schöne Günther 20. Apr 2018 08:52

AW: Form-Event global für alle Formulare überschreiben?
 
Dein allererster Schritt sollte sein nicht mehr
Delphi-Quellcode:
TForm
sondern deine eigene
Delphi-Quellcode:
TGünniForm
zu benutzen und von dieser abzuleiten. In der Klasse kannst du dann das ganze grundlegende Verhalten einbauen das jedem Formular gleich sein soll.

günni0 20. Apr 2018 08:54

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?

himitsu 20. Apr 2018 09:14

AW: Form-Event global für alle Formulare überschreiben?
 
entweder Ableiten
> Bei Google suchenDelphi Form 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 (Delphi-Referenz durchsuchenVCL.Forms.TScreen.Forms)

günni0 20. Apr 2018 09:26

AW: Form-Event global für alle Formulare überschreiben?
 
Das versteh ich nicht so ganz.

Das hier steht in meiner DPR:
Delphi-Quellcode:
Application.CreateForm(TFormListe, FormListe);
Application.CreateForm(TAlphabet, FormAlphabet);
Die würde ich gerne da rausnehmen und selber erzeugen. Kein Problem. Aber das ergibt dann viel von dem o.g. doppelten Code.

TiGü 20. Apr 2018 10:18

AW: Form-Event global für alle Formulare überschreiben?
 
Zitat:

Zitat von günni0 (Beitrag 1399952)
Das versteh ich nicht so ganz.

Das hier steht in meiner DPR:
Delphi-Quellcode:
Application.CreateForm(TFormListe, FormListe);
Application.CreateForm(TAlphabet, FormAlphabet);
Die würde ich gerne da rausnehmen und selber erzeugen. Kein Problem. Aber das ergibt dann viel von dem o.g. doppelten Code.

Wie wärs mit:
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);

günni0 20. Apr 2018 10:28

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);

haentschman 20. Apr 2018 10:39

AW: Form-Event global für alle Formulare überschreiben?
 
Moin...:P
Zitat:

Dein allererster Schritt sollte sein nicht mehr TForm sondern deine eigene TGünniForm zu benutzen und von dieser abzuleiten.
Wenn Ableitungen für dich ein indisches Gewürz ist, dann fehlen Grundlagen.
Vererbung:
https://www.delphi-treff.de/object-pascal/vererbung/
https://de.wikibooks.org/wiki/Progra...cal:_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 22:14 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz