Cuestión : Botón Combobox

¡Hola, el

Since Windows Vista, por ejemplo, la “barra de la dirección” es como un Combobox donde usted puede chascar en el

You del example

C:\Windows\System32\ de la trayectoria puede chascar en Windows o C:\, el tecleo en el button

To considera de lo que estoy hablando, abre en Windows 7 el panel de control y navega no no necesario en categorías… en la barra de la dirección, usted puede volver o elegir otra trayectoria chascando en los botones dentro del combobox! ¿el

Somebody sabe un cierto componente que simula iguales? Vi ya, pero no recuerdo el nombre: /

Regards,
Carlos
class= del

Respuesta : Botón Combobox

En versiones de Windows más adelante entonces Win95, usted puede subclase un control de corregir a
interceptar el mensaje de WM_CTLCOLOREDIT (para TEdit, estaría
CN_CTLCOLOREDIT en lugar de otro) y vuelven un cepillo que se cree de una BITMAP.
Usted puede entonces dibujar una BITMAP de cualquier tipo de exhibición del progreso usted quiere.
Aquí está un ejemplo simple:

TForm1 = clase (TForm)
publicado
Edit1: TEdit;
Timer1: TTimer;
procedimiento FormCreate (remitente: TObject)
procedimiento Timer1Timer (remitente: TObject);
privado
OldWndProc: TWndMethod;
procedimiento EditWndProc (mensaje del var: TMessage);
extremo;

procedimiento TForm1.FormCreate (remitente: TObject);
comenzar
OldWndProc: = Edit1.WindowProc;
Edit1.WindowProc: = EditWndProc;
extremo;

procedimiento TForm1.EditWndProc (mensaje del var: TMessage);
var
bmp: TBitmap;
r: TRect;
oldRight: Número entero;
comenzar
si Message.Msg = CN_CTLCOLOREDIT después
comenzar
Windows.SetTextColor (Message.WParam,
ColorToRGB (Edit1.Font.Color));
Window.SetBkMode (Message.WParam, TRANSPARENTES);

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

si Edit1.Tag > 0 entonces
comenzar
oldRight: = r.Right;
r.Right: = r.Left + ((r.Right - r.Left) *
(Extendido ()/100 de Edit1->Tag);

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

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

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

Message.Result: = Windows.CreatePatternBrush (bmp. Manija);
finalmente
bmp. Libre;
extremo;

Salida;
extremo;

OldWndProc (mensaje);
extremo;

procedimiento TForm1.Timer1Timer (remitente: TObject);
comenzar
// I Timer1.Interval determinados a 50ms…

si >= 100 de Edit1.Tag entonces
Edit1.Tag: = 0

Edit1.Tag: = Edit1.Tag + 1;

Edit1.Invalidate;
extremo;
Otras soluciones  
 
programming4us programming4us