Форум: "Основная";
Текущий архив: 2002.02.21;
Скачать: [xml.tar.bz2];
ВнизИзменение параметров текста в ячейке 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c