![]() |
AW: Form-Event global für alle Formulare überschreiben?
Ich habe mich von Vererbung immer fern gehalten, weil alle Beispiele komischerweise immer auf scheinbar sinnlosen Daten die Obst, Autos, Reifen oder wie hier in dem Fall Menschen bezogen sind.
Ich bekomme das dann unmöglich auf die Reihe, das auf meinen Fall mit TForms umzudenken. Ich glaube ich hatte aber eh einen Denkfehler. Man kann ja ableiten und tun und machen was man will. Aber wenn ich FormX.Show; aufrufen möchte und im selben Aufruf eine Instanz dieser Form erzeugen möchte, dann geht das logischerweise nicht. Da bringt auch eine Ableitung nix. TiGüs Antwort war da schon eher das was ich gesucht habe. Aber aus einem mir unverständlichen Grund funktioniert dann der Zugriff auf die Klasseninstanz außerhalb der Klasse nicht. |
AW: Form-Event global für alle Formulare überschreiben?
Hallöle...8-)
Simples Beispiel: Du hast 3 Forms. Alle wollen drucken. Da implementiert du 3x den Druck. :? Mit der Vererbung deiner 3 Forms von einer Basisform implementiert du den Druck nur 1x...nämlich in der Basisform! Vorteil: Änderungen am Druck stehen in allen der 3 Forms zur Verfügung. :thumb: |
AW: Form-Event global für alle Formulare überschreiben?
Das mit dem Drucken war ein komisches Beispiel, weil ich einfach eine Prozedur dafür aufrufen würde ABER ich verstehe was du meinst :P
Es gibt aktuell tatsächlich nur ein Beispiel wo ich Vererbung nutzen könnte. Im FormCreate jeder form fast aller meiner Forms setze ich KeyPreview. |
AW: Form-Event global für alle Formulare überschreiben?
Zitat:
|
AW: Form-Event global für alle Formulare überschreiben?
Ich verstehe euer Problem nicht.
Es gibt keinen Kontext. Ich habe einen Button, rufe deine Funktion auf, die ich zur Prozedur gemacht habe - klappt alles wie es soll! Wenn dann aber eine andere Unit, weder die mit dem Button noch die, die erzeugt wird, auf die eigentlich erzeugte Klasseninstanz zugreifen will, kracht es. Nicht mehr, nicht weniger. Wenn das aber schon so anfängt, dann bin ich auch nicht mehr an einer Lösung interessiert. Ich habe alles beigetragen was ich beitragen kann. Warum sollte ich den Aufruf deiner Funktion in einem simplen Button hier reinkopieren? |
AW: Form-Event global für alle Formulare überschreiben?
Zitat:
|
AW: Form-Event global für alle Formulare überschreiben?
Erstelle ich die Instanz aber selber also
Delphi-Quellcode:
gibt es diese Zugriffsverletzung nicht.
FormListe := TFormListe.Create(Application);
FormListe.Show; Das hier gibt aber eine in der anderen Unit
Delphi-Quellcode:
procedure CreateAndShowForm(const AFormClass: TFormClass; AFormInstance: TCustomForm);
begin if not Assigned(AFormInstance) then AFormInstance := AFormClass.Create(Application); AFormInstance.Show; end; CreateAndShowForm(TFormListe, FormListe); Nur als Beispiel was auch schon zur AV führt. Nur ein Button, 2 Forms, absolut nichts weiter
Delphi-Quellcode:
procedure CreateForm(const AFormClass: TFormClass; AFormInstance: TCustomForm);
begin if not Assigned(AFormInstance) then AFormInstance := AFormClass.Create(Application); end; procedure TForm1.Button1Click(Sender: TObject); begin CreateForm(TFormListe, FormListe); FormListe.Show; // hier passiert gar nichts und AV end; |
AW: Form-Event global für alle Formulare überschreiben?
quatsch
|
AW: Form-Event global für alle Formulare überschreiben?
Was passiert, wenn du den oberen Source wie folgt änderst?:
Delphi-Quellcode:
Falls es dann auch knallt, ist wohl die Instanz-Variable nicht nil
if not assigned(FormListe) then
FormListe := TFormListe.Create(Application); FormListe.Show; |
AW: Form-Event global für alle Formulare überschreiben?
Versuche mal AFormInstance als var parameter zu deklarieren.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 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