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 3 von 3     123   
günni0
(Gast)

n/a Beiträge
 
#21

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

  Alt 20. Apr 2018, 11:43
Jascoul, das funktioniert genau wie es soll. Kaum erstelle ich die Instanz aber über eine Prozedur, um doppelten und dreifachen Code zu sparen, kracht es sobald ich auf die Instanz zugreife.

Für alle die mir nicht glauben, da unten ist ein Beispielprojekt (DPR beachten, da wird Form2 absichtlich nicht erzeugt).

Zitat:
Versuche mal AFormInstance als var parameter zu deklarieren.
Dann meckert leider der Compiler wegen inkompatibler Typen.
Angehängte Dateien
Dateityp: zip Lasst es krachen.zip (2,1 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#22

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

  Alt 20. Apr 2018, 11:53
So sollte das gehen.....

Delphi-Quellcode:
unit Unit1;

interface

uses
 Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
 Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
 TForm1 = class(TForm)
  Button1: TButton;

  procedure Button1Click(Sender: TObject);
 private
  {Private-Deklarationen}
   FmyForm2 : Tcustomform;
 public
  {Public-Deklarationen}
 end;

var
 Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

(*
  Forminstance muss var sein !!!!!
*)


procedure CreateAndShowForm(const AFormClass: TFormClass; var AFormInstance: TCustomForm);
begin
 if not Assigned(AFormInstance) then
  AFormInstance := AFormClass.Create(Application);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 CreateAndShowForm(TForm2, FmyForm2);
 FmyForm2.Show;
end;

end.
Fritz Westermann
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

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

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

  Alt 20. Apr 2018, 11:55
Lass mal das "const" bei den Parametern weg.

Ich kann deinen Source leider im Moment nicht prüfen, da ich hier kein Delphi zur Verfügung habe.
Peter
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#24

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

  Alt 20. Apr 2018, 11:58
Zitat:
FmyForm2 : Tcustomform;
Doppelte Variablen dann leider. Scheint wohl nicht anders zu gehen.
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

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

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

  Alt 20. Apr 2018, 11:59
Mit var Parameter und folgendem Aufruf funktioniert dein Beispiel:

CreateAndShowForm(TForm2, TCustomForm(Form2));
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#26

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

  Alt 20. Apr 2018, 16:10
Ich will auch mal:
Delphi-Quellcode:
unit uFormUtils;

interface

uses
  Vcl.Forms;

type
  TFormUtils = record
  public
    class procedure ShowForm<T: TCustomForm>(var Instance: T); static;
  end;

implementation

class procedure TFormUtils.ShowForm<T>(var Instance: T);
begin
  if Instance = nil then begin
    Instance := T.Create(Application);
  end;
  Instance.Show;
end;
Der (typsichere) Aufruf wäre dann in etwa so: TFormUtils.ShowForm<TForm2>(Form2);
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#27

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

  Alt 20. Apr 2018, 17:28
Ich danke allen die mir geholfen haben.

Ich bin auf einem guten weg mit der Umstrukturierung meiner Codebasis. Der erste Schritt ist nun erst einmal, Formulare dynamisch zur Laufzeit zu erzeugen.
Habe noch gut 20 Formulare vor mir, die angepasst werden müssen. Dauert also noch etwas.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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:48 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