Форум: "Начинающим";
Текущий архив: 2009.02.01;
Скачать: [xml.tar.bz2];
ВнизКак сделать listbox полосатым Найти похожие ветки
← →
buzb © (2008-12-20 18:01) [0]Как сделать listbox полосатым
← →
Поросенок Винни-Пух © (2008-12-20 18:04) [1]OnDrawItem
← →
Leonid Troyanovsky © (2008-12-20 18:13) [2]
> uzb © (20.12.08 18:01)
> Как сделать listbox полосатым
Покрасить полосками?
Не пробывал?
--
Regards, LVT.
← →
KilkennyCat © (2008-12-20 21:29) [3]
> > Как сделать listbox полосатым по вертикали
← →
antonn © (2008-12-20 21:50) [4]Удалено модератором
Примечание: Offtopic
← →
Тын-Дын © (2008-12-21 01:05) [5]
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.LoadFromFile("Unit1.pas");
ListBox1.Style := lbOwnerDrawFixed;
end;
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
L: TListBox;
begin
L := TListBox(Control);
if Odd(Index)
then L.Canvas.Brush.Color := clSilver
else L.Canvas.Brush.Color := clWindow;
L.Canvas.FillRect(Rect);
L.Canvas.Font.Color := clBlack;
L.Canvas.TextOut(Rect.Left+2,Rect.Top+2,L.Items[Index]);
end;
← →
{RASkov} © (2008-12-21 01:32) [6]> [3] KilkennyCat © (20.12.08 21:29)
> > > Как сделать listbox полосатым по вертикали
по вертикали - легко. А вот если наискосок... :)
← →
Германн © (2008-12-21 02:32) [7]
> Тын-Дын © (21.12.08 01:05) [5]
В обработчике события компонента использовать локальную переменную, которая не нужна в принципе?
Это конечно не ошибка. Но - это "три с минусом".
← →
Тын-Дын © (2008-12-21 02:42) [8]
> Германн © (21.12.08 02:32) [7]
> > Тын-Дын © (21.12.08 01:05) [5]В обработчике события
> компонента использовать локальную переменную, которая не
> нужна в принципе?Это конечно не ошибка. Но - это "три с
> минусом".
Снова ночной бред?
← →
Тын-Дын © (2008-12-21 02:45) [9]Хоть бы не пытался свой догматизм новичкам внушать...
← →
Тын-Дын © (2008-12-21 02:53) [10]
> Германн ©
Извини, не выдержал.
Постоянный флуд от тебя достаёт бывает.
← →
Игорь Шевченко © (2008-12-21 03:39) [11]Тын-Дын © (21.12.08 02:42) [8]
Тут кто-то долго с хамством на форуме боролся в ветке в потрепаловке, не напомнишь, кто ?
И заодно предлагал банить не сразу, а после предупреждения. Так вот я тебя предупреждаю :)
← →
Тын-Дын © (2008-12-21 03:46) [12]
> Игорь Шевченко © (21.12.08 03:39) [11]
> Тын-Дын © (21.12.08 02:42) [8] Тут кто-то долго с хамством
> на форуме боролся в ветке в потрепаловке, не напомнишь,
> кто ?И заодно предлагал банить не сразу, а после предупреждения.
> Так вот я тебя предупреждаю :)
По этому поводу лучше в той ветке в потрепаловке всё же...
← →
Германн © (2008-12-21 04:10) [13]
> Тын-Дын © (21.12.08 02:53) [10]
>
>
> > Германн ©
>
>
> Извини, не выдержал.
> Постоянный флуд от тебя достаёт бывает.
>
Хотел было извинить, но передумал.
Примите и прочь!
← →
Riply © (2008-12-21 06:08) [14]> [11] Игорь Шевченко © (21.12.08 03:39)
Игорь, а Вы тоже решили присоединиться к славному сообществу "полуночников" ?
Sorry за оффтоп, но уж очень любопытно стало :)
← →
Leonid Troyanovsky © (2008-12-21 15:13) [15]
> Тын-Дын © (21.12.08 01:05) [5]
> L.Canvas.TextOut(Rect.Left+2,Rect.Top+2,L.Items[Index]);
+2 - это что?
--
Regards, LVT.
← →
Тын-Дын © (2008-12-21 15:23) [16]
> Leonid Troyanovsky © (21.12.08 15:13) [15]
> > Тын-Дын © (21.12.08 01:05) [5] > L.Canvas.TextOut(Rect.
> Left+2,Rect.Top+2,L.Items[Index]);+2 - это что?
Ну как что? Отступ по-умолчанию.
Если нужно другой - можно и другой сделать.
А в данном конкретном случае это принципиальный вопрос?
← →
Leonid Troyanovsky © (2008-12-21 15:30) [17]
> Тын-Дын © (21.12.08 15:23) [16]
> А в данном конкретном случае это принципиальный вопрос?
Отступ так отступ.
Просто интересуюсь, может чего пропустил из новых веяний.
Кста, а на зачем такой отступ по умолчанию?
--
Regards, LVT.
← →
Тын-Дын © (2008-12-21 15:34) [18]
> Кста, а на зачем такой отступ по умолчанию?
С другим отступом отвратно выглядит.
← →
Тын-Дын © (2008-12-21 15:34) [19]Где-то в справке описано...
← →
Leonid Troyanovsky © (2008-12-21 15:37) [20]
> Тын-Дын © (21.12.08 15:34) [18]
> С другим отступом отвратно выглядит.
Не знаю - на вкус и цвет фломастеры разные.
+2 залезет на рамку фокуса, если по умолчанию.
--
Regards, LVT.
← →
Тын-Дын © (2008-12-21 16:18) [21]
> +2 залезет на рамку фокуса, если по умолчанию.
Да вроде никуда ничего не залазит.
Смещение 1 - слишком близко к линиям грида... 2 - в самы раз.
← →
Leonid Troyanovsky © (2008-12-21 16:23) [22]
> Тын-Дын © (21.12.08 16:18) [21]
> Смещение 1 - слишком близко к линиям грида... 2 - в самы
> раз.
Может в гриде и не залазит, а в listbox - в самый раз.
D6, TD with XP.
--
Regards, LVT.
← →
Denis__ © (2008-12-21 16:31) [23]
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
begin
with TListBox(Control) do
begin
if Odd(Index) then
Canvas.Brush.Color := clSilver
else
Canvas.Brush.Color := clWindow;
Canvas.FillRect(Rect);
Canvas.Font.Color := clBlack;
Canvas.TextOut(Rect.Left+2,Rect.Top,Items[Index]);
end;
end;
Так не правильней будет, нет?
← →
Leonid Troyanovsky © (2008-12-21 16:38) [24]
> Denis__ © (21.12.08 16:31) [23]
> Так не правильней будет, нет?
Не знаю. Для правильности надо еще исследовать множественное
выделение и т.д. и т.п. Но, эстетичней - да :)
--
Regards, LVT.
← →
{RASkov} © (2008-12-21 16:39) [25]> Так не правильней будет, нет?
А по мне вот так красивше:procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
if Control is TlistBox then
with TListBox(Control), Canvas do begin
if Odd(Index) then Brush.Color := clSilver
else Brush.Color := clWindow;
FillRect(Rect);
//Font.Color := clBlack; // Зачем?
TextOut(Rect.Left+2, Rect.Top, Items[Index]);
end;
end;
тут и в самом деле - разговор о фломастерах....)
← →
Leonid Troyanovsky © (2008-12-21 16:45) [26]
> {RASkov} © (21.12.08 16:39) [25]
> > Так не правильней будет, нет?
> if Control is TlistBox then
Так, конечно, правильней, а остальное, дейс-но, вкусовщина.
Я бы даже так сделал: with Control as TlistBox do,
дабы неповадно было.
--
Regards, LVT.
← →
Smile (2008-12-21 16:55) [27]А по мне, так в {RASkov} © (21.12.08 16:39) [25], да и ранее
FillRect(Rect);
TextOut(Rect.Left+2, Rect.Top, Items[Index]);
это лишнее, не вижу необходимости :(
← →
Leonid Troyanovsky © (2008-12-21 17:12) [28]
> Smile (21.12.08 16:55) [27]
> FillRect(Rect);
> TextOut(Rect.Left+2, Rect.Top, Items[Index]);
> это лишнее, не вижу необходимости :(
А как же +2? Это ж удовлетворяет эстетические потребности :)
Насчет излишеств: отметил недавно у уважаемоего здравомыслящего
дельфера с солидным стажем обниление полей в конструкторе.
На что он резонно ответил: можете считать это проявлением
моей паранойи, но как делал, так и буду делать ;)
--
Regards, LVT.
← →
Denis__ © (2008-12-21 17:14) [29]
> Но, эстетичней - да :)
Пытаюсь писать код, чтобы он был красвее, понятнее чтоль))
> with TListBox(Control), Canvas do
Нам преподаватель отсоветовал так делать. Ну, я понимаю что это дело каждого, но так не пишу)
← →
Leonid Troyanovsky © (2008-12-21 17:25) [30]
> Denis__ © (21.12.08 17:14) [29]
> Пытаюсь писать код, чтобы он был красвее, понятнее чтоль))
Главное, чтобы он был понятен всем, а не только вам на двоих
с компилятором ;)
С помощью with можно создавать изящные конструкции (догоняя C
по возможности определить нечто нужное в нужном месте),
но, к сожалению, в оных местах не очень удобна отладка.
Да и воспринимаются они читающими не одинаково.
--
Regards, LVT.
← →
KilkennyCat © (2008-12-21 20:11) [31]
> Главное, чтобы он был понятен всем,
для этого придумали комментарии ;)
← →
antonn © (2008-12-21 21:46) [32]
> antonn © (20.12.08 21:50) [4]
>
> Удалено модератором
> Примечание: Offtopic
>
да неужели? а пост, к которому это было написано не оффтопик?
> Leonid Troyanovsky © (21.12.08 16:38) [24]
>
>
> > Denis__ © (21.12.08 16:31) [23]
>
> > Так не правильней будет, нет?
>
> Не знаю. Для правильности надо еще исследовать множественное
> выделение и т.д. и т.п. Но, эстетичней - да :)
Нет. Это не будет эстетичней. Потому что в списках текст обычно выравнивается по центру или по нижней границе.
← →
{RASkov} © (2008-12-21 23:19) [33]> [32] antonn © (21.12.08 21:46)
> Нет. Это не будет эстетичней. Потому что в списках текст обычно выравнивается по центру или по нижней границе.
По моему про эстетичность написания кода говорилось, а не результат работы алгоритма в ListBox1DrawItem...
Если ты конечно сделал укор на то, что Rect.Top в [23] остался без +2 :)
← →
antonn © (2008-12-22 00:33) [34]
> {RASkov} © (21.12.08 23:19) [33]
пользуясь случаем, я, как и все мастера, ловко уйду от ответа и не буду пояснять, что я хотел сказать %)
← →
{RASkov} © (2008-12-22 01:06) [35]> [34] antonn © (22.12.08 00:33)
> пользуясь случаем,
Я уж было подумал, что приветы сейчас начнешь передавать :)
← →
antonn © (2008-12-22 01:17) [36]не, приветы это "личная переписка" :)
и дабы не сочли пост оффтопом, немного полезной информации :))
Выравнивание по средине строки: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;
← →
Германн © (2008-12-22 01:26) [37]2 antonn © (22.12.08 01:17) [36]
и все прочие, кто причастен. А откуда возник отступ именно на 2 пикселя от левой границы области вывода?
Не. Ну я тоже так делаю в OnDrawXXX. Но вот почему именно так?
:)
← →
{RASkov} © (2008-12-22 01:30) [38]> [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"а сместить левую границу....
← →
{RASkov} © (2008-12-22 01:32) [39]> [37] Германн © (22.12.08 01:26)
Загляни в метод DrawItem у TCustomListBox и все станет ясно :)
← →
имя (2008-12-22 01:35) [40]Удалено модератором
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.02.01;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.005 c