Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.049 c
2-1182846767
zvm
2007-06-26 12:32
2007.07.22
Неожиданное-рядом!! (или как прервать программу?)


2-1182675229
Ral'f
2007-06-24 12:53
2007.07.22
Quick Report (DataField)


15-1182259262
oldman
2007-06-19 17:21
2007.07.22
Я по улице марше,


15-1182538255
ProgRAMmer Dimonych
2007-06-22 22:50
2007.07.22
Последняя тема по Direct3D9


15-1182833764
pavel_guzhanov
2007-06-26 08:56
2007.07.22
Есть тут спецы по php и iis?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский