Главная страница
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.011 c
15-1248938142
desc
2009-07-30 11:15
2009.09.27
Справочная и оперативная информация.


4-1217409567
leonidus
2008-07-30 13:19
2009.09.27
Корректно ли так устанавливать глобальный хук на клавиатуру?


15-1248958241
Reactor
2009-07-30 16:50
2009.09.27
помогите с макрос excel ... с движением курсора по ячейкам.


15-1248695199
Василий Жогарев
2009-07-27 15:46
2009.09.27
Выбор струйника формата А3 подсоветуйте


4-1218200398
plotnick
2008-08-08 16:59
2009.09.27
Как проверить аккаунт пользователя?