Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.02.03;
Скачать: [xml.tar.bz2];

Вниз

TListBox, CNDrawItem   Найти похожие ветки 

 
Pavelq   (2008-01-05 23:07) [0]

Мне захотелось из TListBox убрать выделение фокуса (избавиться от прорисовки DrawFocusRect), я попробовал сделать наследника TListBox:
 TListBox = class(StdCtrls.TListBox)
 private
   procedure CNDrawItem(var Message: TWMDrawItem); message CN_DRAWITEM;
 end;


В котором обработать CN_DRAWITEM по своему, без вызова DrawFocusRect. (Получается, что мне нужно избавиться только от одной строки из оригинала)

procedure TCustomListBox.CNDrawItem(var Message: TWMDrawItem);
var
 State: TOwnerDrawState;
begin
 with Message.DrawItemStruct^ do
 begin
   State := TOwnerDrawState(LongRec(itemState).Lo);
   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 odFocused in State then DrawFocusRect(hDC, rcItem);
   FCanvas.Handle := 0;
 end;
end;

Но понятное дело мне не удается реализовать задумку, ибо например FCanvas находится в private у оргинала, и у меня нет доступа к нему из наследника.

Что в таком случае сделть?


 
Джо ©   (2008-01-05 23:13) [1]

Рисуй в обработчике OnDrawItem при Style := OwnerDrawFixed.


 
{RASkov} ©   (2008-01-05 23:16) [2]

> [0] Pavelq   (05.01.08 23:07)

Зато остается Canvas :) Чем он тебе не угодил?)
ЗЫ Букавку F убери....


 
{RASkov} ©   (2008-01-05 23:17) [3]

Кстати... да, что бы заного отрисовать содержимое листбокса, незачем делать наследника.... См [1]



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.02.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.056 c
2-1200037867
Washington
2008-01-11 10:51
2008.02.03
Работа с DLL


2-1199798648
AntonUSAnoV
2008-01-08 16:24
2008.02.03
Помогите!


3-1190718421
Nemec
2007-09-25 15:07
2008.02.03
Обновление данных на форме под InterBase


15-1198677259
Ega23
2007-12-26 16:54
2008.02.03
поделитесь ссылкой


15-1198898851
Андрей
2007-12-29 06:27
2008.02.03
Профайлер для Delphi (Win32)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский