AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Form-Event global für alle Formulare überschreiben?
Thema durchsuchen
Ansicht
Themen-Optionen

Form-Event global für alle Formulare überschreiben?

Ein Thema von günni0 · begonnen am 20. Apr 2018 · letzter Beitrag vom 20. Apr 2018
Antwort Antwort
Seite 2 von 3     12 3      
günni0
(Gast)

n/a Beiträge
 
#11

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

  Alt 20. Apr 2018, 10:42
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.

Geändert von günni0 (20. Apr 2018 um 10:45 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#12

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

  Alt 20. Apr 2018, 10:48
Hallöle...
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.
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#13

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

  Alt 20. Apr 2018, 10:50
Das mit dem Drucken war ein komisches Beispiel, weil ich einfach eine Prozedur dafür aufrufen würde ABER ich verstehe was du meinst

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.

Geändert von günni0 (20. Apr 2018 um 10:54 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#14

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

  Alt 20. Apr 2018, 11:09
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.
Ohne Quelltext im Kontext deiner Anwendung -> keine Lösung von uns erwarten!
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#15

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

  Alt 20. Apr 2018, 11:18
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?

Geändert von günni0 (20. Apr 2018 um 11:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#16

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

  Alt 20. Apr 2018, 11:23
Zitat:
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.
Das liegt an deinem Design...was, wer, wo. Ohne QT oder eine Skizze aller Forms (wer mit wem?) kann man dir nicht wirklich helfen.
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#17

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

  Alt 20. Apr 2018, 11:28
Erstelle ich die Instanz aber selber also
Delphi-Quellcode:
FormListe := TFormListe.Create(Application);
FormListe.Show;
gibt es diese Zugriffsverletzung nicht.

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;

Geändert von günni0 (20. Apr 2018 um 11:37 Uhr)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#18

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

  Alt 20. Apr 2018, 11:37
quatsch
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.338 Beiträge
 
Delphi 11 Alexandria
 
#19

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

  Alt 20. Apr 2018, 11:38
Was passiert, wenn du den oberen Source wie folgt änderst?:
Delphi-Quellcode:
  if not assigned(FormListe) then
    FormListe := TFormListe.Create(Application);
  FormListe.Show;
Falls es dann auch knallt, ist wohl die Instanz-Variable nicht nil
Peter
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
662 Beiträge
 
#20

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

  Alt 20. Apr 2018, 11:42
Versuche mal AFormInstance als var parameter zu deklarieren.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:23 Uhr.
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