Prozedur Implementierung

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Prozedur Implementierung

Beitrag von Aliobaba »

Hallo,

die Überschrift "Einsteigerfragen" ermutigt mich, eine wahrscheinlich banale Frage zu stellen.

Ich möchte gerne durch den Aufruf einer Procedur die Eigenschaft (Farbe oder Text) eines Edit-Feldes ändern.
Am Beispiel eines Labels möchte ich mein Problem schildern:

Das funktioniert:

Code: Alles auswählen

procedure aaa;
begin
   ShowMessage('aaa');
end;
Das funktioniert nicht:

Code: Alles auswählen

procedure aaa;
begin
   ShowMessage('aaa');
   label3.Caption:= 'xy';
end;
Fehlermeldung:
"Identifier not found "label3""

Was mache ich falsch?

Aliobaba
Zuletzt geändert von Lori am Fr 18. Mai 2012, 16:16, insgesamt 1-mal geändert.
Grund: Highlighter
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Prozedur Implementierung

Beitrag von Aliobaba »

.... ich glaube jetzt, ich habe die Lösung :)

Da es sicher auch andere "Einsteiger" gibt, hier die (wahrscheinliche) Lösung:

Im Abschnitt "type" (ganz oben) muß stehen:

procedure aaa;
procedure bbb;

und dann:

Code: Alles auswählen

procedure TForm1.aaa;
begin
   ShowMessage('aaa');
   label3.Caption:= 'xy';;
end;
Ganz einfach ..... wenn man's weiß

Aliobaba
Zuletzt geändert von Lori am Fr 18. Mai 2012, 16:17, insgesamt 1-mal geändert.
Grund: Highlighter
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Prozedur Implementierung

Beitrag von MAC »

Richtig.
Das ist eine der Lösungsansätze, es findet sich dazu übrigens noch viel im web...
In deiner Lösung hast du gesagt aaa soll eine Procedure von deiner Form1 sein (TForm1, da Form1 eine Instanz der Klasse TForm1 ist (da steht doch im quellcode var Form1:TForm1;)).
Das allgemeine Problem war, die Procedure aaa wusste nicht was label3 ist. Da Label3 aber der Form1 gehört wär eine andere Lösung auch das hier gewesen:
Dadurch wird in der Procedure gesagt das das Label3 der Form1 verwendet werden soll.

Code: Alles auswählen

procedure aaa;
begin
   ShowMessage('aaa');
   Form1.label3.Caption:= 'xy';
end;
PS: Ich wollte das nur mal der vollständigkeit her erwähnen, deine Methode ist sauberer programmiert.

Code: Alles auswählen

Signatur := nil;

Antworten