Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Listbox items in PopUpMenu rein (https://www.delphipraxis.net/108387-listbox-items-popupmenu-rein.html)

k4ni 12. Feb 2008 22:09


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.

Mackhack 13. Feb 2008 02:29

Re: Listbox items in PopUpMenu rein
 
Sowas wie das Codevervollstaendigung von der Delphi IDE?

semo 13. Feb 2008 07:27

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.

Blackheart 13. Feb 2008 09:25

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;

k4ni 13. Feb 2008 11:16

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'

bitsetter 13. Feb 2008 11:26

Re: Listbox items in PopUpMenu rein
 
Delphi-Quellcode:
uses
  Menus;
fehlte da wohl.

k4ni 13. Feb 2008 13:09

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:
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;
Und hier die OnClick procedure von allen TMenuItems:
Delphi-Quellcode:
procedure TForm2.PopUpMenuConnecter(Sender: TObject);
begin
//ShowMessage(TMenuItem(Sender).Caption);
Form1.Connect(TMenuItem(Sender).Caption);
end;
Nur ist vor die Caption irgendwie falsch, da ist immmer ein "&" zeichen davor. Wieso?

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.

Pfoto 13. Feb 2008 13:56

Re: Listbox items in PopUpMenu rein
 
Hi!

Zitat:

Nur ist vor die Caption irgendwie falsch, da ist immmer ein "&" zeichen davor. Wieso?
Mit dem kaufmännischen Und "&" kann das Tastenkürzel für das MenüItem angegeben werden
-- probiere mal AutoHotKeys:= maManual einzustellen, ob es dann nicht mehr
automatisch von Delphi vergeben wird.

Gruß
Pfoto

k4ni 13. Feb 2008 15:53

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 :(

shmia 13. Feb 2008 15:58

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 21:43 Uhr.
Seite 1 von 2  1 2      

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