Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.06;
Скачать: 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 вся ветка

Текущий архив: 2005.11.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.033 c
2-1129316258
Тест
2005-10-14 22:57
2005.11.06
Memo


1-1129052350
SergProger
2005-10-11 21:39
2005.11.06
Типы файлов. Иконка файла.


5-1108110079
Roughneck
2005-02-11 11:21
2005.11.06
Как добавить свойство в TColumn у DBGrid-а?


8-1118551920
GekaNaz
2005-06-12 08:52
2005.11.06
отображение подгружаемых картинок


14-1129151578
Gero
2005-10-13 01:12
2005.11.06
Выбор группы в InnoSetup