Вопрос : Кнопка Combobox

Здравствулте!, перспектива

Since Windows, например, «адвокатское сословие адреса» как Combobox где вы можете щелкнуть в

You example

C:\Windows\System32\ курса можете щелкнуть в Windows или C:\, обязательно щелчок в отсталом button

To видит я говорю около, раскрывает в Windows 7 пульт управления и проводит в категориях… в адвокатском сословии адреса, вы можете возвратить или выбрать другой курс путем щелкать в кнопках внутри combobox!

Somebody знает нескольк компонента имитирует эти же? Я уже увидел, но не вспоминаю имя: /

Regards,
Carlos
class=

Ответ : Кнопка Combobox

На вариантах Windows более поздно после этого Win95, вы можете subclass управление редактировать к
перехватите сообщение WM_CTLCOLOREDIT (для TEdit, оно был бы
CN_CTLCOLOREDIT вместо) и возвращают щетку создана от поэлементного карты.
Вы можете после этого нарисовать поэлементное карту любой тип индикации прогресса вы хотите.
Здесь просто пример:

TForm1 = тип (TForm)
опубликовано
Edit1: TEdit;
Timer1: TTimer;
процедура FormCreate (прислужник: TObject)
процедура Timer1Timer (прислужник: TObject);
приватно
OldWndProc: TWndMethod;
процедура EditWndProc (сообщение var: TMessage);
конец;

процедура TForm1.FormCreate (прислужник: TObject);
начните
OldWndProc: = Edit1.WindowProc;
Edit1.WindowProc: = EditWndProc;
конец;

процедура TForm1.EditWndProc (сообщение var: TMessage);
var
bmp: TBitmap;
r: TRect;
oldRight: Интежер;
начните
если Message.Msg = CN_CTLCOLOREDIT после этого
начните
Windows.SetTextColor (Message.WParam,
ColorToRGB (Edit1.Font.Color));
Window.SetBkMode (Message.WParam, ПРОЗРАЧНЫЕ);

bmp: = TBitmap.Create;
попытка
r: = Edit1.ClientRect;
bmp. Ширина: = (r.Right - r.Left);
bmp. Высота: = (r.Bottom - r.Top);

если Edit1.Tag > 0 после этого
начните
oldRight: = r.Right;
r.Right: = r.Left + ((r.Right - r.Left) *
(Удлинено) (Edit1->Tag/100);

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

r.Left: = r.Right;
r.Right: = oldRight;
конец;

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

Message.Result: = Windows.CreatePatternBrush (bmp. Ручка);
окончательно
bmp. Свободно;
конец;

Выход;
конец;

OldWndProc (сообщение);
конец;

процедура TForm1.Timer1Timer (прислужник: TObject);
начните
// iий установленные Timer1.Interval к 50ms…

если >= 100 Edit1.Tag после этого
Edit1.Tag: = 0
еще
Edit1.Tag: = Edit1.Tag + 1;

Edit1.Invalidate;
конец;
Другие решения  
  •  Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
  •  Шнур ошибки в блоке задвижки?
  •  сколько вариант сервера SQL на одной машине
  •  Внешний вид 2007 не может архивный файл открытой сети сохраненный
  •  Активно директория DNS записывает вопрос
  •  Отчет о доступа 2010 экспорта к CSV с коллекторами?
  •  Прокладчик OCE 9400 не начинает
  •  как добавить десятичное место в формуле в отчете о кристалла seagate
  •  Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
  •  VB6 к VS2010 - консультации тренировки?
  •  
    programming4us programming4us