![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Изменение параметров текста в ячейке 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 не происходит :((.
а как его вызывать при наведениимыши?