Moin mandumoal,
erst nachdem das MouseDown Ereignis komplett abgearbeitet wurde, wird die OnClick Routine ausgeführt.
Du kannst Dir das selber mal ansehen, wenn Du Dir mal an den entsprechenden Stellen mit Outputdebugstring, und einer entsprechenden Meldung, mal den Verlauf ansiehst. (Ansicht, Debugfenster, Ereignisprotokoll).
So geht's:
Im FormCreate wird den Tags der Menüpunkte die Farbe zugewiesen, und jedem Menüpunkt das gleiche OnClick Ereignis, in dem dann auch gleich die Farbe gesetzt wird (die sich ja jetzt im Tag befindet).
Delphi-Quellcode:
procedure TForm1.ColorPOPLINClick(Sender: TObject);
begin
shape1.brush.color := TColor((Sender as TMenuItem).Tag);
end;
procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ColorPOPLIN.Popup(Mouse.cursorpos.x,Mouse.cursorpos.y);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Rot1.Tag := integer(clRed);
Blau1.Tag := integer(clBlue);
Gruen1.Tag := integer(clGreen);
Gelb1.Tag := integer(clYellow);
end;