Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

рисовать в ondrawcell


bag ©   (2009-07-21 12:40:00) 

можно ли так рисовать на на гриде? моргает переодически :( что сильно раздражает, может есть другие варианты?
в 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);


KilkennyCat   (2009-07-21 20:43:00) [1]


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

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


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

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


KilkennyCat   (2009-07-21 17:18:00) [3]

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


Amoeba   (2009-07-21 17:12:00) [4]

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


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

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


Amoeba   (2009-07-21 15:29:00) [6]

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


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

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

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


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

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

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 13:24:00) [9]

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


KilkennyCat   (2009-07-21 13:08:00) [10]


> Rect := CellRect(ACol, ARow);

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


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

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


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

так закрашиваю ячейки:
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:00:00) [13]

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


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

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

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


KilkennyCat   (2009-07-21 12:44:00) [15]

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо