Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как написать общую для всех форм процедуру закрытия формы? / 25 сообщений из 40, страница 1 из 2
18.12.2003, 17:35
    #32357172
Hel975
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
???
...
Рейтинг: 0 / 0
18.12.2003, 17:40
    #32357180
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
Для одной (FormFirst) формы пишешь OnCloseQuery (или что там нравится) , из истальных делаешь доступной эту форму через USES, и в обработчиках события OnCloseQuery этих форм указываешь FormFirst.OnCloseQuery

Или тебе код нужен?
...
Рейтинг: 0 / 0
18.12.2003, 17:47
    #32357189
Hel975
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
Я создаю actionlist, расположил его в главной форме и хочу, что во всех дочерних формочках по нажатию кнопочки Close, вызывался этот action. Так вот мне нужно написать процедуру для этого action. У меня MDI приложение.
...
Рейтинг: 0 / 0
18.12.2003, 18:23
    #32357239
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
То же самое, только вопрос у тебя, наверное, "Как убить дочернюю MDI - форму"?
...
Рейтинг: 0 / 0
18.12.2003, 18:50
    #32357255
Как написать общую для всех форм процедуру закрытия формы?
Создайте форму, с кнопкой Close. В обработчике нажатия этой кнопки вызывайте нужный action. Все дочерние формы унаследуйте не от TForm, а от созданной формы.
...
Рейтинг: 0 / 0
18.12.2003, 18:54
    #32357261
pima
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
А убить MDI-форму - в OnClose Action := caFree
...
Рейтинг: 0 / 0
19.12.2003, 09:17
    #32357496
Hel975
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
Неа, Дмитрий Лобань прав. А по-другому можно сделать? Еще раз. Я не хочу писать в каждой из 20 форм обработчик события по нажатию кпонки Закрыть. И спрашивал можно ли написать универсальную процедуру, подходящую для всех форм.
...
Рейтинг: 0 / 0
19.12.2003, 09:32
    #32357501
Berg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
2Hel975:
А что просто сделать USES MainForm в дочерних формах и, скажем в OnCreate дочерней формы: OnClose := MainForm.OnCloseQuery не проходит?
...
Рейтинг: 0 / 0
19.12.2003, 09:47
    #32357513
Hel975
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
Не подходит. Причем тут MainForm.OnCloseQuery?
Еще раз. У меня есть action - actClose. Я его цепляю к кнопочки - Закрыть форму. Пишу обработчик. Что типа:

procedure TfrmMain.actCloseExecute(Sender: TObject);
begin
....
Close;
end;

Во всех формах, где есть аналогичная кнопочка вызывается этот action.
Так вот что вместо Close надо написать, чтобы у меня закрывалась не та форма, где находиться ActionList, а форма, где нажата кнопка Закрыть?
Или я не понимаю ваше решение?
...
Рейтинг: 0 / 0
19.12.2003, 10:10
    #32357532
Как написать общую для всех форм процедуру закрытия формы?
А если не использовать action?
Все действия которые у вас выполняются в actione выполняйте в обработчике нажатия кнопки Close формы предка.
...
Рейтинг: 0 / 0
19.12.2003, 10:13
    #32357537
Hel975
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
Дмитрий ваш метод хорош я не спорю. А по другому можно сделать или это единственное решение?
...
Рейтинг: 0 / 0
19.12.2003, 10:34
    #32357561
LexusR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
- Обратится в Action-е к компоненту который его вызвал
- спросить у него кто его родительская форма
- закрыть ее
Код: plaintext
1.
2.
3.
4.
5.
procedure TForm1.acCloseFormExecute(Sender: TObject);
begin
  TForm(TButton(TAction(sender).ActionComponent).Parent).Close;
end;

...
Рейтинг: 0 / 0
19.12.2003, 10:48
    #32357581
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
1. Создать форму и прописать все че надо.
2. Унаследовать прочие формы от нее.
если другие формы уже есть - делаем 1 и в описании других форм меняем class.
over.
...
Рейтинг: 0 / 0
19.12.2003, 10:52
    #32357586
Hel975
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
Это решение я и хотел услышать. Только у меня компилятор выдает ошибку - [Error] uMAIN.pas(106): Undeclared identifier: 'ActionComponent'
Заменил вместо ActionComponent ActionList, TButton - TSpeedButton. Программа запискается, но формы не закрываются, хотя в эту процедуру заходят. Посмотрел в дебугере. :-(
...
Рейтинг: 0 / 0
19.12.2003, 10:55
    #32357595
LexusR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
зачем ActionList
нужно именно ActionComponent - это и будет ваша кнопка
а уже от кнопки идете выше
если кнопка лежит непосредственно на форме то будет как в моем примере
если есть промежуточные контролы то нужно будет дальше проходить по Parent-ам
...
Рейтинг: 0 / 0
19.12.2003, 10:57
    #32357602
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
> all
через одно место и в рай ...
...
Рейтинг: 0 / 0
19.12.2003, 10:59
    #32357609
Hel975
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
есть промежуточный - панель
...
Рейтинг: 0 / 0
19.12.2003, 11:00
    #32357610
Hel975
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
2 KirillovA,
Не хами...
...
Рейтинг: 0 / 0
19.12.2003, 11:03
    #32357628
Hel975
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
2 LexusR,
Выдает всю ту же ошибку. Что добавить то?
...
Рейтинг: 0 / 0
19.12.2003, 11:03
    #32357629
LexusR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
тогда
Код: plaintext
1.
2.
3.
4.
5.
procedure TForm1.acCloseFormExecute(Sender: TObject);
begin
  TForm(TPanel(TSpeedButton(TActio(sender).ActionComponent).Parent).Parent).Close;
end;

...
Рейтинг: 0 / 0
19.12.2003, 11:04
    #32357632
LexusR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
procedure TForm1.acCloseFormExecute(Sender: TObject);
begin
TForm(TPanel(TSpeedButton(TAction(sender).ActionComponent).Parent).Parent).Close;
end;
...
Рейтинг: 0 / 0
19.12.2003, 11:04
    #32357636
LexusR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
у меня в Delphi6 все работает
...
Рейтинг: 0 / 0
19.12.2003, 11:05
    #32357638
Hel975
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
Я понимаю. Именно так и сделал, компилятор выдает ту же ошибку - [Error] uMAIN.pas(106): Undeclared identifier: 'ActionComponent'
Может какой то библиотеки не хватает?
...
Рейтинг: 0 / 0
19.12.2003, 11:06
    #32357642
KirillovA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
компонента не хватает
...
Рейтинг: 0 / 0
19.12.2003, 11:08
    #32357647
LexusR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как написать общую для всех форм процедуру закрытия формы?
ActionComponent - это свойство TAction - и всяко должно быть
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как написать общую для всех форм процедуру закрытия формы? / 25 сообщений из 40, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]