Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Ganz einfaches Problem mit eigener Prozedur


noreux - Do 25.10.07 22:33
Titel: Ganz einfaches Problem mit eigener Prozedur
Hallo,
Habe hier ein kleines Problem an dem ich nicht weiterkomme, für jemand mit Ahnung aber sicher ein leichtes ist. Habe bisher noch nie eine eigene Prozedur erstellt, jetzt ist es aber nötig. ich muss für 30 verschiedene buttons den selben code ausführen, alle unterscheiden sich nur an einem punkt den ich als variable in einem befehl mitgeben will. meine prozedur sieht bisher ungefähr so aus:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure speedchange(newspeed: integer);
var
tempname: string;
begin
tempname:=StringGrid1.Cells[0,Stringgrid1.Row];
if tempname='TEST' then showmessage(IntToStr(newspeed));
end;


Aufrufen will ich das ganze so:


Delphi-Quelltext
1:
speedchange(5);                    



und ausgeben sollte er in dem Beispiel ne Messagebox mit ner 5 drin.

die funktion soll also kurz schauen ob im ersten feld in der markierten Reihe des Stringgrids TEST steht, wenn ja soll es die mitgegebene Variable auswerfen.

Wenn ich kompilieren will sagt er Undefinierter Bezeichner: 'StringGrid1'. Kann mir nicht erklären wieso? Jemand n Tip?
gruß
Noreux

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt
Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Do 25.10.2007 um 22:52


mkinzler - Do 25.10.07 22:35

Mache aus der freien Prozedur einen Methode des Formulars:

Delphi-Quelltext
1:
procedure TFormx.speedchange(newspeed: integer);                    


Lossy eX - Do 25.10.07 22:45

Du kannst auf Member einer Klasse nur direkt zugreifen wenn deine Methode auch eine Methode der Klasse ist. Ansonsten musst du aus deiner Methode entweder eine Klassenmethode machen wie mkinzler das schon vorgeschlagen hat. Oder aber du musst angeben wo sich das Stringgrid befindet. In diesem Falle als zu welcher Klasse es gehört. Also Form1.StringGrid würde wieder gehen.

Ich würde bei so etwas aber immer zu einer Klassenmethode raten. Aber ich denke den anderen Fall wirst du irgendwann auch mal bekommen. Denn diese Sichtbar ist generell überall wichtig.

PS: Wenn du im Delphi oben in der Klasse deine Methode eingetragen hast und der Editiercursor drauf steht drück mal STRG + UMSCHALT + C. ;)


noreux - Do 25.10.07 23:39

cool danke, funktioniert! Eigentlich auch logisch wenn ichs jetzt seh..