Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / MDI / 8 сообщений из 8, страница 1 из 1
21.05.2003, 16:40
    #32165355
kitty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDI
Подскажите, пожалуйста, как правильно обращаться к компонентам дочерней формы MDI приложения.
Заранее благодарю!
...
Рейтинг: 0 / 0
21.05.2003, 16:43
    #32165364
Voha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDI
А конкретнее.
...
Рейтинг: 0 / 0
21.05.2003, 16:54
    #32165378
kitty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDI
допустим, я открываю дочернюю форму и хочу присвоить заголовку лейбла время открытия этой формы.
Вот так.
...
Рейтинг: 0 / 0
21.05.2003, 16:59
    #32165382
Voha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDI
Код: plaintext
1.
2.
Frm:=TFrm.Create(Application);
Frm.Caption:='sdfvcedfvewrfv rg';
Frm.Show();

Может єто?
...
Рейтинг: 0 / 0
21.05.2003, 17:03
    #32165389
kitty
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDI
Спасибочки, это!
...
Рейтинг: 0 / 0
21.05.2003, 17:07
    #32165392
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDI
2 kitty

Обращение непосредственно к компонентам дочерней формы из MDI порочный путь. Надо использовать свойства и методы дочерних форм. Например. Стандартная ситуация реализации пункта меню и кнопки панели инструментов Сохранить.
1. В проекте есть форма frmMDI, базовая дочерняя форма frmBaseMDIChild. Этого достаточно, чтоб реализовать базовую функциональность.
2. В форме frmBaseMDIChild создаем паблик метод procedure Save(Sender: TObject); virtual; c пустой реализацией.
3. В форме frmBaseMDIChild создаем паблик свойство property Modified: boolean; read SetModified write GetModified;
4. На форме frmMDI в TActionList создаем Action acSave, который будет отвечать за фунцию сохранения.
5. В обработчике acSave.OnUpdate пишем

(Sender AS TAction).Enabled := (ActiveMDIChild <> nil) and (ActiveMDIChild AS TfrmBaseMDIChild).Modified

чтоб зазрешать или запрешать пункт меню.
6. В обработчике acSave.OnUpdate пишем
(ActiveMDIChild AS TfrmBaseMDIChilde).Save(Sender)
7. Теперь все дочерние формы наследуем от TfrmBaseMDIChilde и реализуем нужные методы.

Часть базовых методов можно реализовать и в базовой форме, как например сортировка текущего набора данных в гриде.

PS. пока писал свой опус, новая инфа появилась. Такие вещи, как установка Caption тоже лучше делать в дочерней форме, например в методе Init();
...
Рейтинг: 0 / 0
21.05.2003, 17:08
    #32165394
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDI
Пункт 6 следует читать

6. В обработчике acSave.OnExecute пишем
(ActiveMDIChild AS TfrmBaseMDIChilde).Save(Sender)
...
Рейтинг: 0 / 0
21.05.2003, 17:23
    #32165410
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MDI
Вот же блин!!! И в пункте 3 имена методов read/write перепутал. :-(
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / MDI / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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