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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.007 c
2-1205818220
Stepper
2008-03-18 08:30
2008.04.13
Как из String выбрать данные определенного формата?


15-1204196510
Pos Eleptant (c)
2008-02-28 14:01
2008.04.13
Bitmap в Grid


2-1205939766
Vask
2008-03-19 18:16
2008.04.13
Как сделать приложение Delphi автономным?


2-1205908465
zorik
2008-03-19 09:34
2008.04.13
Доступ класса к главному класса и к его свойствам


2-1205843333
Muson_1984
2008-03-18 15:28
2008.04.13
Конвертация





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