Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.038 c
14-1129639781
oldman
2005-10-18 16:49
2005.11.06
так вот ты какой, русский язык :)


1-1129651373
BFG9k
2005-10-18 20:02
2005.11.06
Delphi не воспринимает пользовательские классы


1-1129118677
Dust
2005-10-12 16:04
2005.11.06
Inline функции


11-1110375631
hotes
2005-03-09 16:40
2005.11.06
событие OnCreate формы


4-1125562307
Ландграф Павел
2005-09-01 12:11
2005.11.06
включить auto-hide taskbar на Делфи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский