Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.22;
Скачать: CL | DM;

Вниз

CheckListBox1.Canvas   Найти похожие ветки 

 
ОН   (2007-06-27 08:47) [0]

Пишу:
CheckListBox1.Canvas.Pen.Color:=clRed;
CheckListBox1.Canvas.MoveTo(CheckListBox1.Left,CheckListBox1.Top+10);
CheckListBox1.Canvas.LineTo(CheckListBox1.Left+CheckListBox1.Width,CheckListBox1.Top+10);

Никаких линий нет. Почему?


 
MBo ©   (2007-06-27 09:19) [1]

Потому что нужно локальные координаты задавать MoveTo(0, 10);


 
ОН   (2007-06-27 09:23) [2]

Пробовал, не получается.


 
MBo ©   (2007-06-27 09:40) [3]

А у меня получается


 
ОН   (2007-06-27 09:45) [4]

А ты в каком событии пишешь?


 
MBo ©   (2007-06-27 10:19) [5]

По нажатию кнопки.


 
ОН   (2007-06-27 10:37) [6]

И больше ничего не пишешь? Только это?


 
MBo ©   (2007-06-27 10:47) [7]


procedure TForm1.Button1Click(Sender: TObject);
begin
 CheckListBox1.Canvas.Pen.Color:=clRed;
 CheckListBox1.Canvas.MoveTo(0,0);
 CheckListBox1.Canvas.LineTo(CheckListBox1.Width,CheckListBox1.Height);
end;

рисуется диагональная линия


 
ОН   (2007-06-27 10:57) [8]

А если мне надо, чтобы после прорисовки item"ов автоматически в некоторых местах жахнуть линии? В какое событие это писать? Пробовал во время прорисовки в OnItemDraw - ничего нет!


 
ОН   (2007-06-27 11:26) [9]

И вообще, поверх Item"ов можно линии рисовать?


 
MBo ©   (2007-06-27 11:27) [10]

Style должен быть lbOwnerDrawFixed


procedure TForm1.CheckListBox1DrawItem(Control: TWinControl; Index: Integer;
 Rect: TRect; State: TOwnerDrawState);
begin
 with TCheckListbox(Control).Canvas do begin
   Brush.Color := $FFFF shl (8*(Index mod 3));
   FillRect(Rect);
   TextOut(Rect.Left + 2, Rect.Top + 2, TCheckListbox(Control).Items[Index]);
   MoveTo(Rect.Left, Rect.Top);
   LineTo(Rect.Right, Rect.Bottom);
 end;
end;


 
Однокамушкин   (2007-06-27 11:30) [11]


> Пробовал во время прорисовки в OnItemDraw - ничего нет!


А CheckListBox1.Style чему равно? должно быть lbOwnerDrawFixed или lbOwnerDrawVariable...


 
ОН   (2007-06-27 11:48) [12]

Сделал, получилось, но у меня на форме 2 ChekListBox"а, прописал код в обоих, а рисуется только в одном.


 
MBo ©   (2007-06-27 12:12) [13]

>прописал код в обоих
расшифруй


 
ОН   (2007-06-27 12:20) [14]

procedure TForm1.CheckListBox1DrawItem(Control: TWinControl;
 Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
 c,d:string;
begin
with TCheckListbox(Control).Canvas do begin
  FillRect(Rect);
  TextOut(Rect.Left+2, Rect.Top+2, TCheckListbox(Control).Items[Index]);
end;
if Index>0 then
begin
c:=copy(TCheckListbox(Control).Items[Index-1],4,2);
d:=copy(TCheckListbox(Control).Items[Index],4,2);
if c<>d then
begin
with TCheckListbox(Control).Canvas do begin
  Pen.Color:=clRed;
  MoveTo(Rect.Left, Rect.Top);
  LineTo(Rect.Right, Rect.Top);
end;
end;
end;
end;

Это был 1-ый CheckListBox

procedure TForm1.CheckListBox2DrawItem(Control: TWinControl;
 Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
 a,b:string;
begin
with TCheckListbox(Control).Canvas do begin
  FillRect(Rect);
  TextOut(Rect.Left+2, Rect.Top+2, TCheckListbox(Control).Items[Index]);
end;
if Index>0 then
begin
a:=copy(TCheckListbox(Control).Items[Index-1],4,2);
b:=copy(TCheckListbox(Control).Items[Index],4,2);
if a<>b then
begin
with TCheckListbox(Control).Canvas do begin
  Pen.Color:=clRed;
  MoveTo(Rect.Left, Rect.Top);
  LineTo(Rect.Right, Rect.Top);
end;
end;
end;
end;

А это 2-ой


 
clickmaker ©   (2007-06-27 12:24) [15]


> прописал код в обоих, а рисуется только в одном.

зачем двоить одинаковый код?
назначь обоим один обработчик


 
ОН   (2007-06-27 12:27) [16]

А как это?


 
clickmaker ©   (2007-06-27 13:24) [17]

выбери событие onDrawItem и у обеих выбери CheckListBox1DrawItem, а второй потри


 
ОН   (2007-06-27 13:36) [18]

Сделал, и все равно линии только у первого CheckListBox"а. И кстати линии какие-то глючные - щёлкаю на итем, он естественно выделяется как синий прямоугольник (говоря буквально), только прямоугольник это кривой, а если щёлкнуть на итем над или под линией, то линия исчезает.



Страницы: 1 вся ветка

Текущий архив: 2007.07.22;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
15-1182503184
kull
2007-06-22 13:06
2007.07.22
Проблема с dcc32


15-1182793452
oxffff
2007-06-25 21:44
2007.07.22
Codegear to drop winforms designer!!!


1-1179300822
Кирилл_А
2007-05-16 11:33
2007.07.22
Шрифт


15-1182120075
midi
2007-06-18 02:41
2007.07.22
Кто знает смысл этой функции?


15-1182513374
de.
2007-06-22 15:56
2007.07.22
map