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 Breite eines Popup-Menüs bestimmen? (https://www.delphipraxis.net/66658-breite-eines-popup-menues-bestimmen.html)

PeterPanino 2. Apr 2006 02:44


Breite eines Popup-Menüs bestimmen?
 
Wie kann man die Breite eines Popup-Menüs unabhängig von der Breite der darin enthaltenen Menüeinträge einstellen? Genauer gesagt benötige ich folgende Funktion:
Delphi-Quellcode:
SetPopupMenuWidth(MyPopupMenu, Max(BreiteDesLaengstenEintrages, 150));

marabu 2. Apr 2006 07:49

Re: Breite eines Popup-Menüs bestimmen?
 
Guten Morgen.

Hat dein Problem einen Bezug zu diesem: klick?

Grüße vom marabu

Nicodius 2. Apr 2006 08:36

Re: Breite eines Popup-Menüs bestimmen?
 
kleine anmerkung

Zitat:

Funktion
das ist eine procedure :zwinker: gibt dir ja nichts zurück

PeterPanino 2. Apr 2006 13:28

Re: Breite eines Popup-Menüs bestimmen?
 
Zitat:

Zitat von marabu
Guten Morgen.

Hat dein Problem einen Bezug zu diesem: klick?

Grüße vom marabu

Nicht direkt, bei dem Link geht es ja nur darum, die Ausdehnung des Popupmenüs zu erfragen.

Um die Breite des Popupmenüs anzupassen, sind grundsätzlich zwei Möglichkeiten vorstellbar:

1. Umgehung der von Windows durchgeführten Breitenanpassung (welche wiederum aus der Breite des längsten Menüeintrages resultiert),

2. z.B. Anfügen sovieler Leerzeichen zum längsten Menüeintrag, bis die gewünschte Breite erreicht ist.

Wenn es für die 1. Möglichkeit einen direkten API-Aufruf gäbe, so wäre mir das lieber (Einsparung einer Menge Rechnerei).

Hawkeye219 2. Apr 2006 13:48

Re: Breite eines Popup-Menüs bestimmen?
 
Hallo,

Du könntest folgendermaßen vorgehen:

1. Weise dem PopupMenü eine Imageliste zu, die auch leer sein darf.
2. Setze die Eigenschaft OwnerDraw des Menüs auf den Wert True.
3. Weise mindestens einem Menüeintrag eine Behandlungsroutine für das Ereignis OnMeasureItem zu.

In der Behandlungsroutine kannst Du dann die gewünschte Breite setzen.

Siehe dazu auch diesen Thread.

Gruß Hawkeye


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