Форум: "Начинающим";
Текущий архив: 2006.12.24;
Скачать: [xml.tar.bz2];
ВнизОдин код к разным событиям Найти похожие ветки
← →
B1en (2006-12-05 20:14) [0]Привет!! У меня в программе должно выполняться одно и тоже действие при выборе пункта меню и при нажатии на функциональную клавишу.
Можно ли сделать что-то чтобы код не дублировать!
← →
Kolan © (2006-12-05 20:17) [1]Вызвать одну и туже функцию?
← →
B1en (2006-12-05 20:24) [2]Есть два обработчика событий, у которых один и тот же код, можно ли для этиих событий написать код один раз не дублируя его!
← →
Dmitrij_K (2006-12-05 20:32) [3]Удали один обработчик, например пункта меню
открой окно со списком событий пункта меню, в поле OnClick выбери существующее событие из списка
← →
Kolan © (2006-12-05 20:35) [4]> [2] B1en (05.12.06 20:24)
> Есть два обработчика событий, у которых один и тот же код,
> можно ли для этиих событий написать код один раз не дублируя
> его!
Да(может можно и подругому..), для этого код выделяется в функцию/процедуру и вызывается.
1 Вариант.
Два обработчика:procedure TForm3.BitBtn1Click(Sender: TObject);
begin
DoSmth;
end;
procedure TForm3.FormCreate(Sender: TObject);
begin
DoSmth;
end;
Думаю назначить совершенно разным событиям(разного типа с разными параметрами) неполучится а вот одинаковм - да.
2 Вариант(только дяля похожих событий.TForm3 = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
published
procedure MyEvent(Sender: TObject);
end;
А теперь это MyEvent назначеешь прямо через Object Inspector.
← →
Kolan © (2006-12-05 20:36) [5]> Удали один обработчик, например пункта меню
> открой окно со списком событий пункта меню, в поле OnClick
> выбери существующее событие из списка
Да, чегойто я, правильно.
← →
Loginov Dmitry © (2006-12-05 20:40) [6]ActionList
← →
Barloggg (2006-12-06 10:56) [7]а я еще круче замесил.
у меня вообще все onClick подходящие по синтаксису собраны в один обработчик который выглядит такprocedure TMainForm.ButtonClick(Sender: TObject);
begin
if sender=N1 then showform("CheckForMenuEnabled");
if sender=N2 then showform("LoadCreateGame");
if sender=N4 then showform("LoadCreateGame");
if sender=N5 then application.Terminate;
if sender=Button2 then bg.createplayer("FromScreen");
if sender=Button3 then hideall;
if sender=Button4 then hideall;
if sender=Button5 then bg.createplayer("FromBase");
кстати видно как некоторые кнопки вызывают одни и теже обработчики. Просто из разных группбоксов вызываются.
правда затраты большие при каждом клике получаются, но это же не шутер, да и процы у нас пламенные теперь.
← →
Dmitrij_K (2006-12-06 10:59) [8]
> правда затраты большие при каждом клике получаются
На несколько десятков тактов
:)
Лишнюю миллисекунду работает
← →
Barloggg (2006-12-06 11:06) [9]если не сотен, ибо у меня списки уже на полтинник объектов существуют :)
ну да это не важно для большинства программ.
Зато как сказочно текст читается, особенно если его еще и отсортировать. правда двойным кликом теперь прямо в обработчик не попадешь, но это побочный эффект.
← →
Anatoly Podgoretsky © (2006-12-06 11:11) [10]> Barloggg (06.12.2006 10:56:07) [7]
Да круто получается :-)
Это же надо до такого додуматься.
← →
Anatoly Podgoretsky © (2006-12-06 11:11) [11]> Barloggg (06.12.2006 11:06:09) [9]
И ты еще жив?
И почему это двойным кликом не попадешь?
← →
Barloggg (2006-12-06 11:17) [12]потому что двоной клик приведет меня к этому списку. а в нем предстоит еще найти уже ручками нужный обработчик и кликнуть с ctrl и попасть в другую процедуру, а к случае скажем
showform("CheckForMenuEnabled");
я попаду в процедуру где еще предстоит найти нужный кусок.
Я считаю такой подход жизненной необходимостью когда число кнопочек, галочек, и всякой подобной фигни зашкаливает за пару сотен и все долны как-то реагировать.
вот у меня есть файл формы без вложенных в нее картинок размером почти мегабайт. Там такая куча контролов, просто обалдеть. а процедура всего одна. этот самый "общий обработчик" который сразу же отсылает в другой модуль.
← →
Anatoly Podgoretsky © (2006-12-06 11:24) [13]> Barloggg (06.12.2006 11:17:12) [12]
Обалдеть
← →
Loginov Dmitry © (2006-12-06 16:03) [14]> когда число
> кнопочек, галочек, и всякой подобной фигни зашкаливает за
> пару сотен
Выкинь такую прогу. Shift+Delete тебе поможет.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.12.24;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.041 c