Текущий архив: 2008.03.23;
Скачать: CL | DM;
Вниз
ооп вопрос Найти похожие ветки
← →
серж (2008-02-20 14:39) [0]Нужен наследник TComboBox, ну точнее наверное TCustomComboBox, в котором я хочу изменить отрисовку в
procedure CNDrawItem(var Message: TWMDrawItem); message CN_DRAWITEM;
Как это следует сделать? Посмотрите реализацию TCustomComboBox, подскажите пожалуйста.
← →
Palladin © (2008-02-20 14:41) [1]а зачем? наследоваться необязательно... TComboBox предоставляет для этого все возможности...
← →
серж (2008-02-20 14:52) [2]Может быть и зря я пытаюсь это сделать. Ниже есть тема, где есть описание самой проблемы: http://delphimaster.net/view/2-1203486854/
У меня не получилось исправить ситуацию через 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;
Страницы: 1 вся ветка
Текущий архив: 2008.03.23;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.005 c