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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2010, 10:26   #1
smartyrogue
 
Регистрация: 09.10.2010
Сообщений: 5
По умолчанию Как оптимизировать выполнение одинаковых обработчиков событий

Имеется объект типа TEdit, и его обработчики: OnChange (обработка вводимых символов), OnEnter (смена цвета при входе), OnExit (возврат цвета при выходе).
Код:
procedure TForm_Manualinput.E31Change(Sender: TObject);
begin
  NumberEditCtD(E31, False);
end;

procedure TForm_Manualinput.E31Enter(Sender: TObject);
begin
  E31.Color:=ColorActive;
end;

procedure TForm_Manualinput.E31Exit(Sender: TObject);
begin
  E31.Color:=clWhite;
end;
Предположим есть еще 5 объектов типа TEdit, с такими же обработчиками. Как сделать чтобы не городить еще 15 процедур???
smartyrogue вне форума Ответить с цитированием
Старый 18.10.2010, 10:30   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Код:
NumberEditCtD((Sender as TEdit), False);
(Sender as TEdit).Color:=ColorActive;
(Sender as TEdit).Color:=clWhite;
и подключи ко всем Edit-ам.
Смысл понятен?
_SERGEYX_ вне форума Ответить с цитированием
Старый 18.10.2010, 10:57   #3
smartyrogue
 
Регистрация: 09.10.2010
Сообщений: 5
По умолчанию

To _SERGEYX_
Так сделать??? Или я просто не понимаю как подключить это ко всем TEdit
Код:
  procedure modify(obj:TObject);
  begin
    NumberEditCtD((obj as TEdit), False);
  end;
  procedure enter(obj:TObject);
  begin
    (obj as TEdit).Color:=ColorActive;
  end;
  procedure exit(obj:TObject);
  begin
    (obj as TEdit).Color:=ColorActive;
  end;
-----
Код:
procedure TForm_Manualinput.E31Change(Sender: TObject);
begin
  modify(Sender);
end;

procedure TForm_Manualinput.E31Enter(Sender: TObject);
begin
  enter(Sender);
end;

procedure TForm_Manualinput.E31Exit(Sender: TObject);
begin
  exit(Sender);
end;
Или поподключать каким-то образом процедуры к обработчикам через инспектор объектов???
smartyrogue вне форума Ответить с цитированием
Старый 18.10.2010, 12:07   #4
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

В инспекторе объектов, перейди на вкладку Evenets. И выбери для эдита, обработчики событий.
OnChange - E31Change,
OnEnter - E31Enter,
OnExit - E31Exit.
И так для всех.
Но, я думаю лучше разобраться с кодом от _SERGEYX_.
psycho-coder вне форума Ответить с цитированием
Старый 18.10.2010, 13:50   #5
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Ага. psycho-coder все правильно написал.

Код:
procedure TForm_Manualinput.E31Enter(Sender: TObject);
begin
 (Sender as TEdit).Color:=ColorActive;
end;
и далее выбери все остальные Edit-ы и
выбери для них событие OnEnter - E31Enter
_SERGEYX_ вне форума Ответить с цитированием
Старый 18.10.2010, 14:10   #6
smartyrogue
 
Регистрация: 09.10.2010
Сообщений: 5
По умолчанию

Спасибо за помощь =)
smartyrogue вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как оптимизировать код C++ slim>>> Помощь студентам 10 25.01.2011 00:05
Как оптимизировать код Delphi OST_K Помощь студентам 1 30.05.2010 06:59
Как оптимизировать плиззз alex181264 Microsoft Office Excel 3 13.04.2009 06:27
Общая переменная для различных обработчиков событий Mike_new Общие вопросы .NET 3 29.12.2008 16:43
как может оптимизировать в фунцию? w1ze Помощь студентам 2 07.01.2008 23:19