Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
ВнизКак вывести Hint после остановки курсора... Найти похожие ветки
← →
grusty (2005-03-04 03:37) [0]Ребята, подскажите!
Как вывести Hint после остановки курсора над компонентом, например, TImage. Причем, если снова двинуть курсор и остановить его, то Hint снова должен появиться.
Заранее благодарен!
← →
XP (2005-03-04 07:01) [1]Image.Hint := "Изображение";
Image.ShowHint := true;
Эти свойства объявлены как published, поэтому видны в Object Inspector"е.
← →
Cosinus © (2005-03-04 09:34) [2]
> XP
Угу, только не нужно забывать, что если курсор будет крутится по одному Image, не переползая на другие компоненты, то Hint появится только один раз вначале. Для устранения нужно еще немного доработать :)
← →
GLFox © (2005-03-04 09:44) [3]OnMouseMove для TImage
← →
GLFox © (2005-03-04 09:45) [4]OnMouseMove для TImage
← →
Fedia © (2005-03-04 10:15) [5]GLFox © (04.03.05 09:45) [4]
Если не секрет, как вызвать hint на OnMouseMove, если время его первоначального отображения уже прошло, а курсор выводить за пределы компонента нельзя (из [0]).
← →
GLFox © (2005-03-04 10:19) [6]> Fedia © (04.03.05 10:15) [5]
В общем то я затрудняюсь так сразу сказать, но данный вариант мне и самому кажется довольно подозрительным... %)
← →
GLFox © (2005-03-04 10:25) [7]Лучшим вариантом наверно будет сформировать его самому (например, в виде отдельного окна (CreateWindowEx)) и при входе мыши создавать его. При move можно таскать его даже за мышой. А когда она (мышь) убежит с компонента, тогда его и Free.
← →
Экспериментатор (2005-03-04 10:27) [8]в OnMouseMove
напиши
Image.ShowHint := false;
Image.ShowHint := true;
и хинт будет появляться столько сколько твоей душе угодно
← →
Fedia © (2005-03-04 10:31) [9]Экспериментатор (04.03.05 10:27) [8]
не правда.
← →
Cosinus © (2005-03-04 10:33) [10]Создай свой хинт и не мучайся :)))
var
MyHint: THintWindow;
//Создать и показать
MyHint:=THintWindow.Create(Image);
MyHint.ActivateHint(Image.ClientRect, "Ага-а-а!");
//Прибить и соответственно спрятать :)
if MyHint<>nil then
MyHint.ReleaseHandle;
← →
Cosinus © (2005-03-04 10:35) [11]
> Экспериментатор (04.03.05 10:27) [8]
Не правда :)
Я тоже предполагал и не поленился, проверил. Нет, не будет.
← →
Fedia © (2005-03-04 11:01) [12]Cosinus © (04.03.05 10:33) [10]
Это уже вариант :)
Только наверняка можно прорисовать "родной" для компонента hint.
Покопался vcl, в итоге вышел на класс TControl = class(TComponent). Как отобразить родной hint еще не выяснил, но зато стало ясно, почему вариант [8] не работает.
FShowHint: Boolean;
property ShowHint: Boolean read FShowHint write SetShowHint stored IsShowHintStored;
procedure TControl.SetShowHint(Value: Boolean);
begin
if FShowHint <> Value then
begin
FShowHint := Value;
FParentShowHint := False;
Perform(CM_SHOWHINTCHANGED, 0, 0);
end;
end;
Т.е. при изменении свойства ShowHint окно подсказки не выводится. Может вообще иду неправильным путем :)
← →
grusty (2005-03-04 12:56) [13]
> GLFox
Как создать Hint и удалить, и где, - я понял. А вот что необходимо прописать в OnMouseMove? MyHint.ActivateHint... см. [10]?
Может кто видел старенький англо-русский переводчик? Там при наведении на каждое англ. слово выскакивает хинт с переводом. Вот мне нужно что-то подобное...
← →
Cosinus © (2005-03-04 13:22) [14]Извращенный метод :)))
В таймере смотретьGetLastInputInfo
и если оно больше определенного времени(и курсор находится над Image(WindowFromPoint,
)), то выводить хинт, если нет, то прибить (если он есть) и не выводить...
Но по-моему это "поход из Москвы в Питер через Воркуту"...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.039 c