Ich habe 2 verschiedene procedures (Member von TForm1), die von je einem Thread ausgeführt werden sollen. Den Threads habe ich Namen gegeben, die die Bezeichnung der jeweiligen procedure widerspiegeln.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42:
| type TDrawThread = class(TThread) Ident: String; procedure SetName(Name: String); public procedure Execute(); override; property ThreadName: String read Ident write SetName; end;
implementation
procedure TDrawThread.SetName(Name: String); begin Ident:=Name; end;
procedure TDrawThread.Execute(); var Loop: Boolean; begin while Loop do begin Form1.FindComponent('Draw' + ThreadName); Sleep(10); end; end;
procedure TForm1.DrawPlane(); (...) procedure TForm1.DrawCurve(XOffset: Integer; YOffset: Integer; Size: Integer); (...)
procedure TForm1.FormCreate(Sender: TObject); begin CurveThread:= TDrawThread.Create(true); PlaneThread:= TDrawThread.Create(true);
PlaneThread.ThreadName:='Plane'; CurveThread.ThreadName:='Curve';
end; |
Meine Frage ist jetzt, wie kann ich das realisieren, dass die entsprechende procedure, vor allem mit den Übergabewerten bei DrawCurve, aufgerufen werden?
Ja ich weiß, man könnte auch mit "if ThreadName = 'Plane' then DrawPlane else DrawCurve;" arbeiten, aber geht es nicht doch einen Tick eleganter?
Moderiert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 08.11.2011 um 23:46