WEB форумы на jedi
[Форум] [Помощь] [Поиск] [Выйти]
Добро пожаловать, [info]User

WEB форумы на jedi [ПОИСК] [Архив до 03.2006]

Тема вопрос по делфям К предыдущему сообщению На следующее сообщение Программирование

Отправил Snaiper в 23:55 10.02.2005[Ответить]
как в делфях сделать чтобы организовывался поиск .....чтобы в edit вводилось слово и в каких строчках stringgrida это слово присутствует эти строчки переносились в начало табл и выделялись?


Отправил Ondulyansion в 08:09 11.02.2005[Ответить]
stringgrid -> F1


Отправил Sleep-Walker в 10:00 11.02.2005[Ответить]
руками...


Отправил Oldman в 23:01 02.03.2005[Ответить]
А вот скажите мне, пожалуйста, как с StringGrid в фиксированных строках писать другим фонтом?

Через DrawCell - получается, но ведь он его постоянно перерисовывает? Или поправьте меня


Отправил LazyBear в 01:22 03.03.2005[Ответить]
Насколько я знаю, Windows сам вызывает перерисовку, когда это нужно. Также можно из самой программы вызвать перерисовку Update, Refresh, Repaint, иногда Application.ProcessMessages (он активизирует обработку пришедших и поставленных в очередь сообщений Windows, если какие-то из них требуют перерисовки - она производится). Так или иначе, инициатор перерисовки в большинстве случаев - Windows. Визуальный объект Delphi "ловит" это сообщение и выполняет перерисовку либо вызовом API операционки, либо "собственными силами" (например, нарисуй линию отсюда до вот сюда). Ряд визуальных объектов представляют программисту возможность самому нарисовать этот объект вместо использования заложенной в него процедуры прорисовки. DrawCell - это и есть метод прорисовки программистом, причем он абсолютно не "мешает" методу, заложенному в самом объекте StringGrid, если посмотрите исходники StringGrid, то убедитесь в этом сами.
Я клоню к тому, что использование свойства DrawCell не является чем-то, из ряда вон выходящим, а, наоборот, есть наиболее простой и правильный способ управления отображением ячеек.


Отправил Oldman в 10:55 03.03.2005[Ответить]
т.е. если я буду использовать прорисовку заголовка таблицы (зафиксированной строки) в процедуре DrawCell, то при последующем скроллинге таблицы этот заголовок заново перерисовываться не будет? Он будет перерисовывать только те ячейки, которые изменились?


Отправил LazyBear в 21:07 03.03.2005[Ответить]
Насколько я помню, он перерисовывает все ячейки, но врать не буду, а проверять времени нет. Не парься этим (ничего, что я на ты?). Это не твоя забота - перерисовка. Windows и Delphi сами решат, когда его перерисовать, ты только можешь изменить метод перерисовки отдельных ячеек - в данном случае используя DrawCell. Я к тому, что твой DrawCell будет вызываться не чаще, чем вызывалась бы обычная перерисовка ячеек. И если ты не прописал в DrawCell каких-нибудь диких вычислений с плавающей точкой, или выборок из БД, или других операций, сильно загружающих процессор, то замедление скорости перерисовки и, соотвественно, восприятия программы будет совершенно незаметно. В твоем случае ты все сделал правильно.


Отправил Oldman в 22:58 04.03.2005[Ответить]
Да, в принципе я определил, в какой момент все перерисовывается и меня это устроило.
Авот событие, которое срабатывает, когда нажимаешь двойным щелчком на фиксированной строке (не важно,в какой колонке) как называется?
OnDblClick отрабатывает только когда в рабочей ячейке щелкаешь..


Отправил Strogg в 16:57 05.05.2005[Ответить]
OnCellClick не подойдет ?