Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

получение значения hint

286
31 октября 2007 года
misha_turist
572 / / 28.11.2005
Доброго времени суток.

Мне нужно при наведении мыши на определённый эллемент формы выделять её hint.
Для этого я хотел пользоваться событием OnMouseMove у формы, но проблема в том, что при передвижении курсора по эллементам находящимся на форме (вроде как потомкам от TWinControl, но не факт), срабатывает их OnMouseMove и на форме данное событие не происходит. Оно не срабатывает на дочернем объекте только в одном случае, если он "не активен", а это не выход из положения.

Ну так вот вопрос, Как сделать так чтобы у дочерних объектов не срабатывал OnMouseMove, или предложите какой другой способ реализации данной задачи. :)
Код:
procedure TFormOptions.FormMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
var Control: TControl;
begin
 Control:=TWinControl(Sender).ControlAtPos(Point(x,y),true, true);

 if Assigned(Control) and (Control.Hint<>'')
 then if StatusBarMain.Panels[0].Text<>Control.Hint
      then StatusBarMain.Panels[0].Text:=Control.Hint
 else StatusBarMain.Panels[0].Text:='';
end;
9.0K
31 октября 2007 года
Toxin_F
93 / / 03.01.2007
Цитата: misha_turist
...или предложите какой другой способ реализации данной задачи. :)


Не обязательно использовать событие OnMouseOver, думаю поможет другой вариант:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    StatusBar1: TStatusBar;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure func(Sender: TObject);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnHint:=func;
end;

procedure TForm1.func(Sender: TObject);
begin
  StatusBar1.Panels[0].Text:='';
  if Application.Hint<>'' then begin
    //Application.MessageBox(pchar(Application.Hint), 'хинт лейбла', MB_OK or MB_ICONINFORMATION);
    StatusBar1.Panels[0].Text:=Application.Hint;
  end;
end;

end.
286
01 ноября 2007 года
misha_turist
572 / / 28.11.2005
Спасибо, помогло. :) Я и не знал, что всё так просто.... :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог