![]() |
AW: Form-Event global für alle Formulare überschreiben?
Liste der Anhänge anzeigen (Anzahl: 1)
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 :P (DPR beachten, da wird Form2 absichtlich nicht erzeugt). Zitat:
|
AW: Form-Event global für alle Formulare überschreiben?
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. |
AW: Form-Event global für alle Formulare überschreiben?
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. |
AW: Form-Event global für alle Formulare überschreiben?
Zitat:
|
AW: Form-Event global für alle Formulare überschreiben?
Mit var Parameter und folgendem Aufruf funktioniert dein Beispiel:
Delphi-Quellcode:
CreateAndShowForm(TForm2, TCustomForm(Form2));
|
AW: Form-Event global für alle Formulare überschreiben?
Ich will auch mal:
Delphi-Quellcode:
Der (typsichere) Aufruf wäre dann in etwa so:
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;
Delphi-Quellcode:
TFormUtils.ShowForm<TForm2>(Form2);
|
AW: Form-Event global für alle Formulare überschreiben?
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:01 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