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 PopUpMenu.item.click ? (https://www.delphipraxis.net/20396-popupmenu-item-click.html)

kiar 17. Apr 2004 11:51


PopUpMenu.item.click ?
 
mit folgendem Code erstelle ich zur laufzeit ein Popupmenu mit Untermenu'
Delphi-Quellcode:
procedure TForm1.ErzeugeSubMenu(Sender :TObject);
var
  Item,
  subItem : TMenuItem;
  SL     : TStringlist;
  x,
  i      : Integer;

begin
    XPMenu1.Active:= False;
    PopupMenu1.Items.clear;

    for x:= 0 to 4 do
     begin
     SL:= TStringList.Create;
       try
         Item:=TMenuItem.Create(PopUpMenu1);
         with Item do
           begin
             Caption:= IntToStr(x + 2) +' Stunden';
             tag:= x;
             OnClick:= Sagmirwerdubist;
             SL.AddStrings(fkt_CalcWorkTime((x+2)*5));
         for i:= 0 to SL.Count-1 do
           begin
            SubItem:=TMenuItem.Create(Item);
            with SubItem do
              begin
                Caption:= SL.Strings[i];
                OnClick:= MyPopUpClick;
              end;
            Item.Add(SubItem);
           end;
          PopUpMenu1.Items.Add(Item);
       end;
      finally;
    SL.Free;
  end;
end;
    XPMenu1.Active:=true;
         
end;
in der zeile
Delphi-Quellcode:
OnClick:= Sagmirwerdubist;
will ich erfahren, welcher item gedrückt wurde . nun hat aber jeder item submenu's und ich kann dadurch das
onclick ereignis nicht auswerten.

sobald ich mich, mit der mouse uber eine item befinde, wird das ereignis ausgelöst.

frage
1. warum ist das so?
2. was gibt es für möglichkeiten der abhilfe?

danke

raik

Sharky 17. Apr 2004 12:09

Re: PopUpMenu.item.click ?
 
Zitat:

Zitat von kiar
..... nun hat aber jeder item submenu's und ich kann dadurch das
onclick ereignis nicht auswerten.

Warum kannst Du das OnClick nicht auswerten? Das wird doch auch ausgelöst wenn es SubItems gibt.

Zitat:

sobald ich mich, mit der mouse uber eine item befinde, wird das ereignis ausgelöst.
Das ist bei Windows immer so. Untermenüs öffnen sich wenn Du mit der Maus über dem Eintrag bleibst.

kiar 17. Apr 2004 12:17

Re: PopUpMenu.item.click ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
hallo sharky,

das habe ich ja auch festgestellt, aber Sagmirwerdubist reagiert aber sofort und dadurch kann ich das nicht auswerten. es kann ja sein das ich die maus noch weiter verschiebe und schon ist aber das ereignis ausgelöst.


Edit:
kann ich dieses verhalten irgendwie beeinflussen, das windows das subitem öffnet?

Sharky 17. Apr 2004 12:23

Re: PopUpMenu.item.click ?
 
Hai kiar,

mal anderstherum gefragt: Was möchtest Du denn erreichen?

kiar 17. Apr 2004 12:32

Re: PopUpMenu.item.click ?
 
wie du siehst sind dort stunden aufgeführt. nun möchte ich in abhängigkeit der gesamtstundenzahl die items unterdrücken, die rein rechnerisch nicht mehr machbar sind.

also: gesmtstunden = 8
item 6 Stunden gedrückt;
daraus folgt item 3 Stunden,4 Stunden und 5 Stunden -> enabled:=false

MOLer 30. Apr 2009 14:19

Re: PopUpMenu.item.click ?
 
hey raik,

ich steh grad vor dem selben problem wie du vor 5 jahren...
hast du dazu bereits eine lösung gefunden?


gruß stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:48 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