![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ооп вопрос [D7]
серж © (2008-02-20 14:39:00)Нужен наследник TComboBox, ну точнее наверное TCustomComboBox, в котором я хочу изменить отрисовку в
procedure CNDrawItem(var Message: TWMDrawItem); message CN_DRAWITEM;
Как это следует сделать? Посмотрите реализацию TCustomComboBox, подскажите пожалуйста.
серж (2008-02-20 14:52:00) [1]Может быть и зря я пытаюсь это сделать. Ниже есть тема, где есть описание самой проблемы: http://www.delphimaster.ru/cgi-bin/forum.pl?id=1203486854&n=18
У меня не получилось исправить ситуацию через OnDrawItem в TComboBox.
В итоге, я хочу исправить обработчик только одной строкой:
procedure TCustomComboBox.CNDrawItem(var Message: TWMDrawItem);
var
State: TOwnerDrawState;
begin
with Message.DrawItemStruct^ do
begin
State := TOwnerDrawState(LongRec(itemState).Lo);
if itemState and ODS_COMBOBOXEDIT 0 then
Include(State, odComboBoxEdit);
if itemState and ODS_DEFAULT 0 then
Include(State, odDefault);
FCanvas.Handle := hDC;
FCanvas.Font := Font;
FCanvas.Brush := Brush;
if (Integer(itemID) >= 0) and (odSelected in State) then
begin
FCanvas.Brush.Color := clHighlight;
FCanvas.Font.Color := clHighlightText
end;
if Integer(itemID) >= 0 then
DrawItem(itemID, rcItem, State) else
FCanvas.FillRect(rcItem);
if Integer(itemID) -1 then
if (odFocused in State) then DrawFocusRect(hDC, rcItem);
FCanvas.Handle := 0;
end;
end;
Palladin (2008-02-20 14:41:00) [2]а зачем? наследоваться необязательно... TComboBox предоставляет для этого все возможности...