![]() |
Wie eine eigene Form als Parameter?
Wie kann man eine eigene Form(Also mit Komponenten und Co.) als Parameter an eine Funktion/Procedure übergeben, die diese Form als var-Parameter erwartet, aber auch andere Form's bearbeiten kann(Kann also nicht TForm1 als erwarteten Parameter angeben)!
Grund ist hier zu sehen:
Delphi-Quellcode:
procedure TswOptions.LoadFormStyle(var Form: TForm; var Image: TImage;
ObjektFile: TMemIniFile; SPath: String); begin // Style der Programmleiste(Oben) case ObjektFile.ReadInteger(SPath,'BorderStyle',3) of 0: Form.BorderStyle := bsDialog; 1: Form.BorderStyle := bsSingle; 2: Form.BorderStyle := bsToolWindow; else Form1.BorderStyle := bsNone; end; // Läd Daten über die Systembuttons if ObjektFile.ReadBool(SPath,'BiSystemMenu',True) = True then Form.BorderIcons := Form.BorderIcons + [biSystemMenu]; if ObjektFile.ReadBool(SPath,'BiMinimize',True) = True then Form.BorderIcons := Form.BorderIcons + [BiMinimize]; // Hintergrund try Image.Picture.LoadFromFile(Path + '\Run\APRM\Skin\'+ObjektFile.ReadString('swMain','Background','Default_Background.jpg')); except v_Error.ShowError(PFnExist); end; end; |
Re: Wie eine eigene Form als Parameter?
Hi,
die Antwort hast du dir ja fast schon selbst gegeben:
Delphi-Quellcode:
cuprocedure TuEtwasMitderForm(var form:TForm); begin form.Caption:='Hier wurde etwas getan'; end; // ... procedure TForm1.Button1Click(Sender: TObject); begin TuEtwasMitderForm(self); end; |
Re: Wie eine eigene Form als Parameter?
Zitat:
|
Re: Wie eine eigene Form als Parameter?
Du könntest die Varaiable casten ...
Delphi-Quellcode:
procedure TuEtwasMitderForm(var form:TForm);
begin (form as TForm1).Caption:='Hier wurde etwas getan'; end; |
Re: Wie eine eigene Form als Parameter?
Aber nicht so, sondern gerade andersrum:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin LoadFormStyle(Self as TForm, ..., ..., ...); end; |
Re: Wie eine eigene Form als Parameter?
Zitat:
Delphi-Quellcode:
Leider spuckt er mir immer noch die Fehlermeldung aus:
LoadFormStyle(Form2 as TForm,Form2.Image1,Filevar,'smMain');
Zitat:
|
Re: Wie eine eigene Form als Parameter?
...vielleicht nicht als var-Parameter übergeben?
Du willst ja nicht das Objekt selbst ändern können (hinter der Objektvariablen verbirgt sich nur der Zeiger auf das Objekt), sondern lediglich Eigenschaften des Objekts... Beste Grüße Susanne |
Re: Wie eine eigene Form als Parameter?
Zitat:
Habe das nun nach langem hin und her mit Overloads gelößt, was aber keine Ideale Lößung ist! |
Re: Wie eine eigene Form als Parameter?
Moin!
Zitat:
MfG Muetze1 |
Re: Wie eine eigene Form als Parameter?
Ich würde das alles mit dem Repository (Objektablage) machen. D.h. : alle immer notwendigen Events implementieren. Diese Unit in der Objektablage speichern. Von dieser dann andere Forms ableiten (Datei -> neu -> weitere -> VERERBEN auswählen !) und notfalls diese Form ergänzen, z.B. noch irgendeinen Button draufpappen.
In einem Programm habe ich damit ca. 250 Forms im Griff. In der Ursprungsform werden nur grundlegende Tastatursachen abgehandelt. Z.B. Form schließen auch mit ESC (nicht gezwungenermaßen mit ALT-F4 oder Kreuz) usw. Der erste Nachkomme erhält dann diese Sachen auch für seine Buttons (wo dann auch die Mouse-Events abgehandelt werden). Der Nächste oder was weiß ich, der 5. nächste erhält 2 Edits für von-bis Abfragen. Irgendwann kommt dann einer mit einem Stringgrid. Eventuell ist das aber auch einer, der keine von-bis Abfrage braucht. Dann verwende ich eben seinen Vorgänger. Wenn ich nun sage : sorry, die 250 Forms sollen nicht mit ESC sondern mit F9 geschlossen werden können, dann gehe ich in die Ursprungsform, ändere das in einer Zeile und alles ist fertig. Parameter für Forms habe ich deshalb noch nie gebraucht. Wer nicht weiß, was OOP ist, der hat eben Pech und müßte sich das wohl mal ansehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:22 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