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 Listbox in Popup (https://www.delphipraxis.net/116897-listbox-popup.html)

Poseidon 8. Jul 2008 12:43


Listbox in Popup
 
Hallo Delphianer,

ich möchte das die Einträge in einer listbox in ein Untermenü
des popup erscheinen. Also:
Meine Listbox hat (z.B.) 5 Einträge (e1,e2,e3,e4,e5), im popup habe ich das Item
listbox. Im Untermenu sollen dei Listbox Eintäge stehen. Hoffe ihr wisst was ich meine.

danke im voraus

mfg Poseidon

Luckie 8. Jul 2008 13:01

Re: Listbox in Popup
 
Geht so:
Delphi-Quellcode:
//
// Klick-Ereignis für dynamische Popmenüeinträge
//
procedure TForm1.PopUpItemClick(Sender: TObject);
var
  PopItem: TMenuItem;
begin
  // Sicherstellen dass der Sender vom richtigen Typ ist
  PopItem := (Sender as TMenuItem);
  // nur wenn Zuwesusng erfolgreich
  if Assigned(PopItem) then
  begin
    ShowMessage(Format('Popupmenüitem Nr. %d wurde angeklickt', [PopItem.Tag]));
  end;
end;

procedure TForm1.PopupMenu1Popup(Sender: TObject);
var
  PopItem: TMenuItem;
  LBItem: TMenuItem;
  i: Integer;
begin
    PopItem := TMenuItem.Create(Form1); // Hauptmenüeintrag erzeugen
    PopItem.Caption := 'Litsbox Items'; // Beschriftung
    PopupMenu1.Items.Add(PopItem); // an Popupmenü anhängen
    for i := 0 to ListBox1.Items.Count - 1 do
    begin
      LBItem := TMenuItem.Create(Form1); // Menüitem erzeugen
      LBItem.Caption := Listbox1.Items[i]; // Beschriftung
      LBItem.Tag := i; // Eigenschaft Tag setzen zur späteren Unterscheidung im OnClick Ereignis
      LBItem.OnClick := PopUpItemClick; // Klick-Ereignis zuweisen
      PopItem.Add(LBItem); // an Hauptmenüeintrag anhängen
    end;
end;
Ich habe es ausführlich kommentiert. Sollte so verständlich sein.

Poseidon 8. Jul 2008 13:42

Re: Listbox in Popup
 
Super, Danke :thumb:

Ajin 1. Okt 2008 16:16

Re: Listbox in Popup
 
Bei jedem Rechtsklick wird immer ein weiterer Hauptmenue Eintrag hinzugefügt, egal ob es schon existiert oder nicht.

Luckie 1. Okt 2008 16:26

Re: Listbox in Popup
 
Zitat:

Zitat von Ajin
Bei jedem Rechtsklick wird immer ein weiterer Hauptmenue Eintrag hinzugefügt, egal ob es schon existiert oder nicht.

Äh, ja und? Was willst du uns jetzt mit deiner Festellung sagen?

Ajin 1. Okt 2008 16:49

Re: Listbox in Popup
 
Na ich würde mit:

Delphi-Quellcode:
if Listbox1.Items.Count = 0 then
    begin
      PopItem := TMenuItem.Create(Fmain); // Hauptmenüeintrag erzeugen
      PopItem.Caption := 'Keine Einträge vorhanden'; // Beschriftung
      if popup.items.Count = 0 then Popup.Items.Add(PopItem);
    end
    else
    begin
     PopItem := TMenuItem.Create(Fmain); // Hauptmenüeintrag erzeugen
     PopItem.Caption := 'zeige Details für'; // Beschriftung
     if popup.items.Count = 1 then Popup.Items.Add(PopItem);
    end;
sicherstellen dass nicht unendlich viele Hauptmenueeinträge erzeugt werden können.

Luckie 1. Okt 2008 17:41

Re: Listbox in Popup
 
Das war ja nur ein Beispielcode und nicht mehr.

Ajin 2. Okt 2008 08:43

Re: Listbox in Popup
 
Heeee das sollte ja auch kein Vorwurf sein :zwinker:

Ohne deine Beispiele hätte ich deutlich mehr graue Haare!

:cheers:


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