![]() |
Listbox items in PopUpMenu rein
hey leute,
ich mach jetzt schon länger daran herum und scheine auf keinen grünen zweig zu kommen. Ich will alle items die in einer ListBox sind in ein PopUpMenu kopieren und für alle Items die gleiche OnClick procedure declaren. Aber wie? danke im vorraus. |
Re: Listbox items in PopUpMenu rein
Sowas wie das Codevervollstaendigung von der Delphi IDE?
|
Re: Listbox items in PopUpMenu rein
eine schleife durchlaufen in der du für jedes item der listbix ein tmenuitem erzeugst und dem popup menu hinzufügst.
das onclick event kannst du dabei auch gleich zuweisen. |
Re: Listbox items in PopUpMenu rein
Mal ein kleines Beispiel wie es ungefähr aussehen könnte
Delphi-Quellcode:
private
{ Private-Deklarationen } procedure OnMenuItemClick(Sender: TObject); public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var NewItem: TMenuItem; i:Integer; begin for i:=0 to 10 do begin NewItem:= TMenuItem.Create(Form1); NewItem.Caption := 'Item' + IntToStr(i); NewItem.Tag := i; NewItem.OnClick := OnMenuItemClick; PopUpMenu.Items.Add(NewItem); end; end; procedure TForm1.OnMenuItemClick(Sender: TObject); begin ShowMessage(TMenuItem(Sender).Caption); end; |
Re: Listbox items in PopUpMenu rein
Heyy,
Danke! Doch so ähnlich wollte ich es auch versuchen nur das delphi (7 enterprise) mir immer sagt, das es TMenu item nicht kennt. Also:
Delphi-Quellcode:
[Error] Unit1.pas(28): Undeclared identifier: 'TMenuItem'
|
Re: Listbox items in PopUpMenu rein
Delphi-Quellcode:
fehlte da wohl.
uses
Menus; |
Re: Listbox items in PopUpMenu rein
umm danke..:)
Jetzt ist das nächste problem mit the OnClick procedure. Also wenn man draufclickt brauch ich die Caption des items. Doch die wird falsch angezeigt. Hier die procedure in der ich die items hinzufüge:
Delphi-Quellcode:
Und hier die OnClick procedure von allen TMenuItems:
procedure TForm2.OkBtnClick(Sender: TObject);
var NewItem: TMenuItem; i:Integer; begin for i:=0 to ServerView.Count-1 do begin NewItem:= TMenuItem.Create(Self); NewItem.Caption := ServerView.Items.Strings[i]; NewItem.Tag := i; NewItem.OnClick := PopUpMenuConnecter; Form1.PopUpMenu1.Items.Add(NewItem); end; Form2.Close; end;
Delphi-Quellcode:
Nur ist vor die Caption irgendwie falsch, da ist immmer ein "&" zeichen davor. Wieso?
procedure TForm2.PopUpMenuConnecter(Sender: TObject);
begin //ShowMessage(TMenuItem(Sender).Caption); Form1.Connect(TMenuItem(Sender).Caption); end; Edit: naja, ich habs jetzt einfach mit dem Name des TMenuItems gemacht (natürlich gleich declariert wie die caption) und dann ging es. Würd mich aber trotzdem interesieren warum dort ein "&" davor ist wenn ich die Caption nimm. |
Re: Listbox items in PopUpMenu rein
Hi!
Zitat:
-- probiere mal AutoHotKeys:= maManual einzustellen, ob es dann nicht mehr automatisch von Delphi vergeben wird. Gruß Pfoto |
Re: Listbox items in PopUpMenu rein
Also, das ich anstatt die Caption den Namen zu benützen war keine gut idee wegen den sonderzeichen.
Deswegen, danke Pfoto, ging aber nicht :( |
Re: Listbox items in PopUpMenu rein
Um Menüs dynamisch aufzubauen gibt es die Funktionen (Unit Menus):
Delphi-Quellcode:
function NewMenu(Owner: TComponent; const AName: string; Items: array of TMenuItem): TMainMenu;
function NewPopupMenu(Owner: TComponent; const AName: string; Alignment: TPopupAlignment; AutoPopup: Boolean; Items: array of TMenuitem): TPopupMenu; function NewSubMenu(const ACaption: string; hCtx: Word; const AName: string; Items: array of TMenuItem; AEnabled: Boolean = True): TMenuItem; function NewItem(const ACaption: string; AShortCut: TShortCut; AChecked, AEnabled: Boolean; AOnClick: TNotifyEvent; hCtx: Word; const AName: string): TMenuItem; function NewLine: TMenuItem; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 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