J'utilise Delphi7 et j'aimerais avoir un ComboBox avec des éléments de séparation (comme dans les menus contextuels).Création d'un contrôle ComboBox avec un ou plusieurs éléments de séparation?
Je l'ai vu magnifiquement mis en œuvre dans Mozilla Sunbird (je sais, ce n'est pas Delphi ...) de la façon suivante:
L'élément de séparation est une simple ligne grise dessiné dans le centre de l'élément
Si vous passez la souris sur le séparateur avec la souris, la sélection ne apparaissent
Si l'utilisateur clique sur le separato r, il n'est pas non plus sélectionné et la combobox ne fait pas de gros plan.
Le numéro 1 pourrait être implémenté en utilisant DrawItem. Je pourrais vivre sans numéro 2 parce que je n'en ai aucune idée.
Pour le numéro 3, je demande votre aide. J'ai compris que juste après avoir fermé un message CBN_CLOSEUP est envoyé à la liste déroulante.
J'ai pensé à accrocher le proc de la fenêtre et si CBN_CLOSEUP est envoyé à un certain combobox puis en le contrecarrant. Mais je ne suis pas sûr si c'est la meilleure solution, ou peut-être il y a d'autres, des manières plus élégantes? Quelle que soit la solution, j'aimerais avoir un ComboBox standard qui prend en charge correctement les thèmes WinXP/Vista/7.
Merci!
Edit: Pour un composant de travail s'il vous plaît voir ce fil:
Can you help translating this very small C++ component to Delphi?
Vous avez demandé une zone de liste déroulante standard, mais vous avez également demandé une zone de liste déroulante dotée de séparateurs. Ce sont des demandes mutuellement exclusives. La zone de liste déroulante de Mozilla peut le faire parce que ce n'est pas un contrôle fourni par le système d'exploitation; Mozilla fournit tout son propre code pour tous ses contrôles afin qu'il puisse fonctionner de manière cohérente sur toutes les plateformes supportées. –
Les widgets de Mozilla sont une source constante d'irritation pour moi. Ils atteignent la cohérence dans le mauvais sens, ce qui est cohérent sur toutes les plates-formes, mais les utilisateurs ont tendance à fonctionner sur une plate-forme unique. La cohérence que vous voulez vraiment est avec la plate-forme native et ils ne peuvent pas le faire. Y a-t-il autre chose que Qt qui peut atteindre des widgets multiplateformes mais natifs? –
La comboxbox améliorée de Mozilla s'intègre merveilleusement dans l'environnement Win et ajoute une idée géniale avec les séparateurs combobox. Mais je suis d'accord avec toi que iTunes/Safari pour Windows est très mauvais et déroutant (bien que son but soit évidemment de faciliter la transition d'un PC Win vers un Mac) ... – Steve