Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.02.21;
Скачать: CL | DM;

Вниз

Изменение параметров текста в ячейке ValueListEditor при наведении мыши   Найти похожие ветки 

 
Oleg Fomicheff   (2002-02-06 04:28) [0]

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


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

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


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

OnMouseMove + MouseToCell


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

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


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

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


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

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 20:52) [6]

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


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

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


 
KSergey ©   (2002-02-07 11:29) [8]

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



Страницы: 1 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.017 c
4-66711
Burunduk
2001-12-23 10:58
2002.02.21
Internet Explorer


14-66673
Bizon
2002-01-03 10:04
2002.02.21
Новый год.


3-66502
Ivanov_Sergey
2002-01-30 01:14
2002.02.21
не удалить таблицу.


1-66580
MystiX
2002-02-05 19:28
2002.02.21
Help!!!


1-66589
IgoX
2002-02-05 20:37
2002.02.21
Почему так происходит