Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Изменение параметров текста в ячейке ValueListEditor при наведении мыши [D6, Win95/98]


Oleg Fomicheff ©   (2002-02-06 04:28:00) 

Вопрос прост: КАК?
Ячейку под мышью определяю с помощью
valuelisteditor1.MouseCoord(x,y), а как изменть в ней при этом цвет или стиль текста?
Видимо, через OnDrawCell, но у меня не выходит :((
Киньте примерчиком, плиз!


KSergey   (2002-02-07 11:29:00) [1]

А вообще-то, рисование где-либо вне WM_PAINT (OnDraw...) ни есть хорошо. Можно вполне придумать сутуацию, когда это не сработает.
Так что выход один: в OnDrawCell определять таки ячейку (ну неужели это так сложно?!), координаты которой (или номера) заносить в какие-либо переменные при OnMouseMove. Ну а в этом OnMouseMove делать Repaint или, что лучше, заставлять перерисовываться не весь грид (что долго, не красиво и не смешно в данном случае) - а заставлять отрисовывать только опред. область (т.е. эту самую ячейку, над которой мышь, ну и за одно ту, с котоой эта мышь жуе ушла (ведь ее состояние надо восстановить!)).


Набережных С.   (2002-02-06 21:29:00) [2]

Номер ячейки ты знаешь - можешь получить содержимое. У TCanvas
есть методы для вывода текста и определения размеров строки
TextOut, TextRect - рисование текста, TextWidth, TextHeight, TextExtent - размеры, TextFlags - параметры вывода(просто сделай = 0).


Набережных С.   (2002-02-06 20:52:00) [3]

FillRect - очистил, теперь заново нужно рисовать - и текст, и все, что хочешь.


Oleg Fomicheff   (2002-02-06 20:02:00) [4]

TO Набережных С.
так я вроде так и делаю:
with valuelisteditor1.Canvas do
begin
brush.Color:=clwhite;
font.Color:=clblue;
font.Style:=[fsUnderline];
fillrect(valuelisteditor1.CellRect(valuelisteditor1.MouseCoord(x,y).X,valuelisteditor1.MouseCoord(x,y).y))
end

думал текст будет меняться на голубой подчеркнутый, но это приводит лишь к тому, что ячейку просто заливает белым цветом :(( при этом текста не видно вообще :((
надо как-то текст сохранить, или перерисовать его.
чего-то никак :((


Набережных С.   (2002-02-06 17:52:00) [5]

Так и перерисовывай нужную - FillRect и вперед.


Oleg Fomicheff   (2002-02-06 16:43:00) [6]

TO Юрий Зотов
спасибо.
идею понял, но чего-то не получается :(((
можно поподробнее?
надо ли отключать DefaultDrawing?
если да, то получается надо в каждом OnDrawCell следить за тем, какая ячейка рисуется (верхние окрашивать серым и т.д.).
А мне всего-то надо поменять цвет и подчеркнуть :).


Юрий Зотов   (2002-02-06 15:55:00) [7]

OnMouseMove + MouseToCell


Oleg Fomicheff   (2002-02-06 15:47:00) [8]

неужели никто не знает?
а в stringgrid то же самое как сделать?
проблема в том, что до щелчкамыши события OnDrawCell не происходит :((.
а как его вызывать при наведениимыши?


Наверх

Титульная страница Поиск, карта сайта Написать письмо