![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать listbox полосатым
buzb © (2008-12-20 18:01:00)Как сделать listbox полосатым
Тын-Дын (2008-12-22 10:00:00) [1]
> Riply © (22.12.08 04:15) [50]
> > [49] Тын-Дын © (22.12.08 03:20)
>
> >> Но пообвыклась и стала таких местах либо смотреть в WatchList-
>
> >> е, либовременно дописывать в конец процедуры обращение
> к
> >> подопытной структуре.
>
> > Вот для того в [5] и используется промежуточная короткая
> переменная.
> > Добавить недолго, а удобство есть.
>
> imho, ListBox не относится к тем структурам,
> чьи поля интересны в период отладки :)
А вводить названия методов и полей вручную? Удобнее из выпадающего списка.
При этом всё делается уже на автомате.
В этот раз TListBox, в следующий раз значительно более сложная структура...
KilkennyCat (2008-12-22 04:17:00) [2]Удалено модератором
Riply (2008-12-22 04:15:00) [3]> [49] Тын-Дын © (22.12.08 03:20)
>> Но пообвыклась и стала таких местах либо смотреть в WatchList-
>> е, либовременно дописывать в конец процедуры обращение к
>> подопытной структуре.
> Вот для того в [5] и используется промежуточная короткая переменная.
> Добавить недолго, а удобство есть.
imho, ListBox не относится к тем структурам,
чьи поля интересны в период отладки :)
Тын-Дын (2008-12-22 03:20:00) [4]
> Но пообвыклась и стала таких местах либо смотреть в WatchList-
> е, либовременно дописывать в конец процедуры обращение к
> подопытной структуре.
Вот для того в [5] и используется промежуточная короткая переменная.
Добавить недолго, а удобство есть.
Но это конечно как кому нравится...
> Игорь Шевченко © (22.12.08 02:27) [47]
> а без custom( точнее, Owner) Draw на Listbox-е рисовать
> не очень удобно. Точнее, совсем неудобно
А-а. ну это понятно.
ListBox1.Style := lbOwnerDrawFixed;
А почему +2? Да чтобы выглядело как стандартная отрисовка. Ведь у автора вопрос был в том, чтобы закрасить строки...
Riply (2008-12-22 02:56:00) [5]> [30] Leonid Troyanovsky © (21.12.08 17:25)
> С помощью with можно создавать изящные конструкции (догоняя C
> по возможности определить нечто нужное в нужном месте),
> но, к сожалению, в оных местах не очень удобна отладка.
Сначала мне это (не очень удобна отладка) тоже сильно мешало.
Но пообвыклась и стала таких местах либо смотреть в WatchList-е, либо
временно дописывать в конец процедуры обращение к подопытной структуре.
Игорь Шевченко (2008-12-22 02:27:00) [6]а без custom( точнее, Owner) Draw на Listbox-е рисовать не очень удобно. Точнее, совсем неудобно
Тын-Дын (2008-12-22 02:13:00) [7]Э-э... Где в теме звучит OnCustomDraw? Я что-то не пойму. -(
Германн (2008-12-22 02:00:00) [8]
> {RASkov} © (22.12.08 01:46) [44]
>
> > [41] Германн © (22.12.08 01:40)
> > Сабж относится к теме "OnCustomDraw". Дык почему же все
> советуют именно +2?
>
> Ну да, дошло :) Кустомдрав, а советуют по стандарту, так
> что ли? :)
>
Так. Ну или примерно так. :)
Но тут ещё и Костя влез.
> KilkennyCat © (22.12.08 01:41) [42]
{RASkov} (2008-12-22 01:46:00) [9]> [41] Германн © (22.12.08 01:40)
> Сабж относится к теме "OnCustomDraw". Дык почему же все советуют именно +2?
Ну да, дошло :) Кустомдрав, а советуют по стандарту, так что ли? :)
{RASkov} (2008-12-22 01:43:00) [10]> [41] Германн © (22.12.08 01:40)
> Дык почему же все советуют именно +2?
Ну там же(в VCL) тоже смещение в 2 пиксела используется, вот чтобы выглядело как стандартное рисование и советуют теже самые 2 пиксела отступать... Имхо конечно, так как OnDrawXXX на то и ОнДрав, что бы там рисовать как раз не стандартно :)
KilkennyCat (2008-12-22 01:41:00) [11]
> Дык почему же все советуют именно +2?
я не советовал. у меня стиль флэт.
Германн (2008-12-22 01:40:00) [12]
> {RASkov} © (22.12.08 01:32) [39]
>
> > [37] Германн © (22.12.08 01:26)
>
> Загляни в метод DrawItem у TCustomListBox и все станет ясно
> :)
>
Глядел. Видел. Понимал. Ну и что?
Сабж относится к теме "OnCustomDraw". Дык почему же все советуют именно +2?
(2008-12-22 01:35:00) [13]Удалено модератором
{RASkov} (2008-12-22 01:32:00) [14]> [37] Германн © (22.12.08 01:26)
Загляни в метод DrawItem у TCustomListBox и все станет ясно :)
{RASkov} (2008-12-22 01:30:00) [15]> [36] antonn © (22.12.08 01:17)
> canvas.TextOut(Rect.Left+2, (((Rect.Bottom-Rect.Top)-canvas.TextHeight(Items[Index])) div 2)+Rect.Top, Items[Index]);
Или так:
DrawText(canvas.Handle, PChar(Items[Index]), -1, Rect, DT_LEFT or DT_SINGLELINE or DT_VCENTER{или DT_BOTTOM});
И тут тоже можно отстут в 2 пиксела слева сделать, достаточно у Rect'а сместить левую границу....
Германн (2008-12-22 01:26:00) [16]2 antonn © (22.12.08 01:17) [36]
и все прочие, кто причастен. А откуда возник отступ именнона 2 пикселя от левой границы области вывода?
Не. Ну я тоже так делаю в OnDrawXXX. Но вот почему именно так?
:)
antonn (2008-12-22 01:17:00) [17]не, приветы это "личная переписка" :)
и дабы не сочли пост оффтопом, немного полезной информации :))
Выравнивание по средине строки:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with (Control as TlistBox) do begin
if Odd(Index) then
canvas.Brush.Color:=clSilver
else
canvas.Brush.Color:=clWindow;
canvas.FillRect(Rect);
canvas.TextOut(Rect.Left+2, (((Rect.Bottom-Rect.Top)-canvas.TextHeight(Items[Index])) div 2)+Rect.Top, Items[Index]);
end;
end;
{RASkov} (2008-12-22 01:06:00) [18]> [34] antonn © (22.12.08 00:33)
> пользуясь случаем,
Я уж было подумал, что приветы сейчас начнешь передавать :)
antonn (2008-12-22 00:33:00) [19]
> {RASkov} © (21.12.08 23:19) [33]
пользуясь случаем, я, как и все мастера, ловко уйду от ответа и не буду пояснять, что я хотел сказать %)
{RASkov} (2008-12-21 23:19:00) [20]> [32] antonn © (21.12.08 21:46)
> Нет. Это не будет эстетичней. Потому что в списках текст обычно выравнивается по центру или по нижней границе.
По моему про эстетичность написания кода говорилось, а не результат работы алгоритма в ListBox1DrawItem...
Если ты конечно сделал укор на то, что Rect.Top в [23] остался без +2 :)