Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2013, 16:26   #11
Alexandr17-10
Пользователь
 
Регистрация: 12.08.2013
Сообщений: 99
По умолчанию

забыл добавить что компоненты не на форме а на других компонентах находятся например панели кнопок на панели находятся
Alexandr17-10 вне форума Ответить с цитированием
Старый 18.09.2013, 16:32   #12
Nater
Пользователь
 
Регистрация: 23.05.2009
Сообщений: 59
По умолчанию

сумма left-ов. Какая проблема товарищ?
Nater вне форума Ответить с цитированием
Старый 18.09.2013, 17:13   #13
Alexandr17-10
Пользователь
 
Регистрация: 12.08.2013
Сообщений: 99
По умолчанию

кажется нашел способ
Код:
procedure TLib_Ed_2.Timer1Timer(Sender: TObject);
var Cur:TPoint;
  lControl: TControl;
begin
  GetCursorPos(Cur);
  if (Cur.X >self.left)and(Cur.X <self.left+self.Width)and(Cur.y >Self.top)and(Cur.y < Self.top+Self.Height) then begin
    lControl := ControlAtPos(cur, True, True);
    Label3.Caption :=  'Èìÿ êîìïîíåíòà: '+FindVCLWindow(Cur).Name;
  end;
end;
а теперь проверяем если это тот компонент который нужен то делаем то что захочим
Alexandr17-10 вне форума Ответить с цитированием
Старый 18.09.2013, 18:36   #14
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

И всё-таки это костыли, имхо. Если надо что-то делать при заходе указателя мыши на контрол/уходе с контрола надо использовать CM_MOUSEENTER/CM_MOUSELEAVE. Даже если версия Дельфи сравнительно старая.
northener вне форума Ответить с цитированием
Старый 19.09.2013, 10:49   #15
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Зачем таймер вообще? Для наследников WinControl
Код:
  TForm1 = class(Forms.TForm)
    ...
  private
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
  end;

procedure TForm1.CMMouseEnter(var Message: TMessage);
var xWinControl: TWinControl;
    xPoint: TPoint;
begin
  inherited;
  Label1.Caption:='';
  GetCursorPos(xPoint);
  xWinControl:=FindVCLWindow(xPoint);
  if (xWinControl<>nil) and (xWinControl<>Self) then Label1.Caption:=xWinControl.Name;
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.09.2013, 12:50   #16
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Зачем таймер вообще? Для наследников WinControl
Код:
  TForm1 = class(Forms.TForm)
    ...
  private
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
  end;

procedure TForm1.CMMouseEnter(var Message: TMessage);
var xWinControl: TWinControl;
    xPoint: TPoint;
begin
  inherited;
  Label1.Caption:='';
  GetCursorPos(xPoint);
  xWinControl:=FindVCLWindow(xPoint);
  if (xWinControl<>nil) and (xWinControl<>Self) then Label1.Caption:=xWinControl.Name;
end;
зыбыл ему про mouseleave рассказать
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 19.09.2013, 12:53   #17
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
зыбыл ему про mouseleave рассказать
Он там и не нужен, достаточно CMMouseEnter
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.09.2013, 13:06   #18
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
Для наследников WinControl
Почему только TWinControl? Для всех наследников TControl.
northener вне форума Ответить с цитированием
Старый 19.09.2013, 13:10   #19
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ну попробуйте для SpeedButton-а
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.09.2013, 17:26   #20
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Ну попробуйте для SpeedButton-а
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    SpeedButton1: TSpeedButton;
  procedure CMMouseEnter(var Mes: TMessage); message CM_MOUSEENTER;
  procedure CMMouseLeave(var Mes: TMessage); message CM_MOUSELEAVE;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CMMouseEnter(var Mes: TMessage);
begin
  if (TControl(Mes.LParam) is TSpeedButton) and (TControl(Mes.LParam) = SpeedButton1) then 
    SpeedButton1.Caption:='Ent'
  else inherited;
end;

procedure TForm1.CMMouseLeave(var Mes: TMessage);
begin
  if (TControl(Mes.LParam) is TSpeedButton) and (TControl(Mes.LParam) = SpeedButton1) then
    SpeedButton1.Caption:='Lv'
  else inherited;
end;

end.
Д6. Полет нормальный.

Последний раз редактировалось northener; 19.09.2013 в 19:06.
northener вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как рисовать график ф-ии с на компоненте TImage? Владимир1111 Помощь студентам 4 02.04.2010 10:26
Как в компоненте DBGrid не изменять размеры таблицы Ellita Помощь студентам 1 01.03.2010 05:46
уберите курсор (в конце программы верните курсор), HECTOR.A. Паскаль, Turbo Pascal, PascalABC.NET 2 05.06.2009 20:10
Как в компоненте memo сделать ... }{oт@бь)ч Компоненты Delphi 21 07.02.2009 07:10
как осуществить поиск в компоненте WebBrowser1 в delphi 7 SonClan Работа с сетью в Delphi 5 20.11.2007 12:43