Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать listbox полосатым


Страницы:   1 2 3

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 :)


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо