Форум: "Начинающим";
Текущий архив: 2009.09.27;
Скачать: [xml.tar.bz2];
Внизрисовать в 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c