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

Может єто?
...
Рейтинг: 0 / 0
MDI
    #32165389
kitty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибочки, это!
...
Рейтинг: 0 / 0
MDI
    #32165392
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
MDI
    #32165394
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пункт 6 следует читать

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


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