Questione : Tasto Combobox

Ciao, il

Since Windows Vista, per esempio, “la barra di indirizzo„ è come un Combobox dove potete scattarti nel

You del example

C:\Windows\System32\ del percorso potete scattarti in Windows o in C:\, non necessariamente lo scatto nel button

To vede di che cosa sto parlando, apre in Windows 7 il quadro di controllo e traversa nelle categorie… nella barra di indirizzo, potete restituire o scegliere un altro percorso scattandoti nei tasti all'interno del combobox! il

Somebody conosce una certa componente che simula lo stessi? Già ho veduto, ma non ricordo il nome: /

Regards,
Carlos
class= del

Risposta : Tasto Combobox

Sulle versioni di Windows più successivamente allora Win95, potete sottoclasse di casella di modifica a
intercettare il messaggio di WM_CTLCOLOREDIT (per TEdit, sarebbe
CN_CTLCOLOREDIT preferibilmente) e restituiscono una spazzola che è generata da una bitmap.
Potete allora disegnare una bitmap di che cosa tipo di esposizione di progresso volete.
Qui è un esempio semplice:

TForm1 = codice categoria (TForm)
pubblicato
Edit1: TEdit;
Timer1: TTimer;
procedura FormCreate (mittente: TObject)
procedura Timer1Timer (mittente: TObject);
riservato
OldWndProc: TWndMethod;
procedura EditWndProc (messaggio di varietà: TMessage);
estremità;

procedura TForm1.FormCreate (mittente: TObject);
cominciare
OldWndProc: = Edit1.WindowProc;
Edit1.WindowProc: = EditWndProc;
estremità;

procedura TForm1.EditWndProc (messaggio di varietà: TMessage);
varietà
bmp: TBitmap;
r: TRect;
oldRight: Numero intero;
cominciare
se Message.Msg = CN_CTLCOLOREDIT allora
cominciare
Windows.SetTextColor (Message.WParam,
ColorToRGB (Edit1.Font.Color));
Window.SetBkMode (Message.WParam, TRASPARENTI);

bmp: = TBitmap.Create;
prova
r: = Edit1.ClientRect;
bmp. Larghezza: = (r.Right - r.Left);
bmp. Altezza: = (r.Bottom - r.Top);

se Edit1.Tag > 0 allora
cominciare
oldRight: = r.Right;
r.Right: = r.Left + ((r.Right - r.Left) *
(Esteso)/100 (di Edit1->Tag);

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

r.Left: = r.Right;
r.Right: = oldRight;
estremità;

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

Message.Result: = Windows.CreatePatternBrush (bmp. Maniglia);
infine
bmp. Libero;
estremità;

Uscita;
estremità;

OldWndProc (messaggio);
estremità;

procedura TForm1.Timer1Timer (mittente: TObject);
cominciare
// I Timer1.Interval stabiliti a 50ms…

se >= 100 di Edit1.Tag allora
Edit1.Tag: = 0
altrimenti
Edit1.Tag: = Edit1.Tag + 1;

Edit1.Invalidate;
estremità;
Altre soluzioni  
 
programming4us programming4us