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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2009, 04:22   #1
kinderproc
Пользователь
 
Регистрация: 10.06.2009
Сообщений: 13
По умолчанию Перехват изменения Enabled

Как перехватить момент установки свойства Enabled у компонента? Какое событие нужно перехватывать?
kinderproc вне форума Ответить с цитированием
Старый 21.06.2009, 04:55   #2
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,480
По умолчанию

Цитата:
Сообщение от kinderproc Посмотреть сообщение
Как перехватить момент установки свойства Enabled у компонента? Какое событие нужно перехватывать?
На сколько я понел, вам надо это :

Код:
if Button1.Enabled = true then  
begin                                       // Если истина (true)
..........                                    // Ваш код если true
else begin                            // Если лож (false)
..........                                 // Ваш код если false
end;
Помог ? если да, то нажмите на весы слева =)

Последний раз редактировалось uberchel; 21.06.2009 в 04:57.
uberchel вне форума Ответить с цитированием
Старый 21.06.2009, 17:04   #3
kinderproc
Пользователь
 
Регистрация: 10.06.2009
Сообщений: 13
По умолчанию

нажмите на весы слева? )))

не-е-е. Мне нужно перехватить какое-то сообщение, отсылаемое контролу, перед тем или после того как его свойство Enabled поменялось.
Если ближе к ситуации - то есть DBLookupComboBox, в момент, когда его свойство Enabled поменялось, нужно совершить какие-то действия. Подозреваю что это нужно делать после его перерисовки, т.е. перхватывать WM_PAINT. Но создавать свой класс для этого не хочется, может быть кто подскажет как перехватить это сообщение без создания нового класса, или какой-то другой способ.
kinderproc вне форума Ответить с цитированием
Старый 22.06.2009, 14:24   #4
postal2
Форумчанин
 
Аватар для postal2
 
Регистрация: 31.10.2008
Сообщений: 215
По умолчанию

Регистрируй в глобальном var какую-нибудь булеановскую переменную, ставь таймер на полсекунды, например, и смотри по таймеру - если изменилось состояние, то событие.

Код:
unit Unit1; {вот пример такой программы - отслеживает изменение параметра enabled у button1}

interface

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

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Button1: TButton;
    Button2: TButton;
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  buttonenabled:boolean=true; {регистрируем глобальную переменную - изначальна она должна соответствовать параметру (в данном случаю enabled у компонента)}

implementation

{$R *.dfm}

procedure myproc; {Это пример события, которое будет работать при изменении параметра}
begin
showmessage('');
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
timer1.Enabled:=false; {не забывай останавливать, а то событие может вылетать кучу раз}
if buttonenabled<>button1.Enabled then myproc; {если состояние изменилость, то процедурка}
if button1.Enabled then buttonenabled:=true else buttonenabled:=false; {сохраним текущее состояние}
timer1.Enabled:=true; {и включим таймер опять ловить событие}
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if button1.Enabled then button1.Enabled:=false else button1.Enabled:=true; {Кнопка меняет состояние enabled - для примера.}
end;

end.
[Ferox]

Последний раз редактировалось postal2; 22.06.2009 в 14:35.
postal2 вне форума Ответить с цитированием
Старый 22.06.2009, 15:21   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как перехватить момент установки свойства Enabled у компонента?
Зачем ? это значение контролирует программист а не пользователь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изменения строки semennn Помощь студентам 10 08.05.2009 13:19
SpeedButton, glyph, enabled ScorpioN_T Общие вопросы Delphi 8 27.04.2009 19:14
Изображение на кнопке в состоянии Enabled=False SibBear Общие вопросы Delphi 2 25.03.2009 17:14
перехват изменения состояния Windows Shuraken Win Api 9 13.09.2007 08:03
Изменения алгоритма delphi_beginner Общие вопросы Delphi 2 13.05.2007 21:27