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

Вниз

рисовать в ondrawcell   Найти похожие ветки 

 
bag   (2009-07-21 12:40) [0]

можно ли так рисовать на на гриде? моргает переодически :( что сильно раздражает, может есть другие варианты?
в ondrawcell
 Canvas.Pen.Color := clblack;
 Canvas.Pen.Width := 3;

 Canvas.MoveTo((ColCount - 30) * DefaultColWidth + ColCount - 31, 0);
 Canvas.LineTo((ColCount - 30) * DefaultColWidth + ColCount - 31, Height);


 
bag   (2009-07-21 12:42) [1]

линии то рисуются, а данные в таблицы появляются не сразу а как бы загружаются и пользователь это видит :(


 
KilkennyCat ©   (2009-07-21 12:44) [2]

можно, но нельзя.
перерисовывать нужно только ту ячейку, которая вызвала событие. а не по всему гриду. Ибо тогда, каждая ячейка начнет перерисовывать весь грид, а не только себя.


 
bag   (2009-07-21 12:53) [3]

закрасить всю ячейку научился, а как нарисовать там линию не пойму :(

и вот еще вопрос такой, если я нарисую на ячейке и все в данном столбце то промежутки между ячейками не закрасятся и будет линия одна пунктирная?


 
KilkennyCat ©   (2009-07-21 13:00) [4]

линии рисуются точно также. и закрашивается все нормально. просто внимательнее с координатами.


 
bag   (2009-07-21 13:04) [5]

так закрашиваю ячейки:
with SG6_1 do
begin
 Canvas.Brush.Color := $00ffdbbf;
 Rect := CellRect(ACol, ARow);
 S := Cells[ACol, ARow];

 if (ACol >= ColCount - 2) and (ARow >= 0) and (ARow <= RowCount) then
 begin
   Canvas.FillRect(Rect);
   Canvas.TextOut(rect.left + 3, rect.top + 2, S);
 end;
end;

как с линиями в упор не понимаю, прошу помощи!


 
KilkennyCat ©   (2009-07-21 13:07) [6]

мовету, лайнту... какая разница между выводом техта и рисованием линии?


 
KilkennyCat ©   (2009-07-21 13:08) [7]


> Rect := CellRect(ACol, ARow);

зачем это? ты на событие ondrawcell внимательно смотрел?


 
bag   (2009-07-21 13:24) [8]

спасибо, решение было на поверхности!


 
bag   (2009-07-21 14:22) [9]

Рисую следующим кодом линии в ячейках, все бы хорошо, но если выделить ячейку, а потом перейти к другому компоненту(скажем щелкнуть по кнопке), то в ячейке которую мы выделяли теряется текст(если снова щелкнуть по ней то текст в ней появляется)! Почему? как исправить? еще раздражает пунктирная рамка вокруг ячейки, может кто знает путь избавления от рамки?

procedure TfrmMain.SG6DrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
var
 s: string;
 s_l: integer;
begin

 with SG6 do
 begin
   S := Cells[ACol, ARow];
   s_l := length(s);
   Canvas.Pen.Color := clblack;
   Canvas.Pen.Width := 1;
   Canvas.Brush.Color := clWhite;
   if (ACol >= 0)
     and (ARow = 0) then
   begin

     Canvas.FillRect(Rect);
     Canvas.MoveTo(Rect.Right, rect.Top);
     Canvas.LineTo(Rect.Right, Rect.Bottom + 1);
     if s_l = 1 then
       Canvas.TextOut(rect.left + (ColWidths[acol] div 2) - 3, rect.top + 3, S)
     else
       Canvas.TextOut(rect.left + (ColWidths[acol] div 2) - 6, rect.top + 3, S)
   end;

 end;
end;


 
bag   (2009-07-21 14:34) [10]

нашел ответ на свой вопрос
   if (gdSelected in State) then
   begin
     Canvas.Brush.Color := clWhite;
     Canvas.Font.Color := clBlack;
   end;

но от пунктирной рамки избавиться все равно не удается


 
Amoeba ©   (2009-07-21 15:29) [11]

DefaultDrawing в False установлено?


 
bag   (2009-07-21 15:53) [12]

при DefaultDrawing в False все остальные ячейки придется самому рисовать, хотя это не долго делается, но все же:)


 
Amoeba ©   (2009-07-21 17:12) [13]

Зато от пунктирной рамки избавишься.


 
KilkennyCat ©   (2009-07-21 17:18) [14]

от пуктирной рамки можно избавиться выполнив еще раз drawFocusRect


 
bag   (2009-07-21 19:04) [15]

KilkennyCat,я не понял, можете привести код?


 
KilkennyCat ©   (2009-07-21 20:43) [16]


> можете привести код?

еще раз? Легко.
TCanvas.DrawFocusRect(const rect : TRect);
поскольку рисование выполняется используя Xor, второй вызов уничтожает первый.



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

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

Наверх




Память: 0.5 MB
Время: 0.01 c
15-1248873578
Reactor
2009-07-29 17:19
2009.09.27
Подскажите про трасерт


15-1248562850
Художник
2009-07-26 03:00
2009.09.27
Помогите перевести код на паскаль


2-1248414854
Abcdef123
2009-07-24 09:54
2009.09.27
2 вопроса.


15-1248636256
KilkennyCat
2009-07-26 23:24
2009.09.27
ВМФ!


2-1248380023
Евгений Р.
2009-07-24 00:13
2009.09.27
Как определить вид свойства по PPropInfo