Вниз
Скачать: CL | DM;

Цвета в 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.027 c
14-1129398841
Praetor
2005-10-15 21:54
2005.11.06
Человек чмо? или нет?


14-1129283945
Fin
2005-10-14 13:59
2005.11.06
Квоты на ПАПКИ под NTFS?


10-1106505855
Fktrc
2005-01-23 21:44
2005.11.06
Подключение GetObject om к уже запущенному Excel


2-1129195944
Joy
2005-10-13 13:32
2005.11.06
DAO 3.5


14-1129181128
syte_ser78
2005-10-13 09:25
2005.11.06
Книга "советы программистов"




   Наверх