AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wie eine eigene Form als Parameter?

Ein Thema von Speedmaster · begonnen am 4. Apr 2005 · letzter Beitrag vom 6. Apr 2005
Antwort Antwort
Benutzerbild von Speedmaster
Speedmaster

Registriert seit: 4. Mär 2005
Ort: Karlsruhe
535 Beiträge
 
Delphi 2005 Personal
 
#1

Wie eine eigene Form als Parameter?

  Alt 4. Apr 2005, 19:42
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;
Felix K.
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#2

Re: Wie eine eigene Form als Parameter?

  Alt 4. Apr 2005, 20:17
Hi,

die Antwort hast du dir ja fast schon selbst gegeben:
Delphi-Quellcode:

procedure TuEtwasMitderForm(var form:TForm);
begin
form.Caption:='Hier wurde etwas getan';
end;

// ...
procedure TForm1.Button1Click(Sender: TObject);
begin
TuEtwasMitderForm(self);
end;
cu
  Mit Zitat antworten Zitat
Benutzerbild von Speedmaster
Speedmaster

Registriert seit: 4. Mär 2005
Ort: Karlsruhe
535 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Wie eine eigene Form als Parameter?

  Alt 4. Apr 2005, 20:36
Zitat von sECuRE:
Hi,

die Antwort hast du dir ja fast schon selbst gegeben:
Delphi-Quellcode:

procedure TuEtwasMitderForm(var form:TForm);
begin
form.Caption:='Hier wurde etwas getan';
end;

// ...
procedure TForm1.Button1Click(Sender: TObject);
begin
TuEtwasMitderForm(self);
end;
cu
Nein, den es besteht ein unterschied zwischen TForm1 und TForm, das Funktioniert nicht und Delphi gibt dir eine Fehlermeldung aus!
Felix K.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: Wie eine eigene Form als Parameter?

  Alt 4. Apr 2005, 20:38
Du könntest die Varaiable casten ...
Delphi-Quellcode:
procedure TuEtwasMitderForm(var form:TForm);
begin
(form as TForm1).Caption:='Hier wurde etwas getan';
end;
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#5

Re: Wie eine eigene Form als Parameter?

  Alt 4. Apr 2005, 21:03
Aber nicht so, sondern gerade andersrum:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  LoadFormStyle(Self as TForm, ..., ..., ...);
end;
  Mit Zitat antworten Zitat
Benutzerbild von Speedmaster
Speedmaster

Registriert seit: 4. Mär 2005
Ort: Karlsruhe
535 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Wie eine eigene Form als Parameter?

  Alt 5. Apr 2005, 19:45
Zitat von Oxmyx:
Aber nicht so, sondern gerade andersrum:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  LoadFormStyle(Self as TForm, ..., ..., ...);
end;
Akueller Aufruf:
LoadFormStyle(Form2 as TForm,Form2.Image1,Filevar,'smMain'); Leider spuckt er mir immer noch die Fehlermeldung aus:
Zitat:
[Fehler] app_Skin.pas(158): Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
Habe auch schon viel Rumprobiert, habe aber keine Ahnung wie ich das jetzt noch machen soll!
Felix K.
  Mit Zitat antworten Zitat
susa71

Registriert seit: 9. Dez 2004
Ort: Hamburg
5 Beiträge
 
Delphi 7 Professional
 
#7

Re: Wie eine eigene Form als Parameter?

  Alt 5. Apr 2005, 21:48
...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
  Mit Zitat antworten Zitat
Benutzerbild von Speedmaster
Speedmaster

Registriert seit: 4. Mär 2005
Ort: Karlsruhe
535 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Wie eine eigene Form als Parameter?

  Alt 6. Apr 2005, 13:57
Zitat von susa71:
...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
Wenn ich die Eigenschaften eines Objekts ändern will muss ich das Objekt ändern!!

Habe das nun nach langem hin und her mit Overloads gelößt, was aber keine Ideale Lößung ist!
Felix K.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: Wie eine eigene Form als Parameter?

  Alt 6. Apr 2005, 14:04
Moin!

Zitat von Speedmaster:
Wenn ich die Eigenschaften eines Objekts ändern will muss ich das Objekt ändern!!
Ja, mach doch, aber dafür brauchst du das Objekt nicht als Var zu übergeben. Wie Susanne schon richtig erklärt hatte, übergibst du eh nur einen Instanzenzeiger somit änderst du Daten dort, wo der Zeiger hinzeigt. Den Zeiger selber änderst du aber nicht (das er woanders hinzeigt/auf eine andere Instanz zeigt), somit kein Var nötig. Du könntest sogar ein Const hinschreiben um sicherzugehen, das die Instanz wirklich nicht geändert wird - ihre Parameter und Eigenschaften können aber trotzdem geändert werden...

MfG
Muetze1
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10

Re: Wie eine eigene Form als Parameter?

  Alt 6. Apr 2005, 17:35
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.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:04 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