Форум: "Основная";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
ВнизЦвета в StringGrid Найти похожие ветки
← →
Квэнди © (2005-10-13 16:43) [0]Здравствуйте, интересует следующий вопрос: возможно ли сделать так, чтобы после того, как я один раз прорисовал все необходимые цвета и шрифты в stringgrid, таблица больше не перерисовывалась ? Попробую объяснить подробней: положим так :
procedure Tfstart.tabtermDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
tabterm.Canvas.Brush.Color:=clred;
tabterm.Canvas.Font.Color:=clwhite;
tabterm.Canvas.Font.Size:=18;
tabterm.Canvas.FillRect(rect);
tabterm.Cells[2,1]:="AM11";
tabterm.Canvas.TextOut(rect.Left,rect.top,tabterm.Cell[acol,arow]);
end;
Разумеется, эта строчка будет мерцать, так как постоянно будет перерисовываться... можно ли этот эффект как- нибудь убрать ?
← →
MBo © (2005-10-13 16:56) [1]>Разумеется, эта строчка будет мерцать, так как постоянно будет перерисовываться
???
Вовсе не мерцает, поскольку OnDrawCell вызывается только при необходимости перерисовки ячейки
← →
Квэнди © (2005-10-13 16:59) [2]Попробуйте испытать просто данный текст в Stringgrid и увидите, что будет именно это, потому что ячейки перерисовываются постоянно
← →
han_malign © (2005-10-13 17:02) [3]
> можно ли этот эффект как- нибудь убрать ?
- ага - убравtabterm.Canvas.FillRect(rect);
, аTextOut(rect.Left,rect.top,tabterm.Cell[acol,arow]);
заменив наTextRect(Rect, Rect.Left+2, Rect.Top+2,tabterm.Cell[acol,arow]);
> Вовсе не мерцает, поскольку OnDrawCell вызывается только
> при необходимости перерисовки ячейки
- tabterm.Cells[2,1]:="AM11"; - вот эта будет постоянно мерцать - видать такова воля аффтара...
← →
Квэнди © (2005-10-13 17:12) [4]К сожалению не помогло, видимо все же придется отказаться от
tabterm.Cells[2,1]:="AM11"
и писать текст вTextOut
, чего бы не хотелось (
← →
Amoeba © (2005-10-13 17:19) [5]
> К сожалению не помогло, видимо все же придется отказаться
> от
> tabterm.Cells[2,1]:="AM11"
Не то, что придется, а просто необходимо. И нечего жалеть! Недопустимо делать присвоение текста ячейке при ее отрисовке. Просто передавай "AM11" в TextOut.
← →
Defunct © (2005-10-13 17:25) [6]Квэнди © (13.10.05 17:12) [4]
От TextOut тоже откажись. Есть TextRect
← →
Квэнди © (2005-10-13 17:40) [7]Ок, большое спасибо!
← →
han_malign © (2005-10-13 17:42) [8]
> К сожалению не помогло, видимо все же придется отказаться от
> tabterm.Cells[2,1]:="AM11"
- а какого... это вообще делать? Редактирование ячейки запретить не судьба? А если дело не в on place редактировании, то надо стереть Delphi, поставить какую нибудь игрушку, и расслабиться...
← →
Amoeba © (2005-10-13 17:51) [9]> tabterm.Cells[2,1]:="AM11"
нужно делать в каком-нибудь другом месте, но никак не в DrawCell.
← →
Квэнди © (2005-10-14 08:20) [10]Спасибо еще раз, действительно сразу не сообразил ( есть еще один вопрос, а как сделать , чтобы активная строка, т.е. на которой фокус подсвечивалась другим цветом и при этом, разумеется, созранялся текст, пробовал так :
if (gdFocused in State) then
begin
tabterm.Canvas.Brush.Color := clBlack;
tabterm.Canvas.Font.Color := clWhite;
end
← →
ЮЮ © (2005-10-14 08:35) [11]>чтобы активная строка, т.е. на которой фокус
(gdFocused in State) = The cell has input focus, т.е. ячейка получила фокус ввода и сама при этом обычно не видна, т.к. перекрыта окном встоенного редактора
а "активная строка", это когда tabterm.Row = ARow (параметр обработчика)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.046 c