![]() |
MenuItem selektieren
Hallo!
Gibt es eine Möglichkeit zB. bei PopupMenu.Popup() das erste MenuItem des Popups zu selektieren(, also zu erreichen, dass es blau hinterlegt ist)? Grüße blablab |
AW: MenuItem selektieren
Hallo,
suchst Du vielleicht etwas in der Art (TButton und TPopupMenu auf das Formular legen und ein paar Menüeinträge anlegen):
Delphi-Quellcode:
Gruß
interface
type TForm1 = class(TForm) [...] procedure Button1Click(Sender: TObject); procedure PopupMenu1Popup(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } FSelected : TMenuItem; procedure OnItemClick (Sender : TObject); procedure OnItemDraw (Sender : TObject; ACanvas : TCanvas; ARect : TRect; Selected : Boolean); public { Public-Deklarationen } end; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var p : TPoint; begin p := ClientToScreen (Point (Button1.Left + 1, Button1.Top + Button1.Height)); PopupMenu1.Popup (p.X, p.Y) end; procedure TForm1.PopupMenu1Popup(Sender: TObject); var m : TMenuItem; begin m := PopupMenu1.Items.Find (Button1.Caption); if Assigned (m) then begin if FSelected = m then Exit; m.OnDrawItem := OnItemDraw; if Assigned (FSelected) then FSelected.OnDrawItem := nil; FSelected := m end end; procedure TForm1.FormCreate(Sender: TObject); var i : Integer; begin PopupMenu1.OwnerDraw := True; for i := 0 to PopupMenu1.Items.Count - 1 do PopupMenu1.Items [i].OnClick := OnItemClick; FSelected := nil end; procedure TForm1.OnItemClick (Sender : TObject); begin if not (Sender is TMenuItem) then Exit; Button1.Caption := (Sender as TMenuItem).Caption end; procedure TForm1.OnItemDraw (Sender: TObject; ACanvas: TCanvas; ARect: TRect; Selected: Boolean); var m : TMenuItem; begin if not (Sender is TMenuItem) then Exit; m := (Sender as TMenuItem); try m.OnDrawItem := nil; DrawMenuItem (m, ACanvas, ARect, [odSelected, odFocused, odNoAccel]) finally m.OnDrawItem := OnItemDraw end end; |
AW: MenuItem selektieren
Ich benutze jetzt keybd_event. Wenn ich zB möchte dass das 5. MenuItem (also mit dem MenuIndex 4) selektiert ist muss ich 5 mal "Pfeil-nach-unten" drücken und dementsprechend rufe ich 5 mal keybd_event (je keydown+keyup) auf.
Was besseres ist mir leider nicht eingefallen, aber wenigstens funktionierts... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz