Objekteigenschaft in einfacher Prozedur aufrufen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Tim
Beiträge: 21
Registriert: Fr 2. Dez 2016, 16:47

Objekteigenschaft in einfacher Prozedur aufrufen

Beitrag von Tim »

Hallo,
ich hab eine ganz einfache Prozedur start geschrieben, die beim Starten des Programmes aufgerufen wird. In der will ich festlegen, dass ein Image an eine bestimmte Stelle gesetzt wird.

Code: Alles auswählen

 
procedure start;
begin
  Image1.LEFT:=200;
end;
 


Es tritt folgender Fehler auf:

Code: Alles auswählen

unit1.pas(60,3) Error: Identifier not found "Image1"


Ich bin mir sicher, dass ich irgendwo festlegen muss, dass ich in der Prozedur auf Objekte zugreifen kann. Aber ich weiß nicht wo und wie...

Danke für eure Hilfe

Grüße Tim

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2639
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Objekteigenschaft in einfacher Prozedur aufrufen

Beitrag von m.fuchs »

start ist bei dir eine normale Prozedur, es muss aber eine Methode von deinem Formular sein sein.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

wp_xyz
Beiträge: 4885
Registriert: Fr 8. Apr 2011, 09:01

Re: Objekteigenschaft in einfacher Prozedur aufrufen

Beitrag von wp_xyz »

Warum muss das eine einfache Prozedur sein? Sie wird ohnehin nicht ohne das Formular funktionieren, in dem sich das Image befindet - dann wäre eine Methode viel konsistenter. All die Versuche, sich von der objekt-orientierten Programmierung zurück in die prozedurale Programmierung zu mogeln, sind ein Weg in die Steinzeit und von vielen Fallen begleitet.

Mathias
Beiträge: 6193
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Objekteigenschaft in einfacher Prozedur aufrufen

Beitrag von Mathias »

Wen es zwingend eine einfache Procedure sein soll, würde dies so gehen:

Code: Alles auswählen

procedure start(Image:TImage);
begin
  Image.LEFT:=200;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  start(Image1);
end
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten