Vraag : Knoop Combobox

Hello, is het Uitzicht van Vensters

Since, bijvoorbeeld, de „bar van het Adres“ als een Combobox waar u in de weg example

C:\Windows\System32\

You kunt klikken kunt in Vensters klikken of C:\, niet noodzakelijk in achterwaartse button

To klikken welk ik over spreek, opent in Vensters 7 het controlebord en navigeert in categorieën… in de adresbar ziet, kunt u een andere weg terugkeren of kiezen door in de knopen binnen combobox te klikken!

Somebody kent één of andere component die het zelfde simuleert? Ik zag, maar herinner reeds niet de naam: /

Regards,
Carlos

Antwoord : Knoop Combobox

Op versies van Vensters later toen Win95, kunt u subklasse uitgeeft controle aan
onderschep het Wm_ctlcoloredit- bericht (voor TEdit, zou het zijn
CN_CTLCOLOREDIT in plaats daarvan) en keer een borstel terug die van bitmap wordt gecre�ërd.
U kunt bitmap van het type van vooruitgangsvertoning dan trekken u wilt.
Hier is een eenvoudig voorbeeld:

TForm1 = klasse (TForm)
gepubliceerd
Edit1: TEdit;
Timer1: TTimer;
procedure FormCreate (Afzender: TObject)
procedure Timer1Timer (Afzender: TObject);
privé
OldWndProc: TWndMethod;
procedure EditWndProc (var Bericht: TMessage);
eind;

procedure TForm1.FormCreate (Afzender: TObject);
begin
OldWndProc: = Edit1.WindowProc;
Edit1.WindowProc: = EditWndProc;
eind;

procedure TForm1.EditWndProc (var Bericht: TMessage);
var
bmp: TBitmap;
r: TRect;
oldRight: Geheel;
begin
als Message.Msg = CN_CTLCOLOREDIT toen
begin
Windows.SetTextColor (Message.WParam,
ColorToRGB (Edit1.Font.Color));
Window.SetBkMode (TRANSPARANTE Message.WParam,);

bmp: = TBitmap.Create;
probeer
r: = Edit1.ClientRect;
bmp. Breedte: = (r.Right - r.Left);
bmp. Hoogte: = (r.Bottom - r.Top);

als Edit1.Tag > 0 toen
begin
oldRight: = r.Right;
r.Right: = r.Left + ((r.Right - r.Left) *
(Uitgebreid (Edit1->Tag)/100);

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

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

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

Message.Result: = Windows.CreatePatternBrush (bmp. Behandel);
tot slot
bmp. Vrij;
eind;

Uitgang;
eind;

OldWndProc (Bericht);
eind;

procedure TForm1.Timer1Timer (Afzender: TObject);
begin
// plaatste ik Timer1.Interval aan 50ms…

als Edit1.Tag >= 100 toen
Edit1.Tag: = 0
anders
Edit1.Tag: = Edit1.Tag + 1;

Edit1.Invalidate;
eind;
Andere oplossingen  
 
programming4us programming4us