Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Popup geht erst beim zweiten mal? (https://www.delphipraxis.net/10047-popup-geht-erst-beim-zweiten-mal.html)

mandumoal 10. Okt 2003 12:18


Popup geht erst beim zweiten mal?
 
HI!

Mein Problem:

Ich habe ein ganz normales Shape auf meiner Form und ein Popup-Menu welches vier Einträge hat (Rot,Blau,Grün,Gelb).
Beim OnMouseDown Ereignis des Shape wird Folgendes aufgerufen:

Delphi-Quellcode:
procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
ColorPOPLIN.Popup(ax,ay);
shape1.brush.color:=colorLin1;
end;
Die Popup Einträge werden so ausgewertet:

Delphi-Quellcode:
procedure TForm1.RotClick(Sender: TObject);
    begin
    colorLin1:=clRed;
    end;
    procedure TForm1.BlauClick(Sender: TObject);
    begin
    colorLin1:=clBlue;
    end;
    procedure TForm1.GruenClick(Sender: TObject);
    begin
    colorLin1:=clgreen;
    end;
    procedure TForm1.GelbClick(Sender: TObject);
    begin
    colorLin1:=clyellow;
    end;
So, wenn ich jetzt draufklicke (im Betrieb) und eine Farbe auswähle passiert erst mal gar nichts, beim zweiten mal kommt die farbe die ich beim ersten mal gewählt habe egal welche ich beim zweiten mal gewählt habe und so weiter...

Ich weiss einfach nicht was ich da falsch gemacht habe??
Freue mich auf eure Hilfe!

mfg mandumoal

Mirilin 10. Okt 2003 12:34

Re: Popup geht erst beim zweiten mal?
 
:hi:

Du weist dem Shape erst die Farbe zu, wenn man klickt.
Du müsstest sie zuweisen, wenn du sie änderst.

Delphi-Quellcode:
procedure TForm1.BlauClick(Sender: TObject);
begin
* shape1.brush.color :=clBlue;
end;

Christian Seehase 10. Okt 2003 12:38

Re: Popup geht erst beim zweiten mal?
 
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;

mandumoal 10. Okt 2003 13:26

Re: Popup geht erst beim zweiten mal?
 
Vielen Dank für die Antworten!

Problem gelöst :-D ;

mfg mandumoal


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz