Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Вниз

Как эмулировать показ hint нажатием, например, button на форме?   Найти похожие ветки 

 
Dr. Andrew   (2007-07-09 07:28) [0]

Уважаемые Мастера!
Я использую свой класс подсказок оговоренный в процедуре onFormCreate:
{* установить собственный формат подсказок *}
 Application.ShowHint := False;
 HintWindowClass := GraphicHint.TGraphicHintWindow;
 Application.ShowHint := True;

Вопрос: как мне программно эмулировать показ всплывающей подсказки (используя Perform или SendMessange или еще что-то), чтобы моя подсказка всплывала (показывалась), например над панелью Panel1, когда я нажимаю кнопку Button1? Без того, чтобы перемещать мышкой над компонентом или использования события onMouseMove и тому подобное! Пожадуйста, приведете маленький пример. Всем спасибо!


 
Юрий Зотов ©   (2007-07-09 08:19) [1]

Application.ActivateHint(Mouse.CursorPos);


 
Юрий Зотов ©   (2007-07-09 08:53) [2]

Вот полный пример:

type
 TForm1 = class(TForm)
   Panel1: TPanel;
   Button1: TButton;
   Timer1: TTimer; // Enabled = False
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure Timer1Timer(Sender: TObject);
 private
   FHintWindow: THintWindow;
 end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 FHintWindow := HintWindowClass.Create(Self)
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 H: string;
 R: TRect;
begin
 H := "Hello";
 R.TopLeft := Panel1.ClientToScreen(Point(4, 4));
 R.Right := R.Left + FHintWindow.Canvas.TextWidth(H) + 4;
 R.Bottom := R.Top + FHintWindow.Canvas.TextHeight(H) + 4;
 FHintWindow.ActivateHint(R, H);
 Timer1.Enabled := True
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 FHintWindow.ReleaseHandle;
 Timer1.Enabled := False
end;


 
Dr. Andrew   (2007-07-09 13:06) [3]

Спасибо Юрий.
Но, задача несколько сложнее. Есть текстовый компонент типа RichView с текстом. Программно (не мышкой!) я выделяю, например третье слово во второй строке и могу опрелелить координаты его начала, например в переменные X и Y. И вот над этим словом с этими координатами (то есть с мнимой позицией курсора) мне необходимо вывести подсказку, мой класс GraphicHint.TGraphicHintWindow, который я определил в процедуре onFormCreate. Что в вашем примере в таком случае надо изменить? И только есть такой путь - проще ничего нет? Еще раз спасибо за очень квалифицированный ответ.


 
Юрий Зотов ©   (2007-07-09 14:17) [4]

> Dr. Andrew   (09.07.07 13:06) [3]

Если координаты X и Y известны, то меняется только одна строчка:
вместо R.TopLeft := Panel1.ClientToScreen(Point(4, 4));
пишем что-то вроде этого R.TopLeft := Point(X, Y-6);

Только убедитесь, что X и Y - это абсолютные экранные координаты, а не клиентские (иначе сначала перегоните их через ClientToScreen компонента).



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

Форум: "Основная";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.038 c
2-1187683458
Alex_AA
2007-08-21 12:04
2007.09.16
Как вставить картинку в ячейку таблицы?


15-1187351797
Вася Правильный
2007-08-17 15:56
2007.09.16
украинский подсказчик слов SMS в телефоне nokia


15-1187553791
wp2
2007-08-20 00:03
2007.09.16
Как загрузить Rich-тест в компонент TRichEdit на этапе проэктир..


15-1187538724
Piter
2007-08-19 19:52
2007.09.16
Очень классная иллюзия


2-1187803865
nord489
2007-08-22 21:31
2007.09.16
Переменные





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский