20 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 22
1

Как изменить Memo активного дочернего окна MDI приложения?

14.09.2010, 09:58. Показов 2642. Ответов 7
Метки нет (Все метки)

Добрый день,

задача:
MDI приложение, у которого есть доп. инфорамционное окно (не дочернее), в котором можно запретить изменение компонента Memo активного дочернего окна

Проблема в том, что я не знаю как обратиться к компоненту Memo активного окна

если делать так

Delphi
1
MainForm.ActiveMDIChild.Memo1.ReadOnly := true;
то компилятор ругается, что Memo1 - необъявленна, наверное потому как, ActiveMDIChild типа TForm, а дочернее окно создается типа TChildBox, в котором и описано Memo1
пробовала завести переменную типа TChildBox в юните главной формы, но не знаю как ей присвоить активную дочернюю форму, помогите пожалуйста разобраться
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.09.2010, 09:58
Ответы с готовыми решениями:

MDI: При вызове активного дочернего окна пункты его menuStrip отображались на menuStrip родителя
Есть родительская форма, на форме menuStrip с пунктами: Item1, Item2, Item3. Есть дочерняя форма,...

Как получить дескриптор дочернего активного окна?
Есть дескриптор (HWND hWnd) какого-то окна (левого, не относящегося к моей программе). Нужно...

Как в MDI спрятать панельку, отображающуюся при сворачивании дочернего-окна?
Скажите, пожалуйста, как в MDI приложении спрятать панельку, отображающаяся при сворачивании...

Как заблокировать вызов нового дочернего окна пока не закрыто предыдущее в MDI parent form
Привет ребятушки!!! Не подскажете, как заблокировать открытие дочернего окна в родительском,...

7
Добрый самаритянин
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
14.09.2010, 15:12 2
0 to componentcount -1 do
if component[i].(class, name,...) = ... then
...
0
20 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 22
16.09.2010, 16:58  [ТС] 3
таким способом, как вы указали, я лишь могу узнать есть ли на форме компонент мемо, но изменить его свойства не могу
я нашла другое решение, добавила процедуру на событие onActivate дочерней формы и все заработало

Delphi
1
2
3
4
5
procedure TChildBox.FormActivate(Sender: TObject);
begin
  if ParForm.CheckBox1.Checked then Memo1.ReadOnly := true
    else Memo1.ReadOnly := false;
end;
0
Добрый самаритянин
1107 / 622 / 139
Регистрация: 31.03.2009
Сообщений: 2,567
16.09.2010, 17:14 4
Цитата Сообщение от madshe Посмотреть сообщение
таким способом, как вы указали, я лишь могу узнать есть ли на форме компонент мемо, но изменить его свойства не могу
Кто это сказал?
Вот пример на форме компонент memo
Delphi
1
2
3
4
5
6
7
8
procedure TForm1.Button1Click(Sender: TObject);
var
  i:Integer;
begin
  for i:= 0 to form1.ComponentCount - 1 do
    if form1.Components[i].ClassName= 'TMemo' then
      (form1.Components[i] as TMemo).ReadOnly :=true;
end;
Добавлено через 50 секунд
только у тя будет не форм1 а ActiveMDIChild
0
20 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 22
16.09.2010, 21:07  [ТС] 5
Цитата Сообщение от John_Pa9JIbHuK Посмотреть сообщение
(form1.Components[i] as TMemo).ReadOnly
ну вот этот момент я записывала не верно, точнее не знала, что надо так писать, потому и не получалось)
спасибо, что объяснил, возможно использую в следующий раз
0
Йошь-мыслитель
124 / 118 / 26
Регистрация: 22.02.2009
Сообщений: 698
Записей в блоге: 5
17.09.2010, 01:33 6
А можно в секции uses модуля обращающегося к дочерней форме указать модуль дочерней формы и не париться (если я, конечно, чего-то не упустил)
0
20 / 0 / 0
Регистрация: 14.09.2010
Сообщений: 22
17.09.2010, 13:03  [ТС] 7
ну дак модули и так все подключены между собой, это то здесь причем? (чего-то вы упустили, или я недопоняла)))
0
yashamayurov
22.08.2012, 10:47 8
Можно попробовать так:

TChildForm(MainForm.ActiveMDIChild).Memo1.ReadOnly :=True;

Где TChildForm - имя класса дочерней формы
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.08.2012, 10:47
Помогаю со студенческими работами здесь

Получить HWND активного дочернего окна
Дайте минимальный проверочный код который даст HWND активного дочернего окна. Если кто-то скажет...

Событие активации дочернего mdi окна
Добрый день! На форме создан QMdiArea, а в нем несколько дочерних mdi-окон. Есть ли какой-то...

Как изменить заголовок активного окна программы?
Имеется программа,в которой нужно изменить название окна, называется Rolloff cafe а нужно изменить...

Как изменить заголовок активного окна программы
Народ,помогите пожалуйста,Как изменить заголовок активного окна программы? Меняю Caption...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru