Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - findcomponent + eigene procedure
hassedelphi - Mi 13.08.03 09:59
Titel: findcomponent + eigene procedure
hi
weiß jemand, wie ich unterbinden kann, dass der compiler in eigen von mir erstellten proceduren ausdrücke wie findcomponent (nur als beispiel) als undefinierter bezeichner meldet? 8)
Andreas_Sans - Mi 13.08.03 10:15
das Problem hatte ich auch. man muss das jeweilige Formblatt angeben auf dem man die Komponente sucht z.B.:
Delphi-Quelltext
1:
| tpanel(form1.FindComponent('panel'+IntToStr(i))).font.Color := clblue |
hassedelphi - Mi 13.08.03 10:34
thx aber nachdem ich das ändere kommt die nächste fehlermeldung, die vorher nicht vorhanden war:
[Fehler] Unit1.pas(64): Ungenügende Forward- oder External-Deklaration: 'TForm1.modeundruck'
Andreas_Sans - Mi 13.08.03 11:27
schreib mal die ersten 100 zeilen deines Programms hin
hassedelphi - Mi 13.08.03 11:37
Delphi-Quelltext
1: 2: 3:
| procedure Button1Click(Sender: TObject); procedure modeundruck; private |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure modeundruck; var efeld,rfeld : Tpanel; e : integer; begin if (mode = 1) or (mode = 2) then begin efeld.caption:=(floattostrf(Tm1,fffixed,999999999,5)+' °C'); rfeld.Caption:=('/'); end; if mode = 3 then begin efeld.caption:=(floattostrf(Tm1,fffixed,999999999,5)+' °C'); rfeld.Caption:=(floattostrf(mr,fffixed,999999999,5)+' kg'); end; for e := 1 to 8 do (form1.FindComponent('checkbox'+inttostr(e))as Tcheckbox).checked := false; end; |
Andreas_Sans - Mi 13.08.03 12:12
Ich würde die Procedure so schreiben :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure modeundruck( mode : integer; Tm1, mr : Real);; var e : integer; begin if (mode = 1) or (mode = 2) then begin efeld.caption:=(floattostrf(Tm1,fffixed,999999999,5)+' °C'); rfeld.Caption:=('/'); end; if mode = 3 then begin efeld.caption:=(floattostrf(Tm1,fffixed,999999999,5)+' °C'); rfeld.Caption:=(floattostrf(mr,fffixed,999999999,5)+' kg'); end; for e := 1 to 8 do (form1.FindComponent('checkbox'+inttostr(e))as Tcheckbox).checked := false; end; |
man muss die Variablen, die man aus dem Programm übernehmen will, hinter den Procedurenamen in Klammern schreiben. Sollen die Variablenwerte verändert werden muss man noch ein
Var davor setzten.
Ich glaube die Panele muss man nicht nochmal definieren, daher hab ich sie weggelassen.
Diese Zeile
procedure modeundruck; würde ich ganz weglassen. Wenn du die Procedur später aufrufen willst, geht das so :
Delphi-Quelltext
1:
| modeundruck(mode,Tm1,mr); |
Tryer - Mi 13.08.03 12:15
es fehlt einfach nur das
procedure TForm1.modeundruck;
MfG,
Tryer
hassedelphi - Mi 13.08.03 12:28
habe Tform1. vorangesetzt, da kommt aber sowas: :cry:
---------------------------
Fehler
---------------------------
'=' erwartet, aber ';' gefunden.
---------------------------
OK
---------------------------
hassedelphi - Mi 13.08.03 12:29
nein wartet es klappt!!!!!!!!!!
THX! :D :D :D :D :D :D :twisted:
Tryer - Mi 13.08.03 12:34
Damit sowas nicht passiert und man sich die Arbeit noch vereinfacht kann man so vorgehen:
- man erstellt die Methoden-Deklaration im interface-Abschnitt
- dann entweder Rechtsklick -> "Klasse beim Cursor vervollständigen" oder Strg-Shift-C
Dadurch werden automatisch die Prozedur-Rümpfe für die Methode(n) erstellt, das funzt u.a. auch für Get/Set-Methoden von Properties, diese werden dann auch automatisch deklariert.
MfG,
Tryer
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!