Hi,
für meine GUI möchte ich eine Fensterliste wie im Lazarus-Menüpunkt Fenster/Windows anbieten. Die Informationen werden dazu doch etwas aufwendiger aus Screen.Forms heraus gesucht. Neben den Fenstern kommen noch andere Menüpunkte dazu, wie bei Lazarus. Ist etwas aufwendig und passt auch soweit.
Damit die GUI von außen flexibel bedient werden kann bekommt sie den Menüpunkt aus dem Hauptmenü in ein Property übergeben in dem das Menü dann aufgebaut werden soll.
Nun will ich in der Gui die gleiche Fensterliste auch in einem TPopup Menü anbieten, das zu einem Button in einer Toolbar gehört. (der Pfeil nach unten im Button ganz rechts)
Leider ist der Menüpunkt aus dem Hauptmenü ein TMenuItem und das Popupmenu ein TPopup.
Sehe ich den Wald vor lauter Bäumen nicht oder brauche ich da wirklich zwei Prozeduren wegen der unterschiedlichen Parameter ? Oder geht das eleganter?.
Muss zugeben, Menüerstellung hab ich irgendwie immer vermieden, was mir jetzt auf die Füße fällt.
[Erledigt] Menüprobleme
-
- Beiträge: 1159
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
[Erledigt] Menüprobleme
Zuletzt geändert von charlytango am Mi 27. Aug 2025, 14:32, insgesamt 1-mal geändert.
-
- Beiträge: 1159
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Menüprobleme
Hab was das vereinfacht so aussieht.
Happy bin ich da noch nicht wirklich -- hmmm
Code: Alles auswählen
procedure TfrmCtGUI.PopulateMenus(pmnuTabMenu:TMenuItem;ToolbarTabList:TPopupMenu);
var
I: Integer;
MenuItem: TMenuItem;
Form: TForm;
begin
// Bestehende Menüpunkte löschen
pmnuTabMenu.Clear;
ToolbarTabList.Items.Clear;
// Alle offenen Formulare durchlaufen
for I := 0 to Screen.FormCount - 1 do
begin
Form := Screen.Forms[I];
// Menüpunkt für TMainMenu erstellen
MenuItem := TMenuItem.Create(pmnuTabMenu);
MenuItem.Caption := Form.Caption;
pmnuTabMenu.Add(MenuItem);
// Menüpunkt für TPopupMenu erstellen
MenuItem := TMenuItem.Create(ToolbarTabList);
MenuItem.Caption := Form.Caption;
ToolbarTabList.Items.Add(MenuItem);
end;
end;
- Ally
- Beiträge: 288
- Registriert: Do 11. Jun 2009, 09:25
- OS, Lazarus, FPC: Win und Lazarus Stable release
- CPU-Target: x64
Re: Menüprobleme
Hallo charlytango,
es gibt ja die ActionList, die das Menümanagement sehr vereinfacht.
Man erstellt einmal die Action und verwendet sie dann in den Menüs.
Anbei ein kleines Beispiel.
Gruß
Roland
es gibt ja die ActionList, die das Menümanagement sehr vereinfacht.
Man erstellt einmal die Action und verwendet sie dann in den Menüs.
Anbei ein kleines Beispiel.
Gruß
Roland
- Dateianhänge
-
project1.zip
- (10.98 KiB) 129-mal heruntergeladen
-
- Beiträge: 1159
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Menüprobleme
@Ally Danke für den Code.
In diesem Fall ist eine Actionlist zu statisch. Es geht darum, dynamisch eine List der (richtigen) Fenster anzubieten wobei sich auch die Methode darauf zuzugreifen ändern kann.
Ich habe das jetzt alles in ein eigenes Objekt ausgelagert das sich um die Menüerstellung kümmert.
Die Lösung reiche ich nach wenn die GUI halbwegs braucbar ist.
In diesem Fall ist eine Actionlist zu statisch. Es geht darum, dynamisch eine List der (richtigen) Fenster anzubieten wobei sich auch die Methode darauf zuzugreifen ändern kann.
Ich habe das jetzt alles in ein eigenes Objekt ausgelagert das sich um die Menüerstellung kümmert.
Die Lösung reiche ich nach wenn die GUI halbwegs braucbar ist.