| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > OnHint при активации формы |
| Автор: fidres 8.12.2006, 10:37 | ||
| ситуация: форма отрисовывается и на ней фокус переходит на какой-то компонент (к примету ComboBox). так вот, хотелось бы, чтобы через 2 секунды всплывал хинт данного компонента... все примеры, найденные мной по хинтам - это всего-лишь отслеживание курсора и возникновения события при помещении кусрора в область компонента... а события по OnActive или OnShow - нигде не описаны... подскажите?
не прокатывает. почему - не знаю.. |
| Автор: Elfebet 8.12.2006, 10:44 | ||
если я правильно понял тебе нужно наследовать события OnEnter и OnExit как у label, что то подобное этому
|
| Автор: PROeXT 8.12.2006, 10:45 |
| А может стоит попробовать использовать таймер с 2х секундным интервалом? А на событии OnTimer определять "сфокусированный" контрол и отображать его хинт? Или я чего-то не понимаю? |
| Автор: Elfebet 8.12.2006, 10:47 | ||||
а вообще все гораздо проще
чтобы задержать хинт на две секунды
|
| Автор: fidres 8.12.2006, 14:48 | ||
| ещё раз. задержка по таймеру - не критична (её вообще можно исключить). вопрос в другом. форма отрисовывается по событию OnActive. в это время фокус передаётся компоненту со свойством TabOrder = 1. IMHO не важно чего это за компонент. главное - у него есть свойство Hint и это свойство нужно отобразить НЕПОСРЕДСТВЕННО ПРИ ОТКРЫТИИ ФОРМЫ! при этом совершенно безразлично в каком месте экрана находится курсор мыши (курсор мыши не играет тут никакой роли! он мне не нужен, т.к. переход в компонен осуществляется по TabOrder'у!)... всё. то есть. необходимо отобразить хинт какого-то компонента НЕПОСРЕДСТВЕННО при открытии/активации формы... замечу, что форма не главная (не MainForm).
нифига... проверил. Application.ShowHint не влияет на сколько я понял... |
| Автор: Sunvas 8.12.2006, 16:36 |
| fidres, есть класс THintWindow. С ним и играйся. |
| Автор: dimazu 8.12.2006, 17:17 | ||
| THintWindow - это правильно адназначна. Но можно и глобально попробовать сделать. Это пример просто, но идея понятна...
|
| Автор: dimazu 8.12.2006, 19:33 | ||
| Там просто подменяется хинт апликации, не надо строить ректангл. Ну раз не понятно, то может вот так будет понятней:
|
| Автор: fidres 10.12.2006, 08:25 |
| dimazu, поучительно. спасибо. З.Ы. ща пока что не до хинтов немного... сдача проги поджимает, поэтому все "красивости" оставляю на потом... ща больше волнуют другие задачки... |
| Автор: fidres 14.9.2007, 06:12 |
| dimazu, чё-то не вкатывает. ацес виаланшин показывает... ща ещё поиздеваюсь... З.Ы. тормозит на ShowHint при открытии формы... |
| Автор: fidres 14.9.2007, 07:51 |
| кстати. де-та был у меня примерчик с мультистринговыми хинтами.... нода поискать... там реализация должна быть самой подсказки!.. точно! |
| Автор: fidres 17.9.2007, 11:41 |
| короче, не стал я башку ломать. сделал проще. обычную панель киданул поверх остальных компонентов и при необходимости меняю визибл на тру и показываю подсказку. на панельке лежит прогресс_бар и лэбл. в лэбл выводим текст желаемого собщения, редактируем размер панели с учётом высоты и ширины лэбла и прогресс_бара. перемещаем панель в позицию, в которой находится компонент в фокусе. меняем видимость панели на тру. по таймеру или просто по sleep'у скрываем панель. никаких TWinControl'ов и прочей байды. простенько и со вкусом. можно менять как размер/цвет панели и всех компонентов, так и их форму отображения (рисуя их через полигоны). в принципе, тоже самое можно делать и с хинтом, но это всё намного сложнее. куча кода, написанного от руки и ещё не гарантирует, что этот код будет работать где-то на простенькой машине... а панель - она и в африке панель! ;) Добавлено через 1 минуту и 9 секунд кстати! забыл сказать, что натолкнуло меня на эту мысль реализациия таблички "подождите..." на нашем форуме!!! |