Форум: "Начинающим";
Текущий архив: 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Գ] of TColor = (clHighlight, clHighlightText);
…
Brush.Color := Colors[0];
…
Brush.Color := Colors[1];
…
?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.04.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c