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

Вниз

drawcell стиль канвы ячейки   Найти похожие ветки 

 
bag   (2009-08-04 21:45) [0]

рисую в ondrawcell stringgrid"a,
   if S = "+" then
     if (ACol >= 0) and (ARow >= 0) then
     begin
       Canvas.Brush.Color := $00C1C1FF;
       Canvas.Brush.Style := bsBDiagonal;
       Canvas.Font.Style := [fsbold];
       Canvas.Font.Size := 13;
       Canvas.FillRect(Rect);
       Canvas.TextOut(rect.left + 4, rect.top, S);
     end;


если выставить         Canvas.Brush.Style := bsBDiagonal; то штрихами будет весь грид, а мне надо чтобы конкретные ячейки, как решить вопрос?
самому рисовать линии?


 
Дмитрий Белькевич   (2009-08-04 22:00) [1]

Если я верно понял, то вот здесь:

>if (ACol >= 0) and (ARow >= 0) then

поставь условия, в каких конкретно ячейках нужно рисовать шитриховку.

Например, в нечётных колонках:

if (Odd(ACol)) and (ARow >= 0) then

или в нечётных рядах:

if (ACol >= 0) and (Odd(ARow)) then

Но - нужно пробовать, не уверен на 100%.


 
bag   (2009-08-04 22:03) [2]

Спасибо, дружище, но не помогло, рисую линии вручную :(


 
Игорь Шевченко ©   (2009-08-04 22:40) [3]


> рисую линии вручную


Зря. Надо восстанавливать стиль кисти после рисования и использовать для диагональной штриховки не FillRect, а Rectangle с пустым пером.

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
var
 S: string;
 OldStyle: TBrushStyle;
begin
 with StringGrid1.Canvas do
 begin
   OldStyle := Brush.Style;
   S := StringGrid1.Cells[ACol, ARow];
   if S = "+" then
     if (ACol >= 0) and (ARow >= 0) then
     begin
       Brush.Color := $00C1C1FF;
       Brush.Style := bsBDiagonal;
       Pen.Style := psClear;
       Font.Style := [fsbold];
       Font.Size := 13;
       Rectangle(Rect);
     end
     else
       FillRect(Rect);
     TextOut(Rect.left + 4, Rect.top, S);
   Brush.Style := OldStyle;
 end;
end;


 
bag   (2009-08-04 23:06) [4]

Почему то в ячейке рисуется два раза один и тот же текст.


 
Игорь Шевченко ©   (2009-08-04 23:24) [5]

bag   (04.08.09 23:06) [4]

DefaultDrawing = false поставь в свойствах StringGrid

"By default, the string is drawn into the cell before OnDrawCell
       is called.  This can be turned off (along with all the other default
       drawing) by setting DefaultDrawing to false."



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

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

Наверх




Память: 0.48 MB
Время: 0.011 c
15-1249556339
desc
2009-08-06 14:58
2009.10.11
Несовсем понятно чем отличается...


2-1249281322
CSS
2009-08-03 10:35
2009.10.11
Как запихнуть в ресурсы 32-хбитный битмап?


15-1249377244
Kerk
2009-08-04 13:14
2009.10.11
Была ли в СССР мобильная связь?


15-1249761808
Andy BitOff
2009-08-09 00:03
2009.10.11
Palladin, с Днем рождения!


11-1193764318
=BuckLr=
2007-10-30 20:11
2009.10.11
Проверка ящика на предмет наличия писем