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 PopupMenu mit <100 Einträgen darstellen (https://www.delphipraxis.net/172246-popupmenu-mit-100-eintraegen-darstellen.html)

Eppos 20. Dez 2012 13:54

PopupMenu mit <100 Einträgen darstellen
 
Hallo zusammen,

ich stehe vor einem Problem,
Ich fülle zur Laufzeit ein PopupMenu mit ca. 100 Einträgen,
dass Problem ist, das das Popupmenu im oberen und unteren Rand Items verschluckt.

Gibt es eine Möglichkeit einen Umbruch oder so ähnlich anzeigen zu lassen?

Gruß

Thomas Feichtner 20. Dez 2012 13:59

AW: PopupMenu mit <100 Einträgen darstellen
 
Hallo Eppos,

die Darstellung von 100 Einträgen ist sicherlich sehr unübersichtlich. Kannst du diese Menüs nicht in Gruppen zusammenfasen, damit es übersichtlicher bleibt?
Sonst wüsste ich derzeit auch keine Lösung für ein Problem

Eppos 20. Dez 2012 14:02

AW: PopupMenu mit <100 Einträgen darstellen
 
sorry, es müssen so viele sein

Bummi 20. Dez 2012 14:14

AW: PopupMenu mit <100 Einträgen darstellen
 
Du kannst die dazustellende Größe in Pixeln festlegen, hierbei enstehen dann Scrollbuttons wenn nötig.
Delphi-Quellcode:
procedure TForm4.PopupMenu1Popup(Sender: TObject);
var
 mi: tagMENUINFO;
begin
  mi.cbSize := SizeOf(mi);
  mi.fMask := MIM_MAXHEIGHT;
  mi.cyMax := 150;
  SetMenuInfo(popupmenu1.Handle, mi)
end;
MENUINFO structure

Helmi 20. Dez 2012 15:41

AW: PopupMenu mit <100 Einträgen darstellen
 
Du kannst bei einem TMenuItem angeben ob dort gebrochen werden soll, z. B. eine zweite Spalte.
Vielleicht wäre das was für dich.
Property
Delphi-Quellcode:
break := mbBarBreak;
.

[Edit]
Hier ein kleines Beispiel.
Es erzeugt 100 Einträge und nach jedem 10. wird gebreaked
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  S: String;
  Item: TMenuItem;

begin
  for i := 1 to 100 do
    begin
      //
      S := Format('Das ist Item %d', [i]);

      Item := NewItem(S, 0, false, true, nil, 0, ''); //auf das OnClick-Ereignis wird hier jetzt verzichtet (=nil)

      If ((i -1) mod 10) = 0 then
        Item.Break := mbBarBreak;

      PopUpMenu1.Items.Add(Item);
    end;
end;

Furtbichler 20. Dez 2012 18:25

AW: PopupMenu mit <100 Einträgen darstellen
 
Zitat:

Zitat von Eppos (Beitrag 1196252)
sorry, es müssen so viele sein

Nein. Muss nicht. Du bist nur zu faul, umzudenken. ;-)

Verwende eine andere Eingabemetapher oder mach Dir Gedanken über die Usability oder überdenke dein Konzept. Kein Mensch möchte aus 100 Einträgen über ein Popupmenü eine Auswahl tätigen.


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