Главная страница
    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.48 MB
Время: 0.036 c
2-1182227910
Lebedev
2007-06-19 08:38
2007.07.22
Переход на новую строку в свойстве Items компонента RadioGroup?


2-1182825150
Alex7
2007-06-26 06:32
2007.07.22
Полоса прокрутки в MEMO


15-1182340952
Ламот
2007-06-20 16:02
2007.07.22
1С 7.7 + MS SQL 2000 + Ошибка 126


2-1182843090
Aragorn
2007-06-26 11:31
2007.07.22
Create(nil)


15-1182356862
Mr. D.
2007-06-20 20:27
2007.07.22
Сделать снимок экрана





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский