Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Обращение к компоненту на дочерней форме MDI пр-я


Автор: NightWolf 4.11.2005, 12:46
Создаю текстовый редактор RTF файлов в виде MDI приложения, на child-формах лежит RichEdit1, как мне получиться к нему доступ, т.е. скажем изменить размер шрифта из панели на главной форме? smile

Автор: EDuard 4.11.2005, 13:01
Не знаю правильно ли я понял вопрос, но думаю что так:
Form2.richedit1.font.size:='14';

Автор: NightWolf 4.11.2005, 13:08
не работает, я зашел File->New->Other... там выбрал Projects и создал MDI Application там родительская форма MainForm а дочерняя MDIChild, пишу MDIChild. и никакого выпадающего меню нету, какбудто эта форма вообще в проекте не используется, захожу File->Use Units там говорит что все модули подключены smile

Автор: EDuard 4.11.2005, 13:16
Попробуй в ручную после implementation прописать в Uses MdiChild

Автор: NightWolf 4.11.2005, 13:38
пишет что файл не найден... блин не пойму что за фигня... попробуй сам создать подобное приложение и потыкайся, если не сложно...

Автор: Quadr0 4.11.2005, 14:07
...

Автор: NightWolf 4.11.2005, 15:01
smile
Quadr0 - very BIG RESPECT

Автор: m6a6g6 22.10.2009, 17:14
Не стал создавать новую тему.

В общем проблема следующая: нужно обратиться к компоненту дочерней формы (MDI приложение) из модуля данных (Data Module).
Дочерняя форма создается динамически, а главная MDI-форма и модуль данных создаются статически при старте приложения.

Дочерняя форма описана так:
Код

type
  TfNewDocument = class(TForm)
   ...
   // К этому компоненту надо обратиться
    lCaseNumber: TLabel;

  ......

var
  fNewDocument: TfNewDocument;


Она подключена к модулю данных:
Код

implementation

uses uNewDocument; // Unit дочерней формы


Пытаюсь обратиться к компоненту так:
Код

  fNewDocument.lCaseNumber.Caption:= 'Text';

Это вызывает ошибку Access Violation. Понимаю что так нельзя...

По примеру приведенному в данной теме попробовал так:
Код

  TfNewDocument(ActiveMDIChild).lCaseNumber.Caption:= 'Text';

Но я не пойму что указывать в скобках вместо ActiveMDIChild, объясните пожайлуста как это можно сделать.

Автор: m6a6g6 22.10.2009, 20:35
"Проблему" решил. 
Вот таким способом:
Код

TMyMDIChild(ActiveMDIChild).....

можно обращаться с формам-детям только из форм-родителей, иначе не получится. (Если я не прав - поправьте)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)