Wahrscheinlich wurde auch diese Frage schon zu Tode diskutiert, aber ich habe keine Einträge gefunden (Wahrscheinlich suche ich bloß falsch)
Also ich habe 6 Trackbars, die beim Verschieben eigentlich alle das gleiche tun sollen, nur mit verschiedenen Variablen.
Gibt es eine Möglichkeit (Statt 6 verschiedene Routinen zu schreiben) eine Routine zu schreiben und anhand des Aufrufenden Trackbars bestimmte Variablen zu ändern?
Also hier das Beispiel
Code:
iHVHigh : Integer = 0;
iHvLow : Integer = 0;
iThrMinHigh : Integer = 2;
iThrMinLow : Integer = 0;
iThrMaxHigh : Integer = 127;
iThrMaxLow : Integer = 0;
iLedMinHigh : Integer = 0;
iLedMinLow : Integer = 0;
iLedMaxHigh : Integer = 0;
iLedMaxLow : Integer = 0;
Aktuelle sieht es so aus:
Code:
procedure TForm1.THRMinBarChange(Sender: TObject);
var cThrMin : String;
begin
cThrMin := IntToHex(ThrMinBar.Position,4);
iThrMinLow := StrToInt('$' + copy(cThrMin,3,2));
iThrMinHigh := StrToInt('$' + copy(cThrMin,0,2));
ThrMinEdt.Text := IntToStr(round(500*ThrMinBar.Position*2.5/4096));
Form1.RS232Panel.Caption := BuildCaption;
bRS232Changed := True;
end;
...
procedure TForm1.HVBarChange(Sender: TObject);
var cHV : String;
begin
cHV := IntToHex(HVBar.Position,4);
iHVLow := StrToInt('$' + copy(cHV,3,2));
iHVHigh := StrToInt('$' + copy(cHV,0,2));
HVEdt.Text := IntToStr(round(500*HVBar.Position*2.5/4096));
Form1.RS232Panel.Caption := BuildCaption;
bRS232Changed := True;
end;
Wie man sieht ändern sich nur die Variablennamen.
Wenn ich also mit folgendem Sourcecode den Namen rausbekomme
Code:
test := (sender as TTrackbar).Name;
name := Copy(test,0,Pos('Bar',test)-1);
kann ich dann mit name := 'HV'
irgendwie auf die Variablen
iHVLow
iHVHigh
zugreifen?
müsste dann ergo für name := 'THRMax'
irgendwie auf die Variablen
iTHRMaxLow
iTHRMaxHigh
Die Variablennamen setzen sich immer aus i + Name des Trackbar + Low oder + High zusammen
Ich hoffe ich habe mich halbwegs verständlich ausgedrückt. Bin noch nicht so lange dabei.
Danke
Blackmice