Question : Bouton Combobox

Bonjour, le

Since Windows Vista, par exemple, la « barre d'adresse » est comme un Combobox où vous pouvez cliquer dans le

You de l'example

C:\Windows\System32\ de chemin pouvez cliquer dans Windows ou C:\, pas nécessairement le clic dans le button

To voient de ce que je parle, ouvrent dans Windows 7 le panneau de commande et dirigent dans les catégories… dans la barre d'adresse, vous pouvez renvoyer ou choisir un autre chemin en cliquant dans les boutons à l'intérieur du combobox ! le

Somebody connaissent un certain composant qui simulent la même chose ? J'ai déjà vu, mais ne me rappelle pas le nom : /

Regards,
Carlos
class= de

Réponse : Bouton Combobox

Sur des versions de Windows plus tard puis Win95, vous pouvez sous-classe une commande d'édition à
arrêter le message de WM_CTLCOLOREDIT (pour TEdit, il serait
CN_CTLCOLOREDIT à la place) et renvoient une brosse qui est créée d'une carte binaire.
Vous pouvez alors dessiner une carte binaire de quelque type d'affichage de progrès vous vouliez.
Voici un exemple simple :

TForm1 = classe (TForm)
édité
Edit1 : TEdit ;
Timer1 : TTimer ;
procédé FormCreate (expéditeur : TObject)
procédé Timer1Timer (expéditeur : TObject) ;
privé
OldWndProc : TWndMethod ;
procédé EditWndProc (message de variété : TMessage) ;
extrémité ;

procédé TForm1.FormCreate (expéditeur : TObject) ;
commencer
OldWndProc : = Edit1.WindowProc ;
Edit1.WindowProc : = EditWndProc ;
extrémité ;

procédé TForm1.EditWndProc (message de variété : TMessage) ;
variété
BMP : TBitmap ;
r : TRect ;
oldRight : Nombre entier ;
commencer
si Message.Msg = puis CN_CTLCOLOREDIT
commencer
Windows.SetTextColor (Message.WParam,
ColorToRGB (Edit1.Font.Color));
Window.SetBkMode (Message.WParam, TRANSPARENTS) ;

BMP : = TBitmap.Create ;
essai
r : = Edit1.ClientRect ;
BMP. Largeur : = (r.Right - r.Left) ;
BMP. Taille : = (r.Bottom - r.Top) ;

si Edit1.Tag > 0 puis
commencer
oldRight : = r.Right ;
r.Right : = r.Left + ((r.Right - r.Left) *
(Prolongé) (d'Edit1->Tag/100) ;

BMP. Canvas.Brush.Color : = clAqua ;
BMP. Canvas.FillRect (r) ;

r.Left : = r.Right ;
r.Right : = oldRight ;
extrémité ;

BMP. Canvas.Brush.Color : = Edit1.Color ;
BMP. Canvas.FillRect (r) ;

Message.Result : = Windows.CreatePatternBrush (BMP. Poignée) ;
finalement
BMP. Libre ;
extrémité ;

Sortie ;
extrémité ;

OldWndProc (message) ;
extrémité ;

procédé TForm1.Timer1Timer (expéditeur : TObject) ;
commencer
// I Timer1.Interval réglés à 50ms…

si >= 100 d'Edit1.Tag puis
Edit1.Tag : = 0
autrement
Edit1.Tag : = Edit1.Tag + 1 ;

Edit1.Invalidate ;
extrémité ;
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us