Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Eine Prizedur für viele Felder
McFarlane - Do 25.01.07 15:18
Titel: Eine Prizedur für viele Felder
Hallo,
ich habe hier ein Form mit ganzt vielen TShapes drauf.
Nun soll sich ein Shape bei ONMouseDown färben und bei nochmaligem klicken zurückfärben.
Bis hier hin kein Problem, doch kann ich irgendwie eine Prozedur für alle erstellen, oder muss ichs für jedes einzeln machen?
Danke im Vorraus, McFarlane
Saubäär - Do 25.01.07 15:22
Titel: Re: Eine Prizedur für viele Felder
Hi Mcfarlane,
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure einfaerben(Shape: TShape); begin Shape.Pen.Color := clRed; Shape.Brush.Color := clRed; end;
procedure TForm1.Button1Click(Sender: TObject); begin einfaerben(Shape1); end; |
Gruß
Saubäär
jakobwenzel - Do 25.01.07 15:25
Wieso so kompliziert? In Sender wird das Aufrufende Objekt übergeben, nur weiß Delphi nicht, dass es ein Shape ist, und deshalb musst du erst sagen "ich will das als Shape ansprechen". So siehts dann aus:
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.Button1Click(Sender: TObject); begin (sender as TShape).Pen.Color := clRed; (sender as TShape).Brush.Color := clRed; end; |
Dann musste nur noch allen Shapes diese Ereignisbehandlung zuweisen.
JoelH - Do 25.01.07 15:26
nein brauchst du nicht,
du brauchst den Event nur einmal und hängst diese an jedes Shape an
ungefähr so
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin TShape(sender).Brush.Color := clred; end; |
]
Wichtig ist der "Sender" denn der gibt Delphi die Information weiter welcher TShape geklickt wurde.n
Edit: Mist zu langsam.
McFarlane - Do 25.01.07 15:26
Perfekt!
Vielen Dank.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!