Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Zwei Units für eine Form? (https://www.delphipraxis.net/102055-zwei-units-fuer-eine-form.html)

snow 22. Okt 2007 20:15


Zwei Units für eine Form?
 
Hallo

Ich hab ein kleines Problem.
Ich hab 2 Buttons. Wenn ein button geklickt wird soll eine Form aufgerufen werden. Klappt auch ganz prima. Doch.....


Ich will das wenn der 2. Button drückt wird, sich die selbe Form offnet aber die FOrm soll mit einer anderern Unit Verknfüpft sein.

Quasi so

Button1-->Form-->Unit1
Button2-->Form-->Unit2



Die form hat buttons. In unit 2 Soll eine andere OnClick-Procedure für Buttonxyz ausgeführt werden als in Unit 1.


Ich will keine 2 Identischen Formen erstellen, um platz zu speichern. Ich könnte zwar auch einen Parameter übergeben aber dann müsste ich vor jeder procedure eine Verzweigung machen. Und dass will ich nicht, wenn es auch einfacher geht.


MfG snow

PS://Ach ja ich hab lazarus!

mkinzler 22. Okt 2007 20:18

Re: Zwei Units für eine Form?
 
Du könntest die Event-Property auf eine andere Methode setzen.

snow 22. Okt 2007 20:27

Re: Zwei Units für eine Form?
 
Sorry,


Aber ist die Event-Property für jede form einstellbar. Dass ich wie oben einer form eine Unit zuweise oder muss ich jedem Button eine neue procedure geben?.

Und kann ich beim form.show; ein parameter übergeben?

MfG snow

mkinzler 22. Okt 2007 20:32

Re: Zwei Units für eine Form?
 
Zitat:

Aber ist die Event-Property für jede form einstellbar.
Ja.

Delphi-Quellcode:
formx.Button.onClick := <Klasse in Unit1>.KlickProzedur1;

RavenIV 23. Okt 2007 08:18

Re: Zwei Units für eine Form?
 
Ein Formular besteht aus einer Form1.pas und einer Form1.dfm.
Ich hab noch nirgends gesehen, dass man es so machen kann wie Du es vorhast.
Also Unit1.pas + Unit2.pas + Unit.dfm.

Vermutlich wirst Du also 2x .pas und 2x .dfm benötigen.
Du kannst aber Unit2.pas von Unit1.pas ableiten, dann sind sie zumindest gleich.

snow 24. Okt 2007 20:28

Re: Zwei Units für eine Form?
 
Kann ich die onclick-proceduren vor dem .show ändern?

Dass ich in der "Normalen" Unit einfach eine 2. Unit include. Und vor dem show dann die onclick/change/show proceduren ändere?


MfG snow

mkinzler 24. Okt 2007 20:30

Re: Zwei Units für eine Form?
 
Delphi-Quellcode:
Form.<Kompo>.onClick := <Methoden>;
Form.Show;

snow 24. Okt 2007 20:36

Re: Zwei Units für eine Form?
 
Danke läuft! Kann ich die auch die ONshow procedure ändern?

MfG snow

mkinzler 24. Okt 2007 20:37

Re: Zwei Units für eine Form?
 
Ja.

snow 26. Okt 2007 17:50

Re: Zwei Units für eine Form?
 
Hallo noch mal

Ich bekomme bei
Delphi-Quellcode:
FahrpultLsollgeschwindigkeit.OnChange:=OnchangeFahrpultdb();
folgende fehlermeldung

Zitat:

Hauptanzeige.pas(81,42) Error: Incompatible types: got "untyped" expected "<procedure variable type of procedure(TObject) of object;Register>"
Hauptanzeige.pas(132) Fatal: There were 1 errors compiling module, stopping
warum?

MfG snow

mkinzler 26. Okt 2007 17:56

Re: Zwei Units für eine Form?
 
Eine Eventbehandlungsroutine muss eine Methode sein und muss die richtige Signatur besitzen.

snow 26. Okt 2007 17:58

Re: Zwei Units für eine Form?
 
So jetzt bitte mal auf deutsch. wo ist der unterschied zwischen einer Methode und einer procedure?

Wo muss ich die Methode angeben und wo deklarieren?

MfG snow

mkinzler 26. Okt 2007 18:01

Re: Zwei Units für eine Form?
 
Eine Methode gehört zu einer Klasse.

snow 26. Okt 2007 18:05

Re: Zwei Units für eine Form?
 
Bei mir sieht das so aus.

Hauptform
-Button1---->nebenform
-Button2---->nebenform soll andere Event-Proceduren haben.



Ich hab ne procedure die so heißt

Delphi-Quellcode:
procedure THauptfenster.HauptfahrfahrplutdbClick(Sender: TObject);
begin
with TFahrpultfenster.Create(self) do
begin
  FahrpultLsollgeschwindigkeit.OnChange:=OnchangeFahrpultdb();
  Show;
end;

end;
so die nebenform 2 ist derzeit lehr(bis auf die OnchangeFahrpultdb-procedure;

MfG snow

Apollonius 26. Okt 2007 18:10

Re: Zwei Units für eine Form?
 
Ist OnchangeFahrpultdb jetzt eine Methode? Bei der Zuweisung von Funktions- oder Methodenzeigern darfst du außerdem nie Klammern hinter den Funktionsnamen schreiben, sonst denkt der Compiler, dass du die Funktion aufrufen willst, was schwierig werden könnte, wenn es eine Prozedur oder eine Methode ohne Rückgabewert ist. In bestimmten Fällen musst du sogar vor die Zugewiesene Routine ein @ schreiben.

snow 26. Okt 2007 18:16

Re: Zwei Units für eine Form?
 
Nein ONChangefahrpultdb ist eine procedure.



Wo und wie soll ich eine Methode erklären und was muss die methode machen?

MfG snow


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:44 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