|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Listview отрисовка
Привет.
Несколько вопросов по отрисовке Есть Код:
Tlistview - vsreport - OwneкDraw:=true; 1) Текст вывожу так Код:
with (sender as Tlistview).Canvas do begin TextOut(Rect.Left+18 ,Rect.Top+4,Item.Caption); TextOut(Rect.Left+(sender as Tlistview).Columns.Items[0].Width ,Rect.Top+4,Item.SubItems[0]); TextOut(Rect.Left+(sender as Tlistview).Columns.Items[0].Width +(sender as Tlistview).Columns.Items[1].Width,Rect.Top+4,Item.SubItems[1]); TextOut(Rect.Left+(sender as Tlistview).Columns.Items[0].Width +(sender as Tlistview).Columns.Items[1].Width+(sender as Tlistview).Columns.Items[2].Width+3,Rect.Top+4,Item.SubItems[2]); TextOut(Rect.Left+(sender as Tlistview).Columns.Items[0].Width +(sender as Tlistview).Columns.Items[1].Width+(sender as Tlistview).Columns.Items[2].Width+3 +(sender as Tlistview).Columns.Items[3].Width,Rect.Top+4,Item.SubItems[3]); TextOut(Rect.Left+(sender as Tlistview).Columns.Items[0].Width +(sender as Tlistview).Columns.Items[1].Width+(sender as Tlistview).Columns.Items[2].Width+3 +(sender as Tlistview).Columns.Items[3].Width+(sender as Tlistview).Columns.Items[4].Width,Rect.Top+4,Item.SubItems[4]); TextOut(Rect.Left+(sender as Tlistview).Columns.Items[0].Width +(sender as Tlistview).Columns.Items[1].Width+(sender as Tlistview).Columns.Items[2].Width+3 +(sender as Tlistview).Columns.Items[3].Width+(sender as Tlistview).Columns.Items[4].Width +(sender as Tlistview).Columns.Items[5].Width,Rect.Top+4,Item.SubItems[5]); end; Вопрос : Как сделать обрезание текста , чтоб на конце было '...' ? 2) Чередование цвета строк Делаю так Код:
if trunc((i) / 2) < (i / 2) then sender.canvas.brush.Color := color1 else sender.canvas.brush.Color := color2; Спасибо . |
#2
|
||||
|
||||
1) юзай Canvas.TextRect;
2) не проще ли вместо Код:
if trunc((i) / 2) < (i / 2) then Код:
if Odd(i) then ........ Чтоб закрасить все строки в событии OnCustomDraw дорисовывай пустые стоки. Не профи, но и не чайник . D6 - лучше не придумали. Пока. |
#3
|
|||
|
|||
Чтоб закрасить все строки в событии OnCustomDraw дорисовывай пустые стоки.
Извини , как понять дорисовывай ? Последний раз редактировалось aleksnine, 29.10.2007 в 21:49. |
#4
|
||||
|
||||
Ну я так понял, что ты отрисовываешь тока строки где есть чета (т.е. те - которые заполнены), ну вот остальные можно закрасить в OnCustomDraw. Если не так обьясни поточней.
Не профи, но и не чайник . D6 - лучше не придумали. Пока. |
#5
|
|||
|
|||
Все понял . Уже к вечеру голова не соображает вообще .
Спасибо. |
#6
|
||||
|
||||
Цитата:
Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin if ARow mod 2 = 0 then begin StringGrid1.Canvas.Brush.Color:=clSkyBlue; StringGrid1.Canvas.Rectangle(Rect.Left - 2, Rect.Top - 2, Rect.Right + 1, Rect.Bottom + 1); StringGrid1.Canvas.Font.Color:=clYellow; end else begin StringGrid1.Canvas.Brush.Color:=clYellow; StringGrid1.Canvas.Rectangle(Rect.Left, Rect.Top, Rect.Right, Rect.Bottom); StringGrid1.Canvas.Font.Color:=clSkyBlue; end; StringGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[ACol, ARow]); end; Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |