Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.13;
Скачать: CL | DM;

Вниз

TListBox +OnDrawItem   Найти похожие ветки 

 
WildBoolean   (2008-03-20 15:12) [0]

Есть пару вопросов.

У меня такой код:
const
 Colors: array[0..1] of TColor = (clHighlight, clHighlightText);
begin
 with TListBox(Control).Canvas do
 begin
   Brush.Style := bsSolid;
   if odSelected in State then
   begin
     Brush.Color := Colors[0];
     FillRect(Rect);
     Brush.Color := Colors[1];
     Windows.DrawFocusRect(Handle, Rect);
   end else
   begin
     Brush.Color := clWindow;
     FillRect(Rect);
   end;
   Rect.Top := Rect.Top + ???
   Rect.Left := Rect.Left + 2;

   Brush.Style := bsClear;
   Font.Color := Colors[Byte(odSelected in State)];

   DrawText(Handle, PChar(TListBox(Control).Items[Index]),
            Length(TListBox(Control).Items[Index]), Rect, 0);
 end;          
end;


1. Жирным отмечена отрисовка фокуса, но если я во время установки фокуса переключусь с TListBox на любой другой контролл, то фокус исчезает, а на его месте появляется желтая рамка. Как убрать эту рамку?

2. Как вычислить вертикальныю середину у Rect? Хочу вывести текс по середине (Отмечено жирным второй раз)

Спасибо.


 
{RASkov} ©   (2008-03-20 15:17) [1]

> Rect.Top := Rect.Top + ???

Rect.Top := Rect.Top + ((Rect.Bottom-Rect.Top) div 2);


 
{RASkov} ©   (2008-03-20 15:19) [2]

> Хочу вывести текс по середине

Только тебе нужно еще и высоту текста делить пополам и.... ну понял, да? :)


 
WildBoolean   (2008-03-20 15:35) [3]

Спасибо, это понял.

Остался только первый вопрос.


 
Игорь Шевченко ©   (2008-03-20 16:42) [4]


> 1. Жирным отмечена отрисовка фокуса, но если я во время
> установки фокуса переключусь с TListBox на любой другой
> контролл, то фокус исчезает, а на его месте появляется желтая
> рамка. Как убрать эту рамку?


В OnDrawItem бесполезно рисовать фокус

RTFS StdCtrls.pas

Если хочется странного, переписывай метод CNDrawItem у своего наследника T[Custom]ListBox или подменяй его оконную процедуру

Пример в http://code.progler.ru/get/193


 
Kolan ©   (2008-03-20 16:44) [5]

HideSelection := False; не поможет?


 
Kolan ©   (2008-03-20 17:00) [6]

У меня вопрос. *Тянет руку.

Вот это зачем все?
const
Colors: array[0&#1331] of TColor = (clHighlight, clHighlightText);
&#133
 Brush.Color := Colors[0];
 &#133
 Brush.Color := Colors[1];
&#133

?



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

Текущий архив: 2008.04.13;
Скачать: CL | DM;

Наверх




Память: 0.45 MB
Время: 0.007 c
15-1204224347
Kolan
2008-02-28 21:45
2008.04.13
Компоненты(виджеты) для touch screen, сужествуют ли такие?


15-1203706540
DiamondShark
2008-02-22 21:55
2008.04.13
А у меня дочка родилась.


2-1205745677
usr
2008-03-17 12:21
2008.04.13
эдит


2-1205923008
Pavelkq
2008-03-19 13:36
2008.04.13
OnRightClick для CheсkListBox


2-1205838616
asdf2
2008-03-18 14:10
2008.04.13
CalculatedFields





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский