Objekt Procedur aus Unit benutzen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
baba
Beiträge: 265
Registriert: Mi 4. Apr 2007, 17:47

Objekt Procedur aus Unit benutzen

Beitrag von baba »

Moin, moin,

wie würdet Ihr sowas definieren?

Code: Alles auswählen

type
 
  { TFMain }
 
  TFMain = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
 
   // STEHT IN DER GLEICHEN UNIT - ALLES OK
    procedure FormCreate(Sender: TObject);         
    procedure FormActivate(Sender: TObject);
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
 
//==========================================================
//DAS GEHT NICHT! 
 
   // STEHT IN UNIT_4711.PAS
    procedure StandardFunktion_fuer_button_click((Sender: TObject);   
 
// WIE SAGE ICH ES DEM COMILER?
//==========================================================
 
 
  private
    { private declarations }
  public
    { public declarations }
  end; 
 
Gruß
Baba.

piper62
Beiträge: 131
Registriert: Sa 5. Apr 2008, 17:57
OS, Lazarus, FPC: Linux (Debian, Xubuntu), MacOS X, MS Win, Android, Web
CPU-Target: 32Bit/64Bit
Wohnort: Ulm

Re: Objekt Procedur aus Unit benutzen

Beitrag von piper62 »

Ich weiss ja nicht wie Deine Unit aussieht die Du einbinden möchtest?
Grundsätzlich brauchst Du es nicht noch einmal zu deklarieren sondern kannst Methoden einfach benutzen falls sie korrekt deklariert sind.
Ev. solltest Du überprüfen wie bestimmte Methoden/Properties in der Ursprungsunit definiert sind (Private, Public).
Bei der Procedure ist im Übrigen ein "(" zuviel.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Objekt Procedur aus Unit benutzen

Beitrag von pluto »

procedure StandardFunktion_fuer_button_click((Sender: TObject);
da ist ein Fehler drin: Die zweite Klammer Auf ist zuviel. dann sollte das gehen.
MFG
Michael Springwald

baba
Beiträge: 265
Registriert: Mi 4. Apr 2007, 17:47

Re: Objekt Procedur aus Unit benutzen

Beitrag von baba »

pluto hat geschrieben: da ist ein Fehler drin: Die zweite Klammer Auf ist zuviel. dann sollte das gehen.
Moin, moin,

ja, da habe ich einen Schreibfehler in dem Beispiel gemacht. Hat mit dem Problem aber nichts zu tun.

Ich beschreibe meine Frage einmal, vielleicht ist das verständlicher.

1. Neune Anwendung
2. Neues Formular
3. Ein Button drauf
4. Das On-Click-Ereignis steht in UNIT_4711.PAS

Code: Alles auswählen

 
uses ..., ..., unit_4711;
 


ist in Form1 angegeben.

Mache ich einen DoppelClick das OnClick-Ereignis und setze die erzeugte Procedure in eine andere
Unit um, kommt natürlich diese Fehlermeldung.

Code: Alles auswählen

 
form1.pas(265,15) Error: Forward declaration not solved "TForm1.Btn1_Click(TObject)"
 
Wäre die Unit eine DLL würde ich EXTERNAL benutzen, aber die Procedure steht nur nicht in der gleichen
Datei (Form1.pas) sondern in Datei (Unit_4711.pas).

Gruß
Baba.

Benutzeravatar
theo
Beiträge: 10949
Registriert: Mo 11. Sep 2006, 19:01

Re: Objekt Procedur aus Unit benutzen

Beitrag von theo »

Das geht so nicht. Deklaration und Implementation einer Klasse (hier TForm1) müssen in der gleichen Unit stehen.
Du kannst das höchstens mit Include Files auseinandernehmen.
Wieso willst du das denn so machen?

slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

Re: Objekt Procedur aus Unit benutzen

Beitrag von slai »

Form1.button.onclick := @TForm10.Btn1_Click;
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Objekt Procedur aus Unit benutzen

Beitrag von pluto »

Vor dem Problem stehe ich auch immer wieder. Jetzt weiß ich was das Problem ist.
Eine perfekte Lösung dafür habe ich auch noch nicht gefunden.

Du kannst klassen leider nur in einer Unit Definieren und benutzen. Aus irgendeinengrund geht das (noch) nicht über meher Units wenn es eine Forword Definition werden soll.
MFG
Michael Springwald

baba
Beiträge: 265
Registriert: Mi 4. Apr 2007, 17:47

Re: Objekt Procedur aus Unit benutzen

Beitrag von baba »

theo hat geschrieben:Wieso willst du das denn so machen?
... ich verliere die Übersicht.

Hintergrund:

Ich schreibe eine Anwendung für Windows Mobile. Nun habe ich festgestellt, dass Das WinMobile jedes neue Formular als eigene Anwendung im Programmbrowser anzeigt.

Code: Alles auswählen

 
Laufende Programme:
   Hauptanwendung
   Form2
   Form3
   ...
 
Also nehme ich ein großes Formular und platziere mehrere Panels mit 240x320 Pixeln drauf. Startet die Anwendung ändere ich per Programm die Parameter Form.Width und Form.Height und steuere welches Panel angezeigt wird, alle anderen sind Visible := False.

Dieses Vorgehen wirkt sich auch noch positiv auf die Geschwindigkeit aus.

Mein Problem:

Ich habe ein Formular, mit hunderten von Komponenten und mehrere tausend Zeilen Programmcode.

Ich werde jetzt die eigentliche OnClick-Procedure im Form1 lassen und aus dieser auf eine andere Unit verzweigen.

Gruß
Baba.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Objekt Procedur aus Unit benutzen

Beitrag von pluto »

Warum Panels ? Dafür gibt es z.b. ein "Notebook", oder ein "PageControl".
Beim "Notebook" kannst du auch die Tabs unsichtbar machen. Beim "PageControl" meine ich nicht.
MFG
Michael Springwald

baba
Beiträge: 265
Registriert: Mi 4. Apr 2007, 17:47

Re: Objekt Procedur aus Unit benutzen

Beitrag von baba »

pluto hat geschrieben:Warum Panels ? Dafür gibt es z.b. ein "Notebook", oder ein "PageControl".
Beim "Notebook" kannst du auch die Tabs unsichtbar machen. Beim "PageControl" meine ich nicht.
Border läßt sich unter WinMobile nicht abschalten. Würde auch nichts ändern, es bliebe alles in einer Datei.

Dies war mein erster Ansatz. :|

Baba.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Objekt Procedur aus Unit benutzen

Beitrag von Christian »

Panels, Notebooks, Pagecontrols alles quatsch warum nimmst du nicht einfach Frames oder behebst den fehler im WinCe interface wenn du das nicht kannst sollte er möglichst wenigstens dokumentiert werden (Bugtracker) ich ahbs schon oft erlebt das derlei dinge inenrhalb einer halben Stunde behoben wurden (was ich im Falle vom WinCE Interface aber nicht glaube).
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

baba
Beiträge: 265
Registriert: Mi 4. Apr 2007, 17:47

Re: Objekt Procedur aus Unit benutzen

Beitrag von baba »

Christian hat geschrieben:Panels, Notebooks, Pagecontrols alles quatsch warum nimmst du nicht einfach Frames
.. mit Frames habe ich noch nicht gearbeitet, löst das denn mein Problem mit der einen Datei?
Christian hat geschrieben:oder behebst den fehler im WinCe interface
.. da müßte ich mich erst einarbeiten, dass Vorgehen via Panels ist unter Visual C (Mobile) normal. Daher bin ich damit vertraut. Da mir aber Pascal mehr liegt als C, gerade bei größeren Projekten, nutze ich immer häufiger Lazarus.
Christian hat geschrieben:dokumentiert werden (Bugtracker)
.. das ist richig, ist die Frage ob es nicht schon gemeldet wurde.

Baba.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Objekt Procedur aus Unit benutzen

Beitrag von pluto »

@Christian
Seit wann genau unterstützt Lazarus Frames ? Ich habe sowas dort bisher aufjedenfall noch nicht gefunden :( Habe damit auch schlecht Erfahrung gemacht unter Delphi.
MFG
Michael Springwald

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Re: Objekt Procedur aus Unit benutzen

Beitrag von knight »

pluto hat geschrieben: Seit wann genau unterstützt Lazarus Frames ? I
Seit Version 0.9.27.

knight

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Objekt Procedur aus Unit benutzen

Beitrag von pluto »

ach so, darum kannte ich das nicht.... Version 0.9.27 konnte ich beim letzten versuch nicht Kompilieren. Werde es aber noch mal versuchen.
und sind die Frames denn voll eingebaut ?
MFG
Michael Springwald

Antworten