Pergunta : Tecla Combobox

Olá!, o

Since Windows Vista, por exemplo, do “a barra endereço” é como um Combobox onde você possa estalar no

You do example

C:\Windows\System32\ do trajeto possa estalar em Windows ou em C:\, não necessariamente o clique no button

To considera o que eu estou falando aproximadamente, abre em Windows 7 o painel de controle e navega nas categorias… na barra do endereço, você pode retornar ou escolher um outro trajeto estalando nas teclas dentro do combobox! o

Somebody sabe algum componente que simula o mesmos? Eu já vi, mas não recordo o nome: /

Regards,
Carlos
class= do

Resposta : Tecla Combobox

Em versões de Windows mais tarde então Win95, você pode subclass um controle de edição a
interceptar a mensagem de WM_CTLCOLOREDIT (para TEdit, seria
CN_CTLCOLOREDIT preferivelmente) e retornam uma escova que seja criada de um bitmap.
Você pode então extrair um bitmap do que tipo de exposição do progresso você quer.
Está aqui um exemplo simples:

TForm1 = classe (TForm)
publicado
Edit1: TEdit;
Timer1: TTimer;
procedimento FormCreate (remetente: TObject)
procedimento Timer1Timer (remetente: TObject);
confidencial
OldWndProc: TWndMethod;
procedimento EditWndProc (mensagem do var: TMessage);
extremidade;

procedimento TForm1.FormCreate (remetente: TObject);
começar
OldWndProc: = Edit1.WindowProc;
Edit1.WindowProc: = EditWndProc;
extremidade;

procedimento TForm1.EditWndProc (mensagem do var: TMessage);
var
bmp: TBitmap;
r: TRect;
oldRight: Inteiro;
começar
se Message.Msg = CN_CTLCOLOREDIT então
começar
Windows.SetTextColor (Message.WParam,
ColorToRGB (Edit1.Font.Color));
Window.SetBkMode (Message.WParam, TRANSPARENTES);

bmp: = TBitmap.Create;
tentativa
r: = Edit1.ClientRect;
bmp. Largura: = (r.Right - r.Left);
bmp. Altura: = (r.Bottom - r.Top);

se Edit1.Tag > 0 então
começar
oldRight: = r.Right;
r.Right: = r.Left + ((r.Right - r.Left) *
(Estendido) (de Edit1->Tag/100);

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

r.Left: = r.Right;
r.Right: = oldRight;
extremidade;

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

Message.Result: = Windows.CreatePatternBrush (bmp. Punho);
finalmente
bmp. Livre;
extremidade;

Saída;
extremidade;

OldWndProc (mensagem);
extremidade;

procedimento TForm1.Timer1Timer (remetente: TObject);
começar
// I Timer1.Interval ajustados a 50ms…

se >= 100 de Edit1.Tag então
Edit1.Tag: = 0
mais
Edit1.Tag: = Edit1.Tag + 1;

Edit1.Invalidate;
extremidade;
Outras soluções  
 
programming4us programming4us