Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2010, 12:33   #1
mercury
Новичок
Джуниор
 
Регистрация: 03.03.2010
Сообщений: 3
По умолчанию MDI форма

Здравствуйте, коллеги.

Столкнулся с проблемой:

Интерфейс программы основан на MDI.
На одной из дочерних форм (fsMDIChild) вызывается фрейм...

Проблема в том что из этого фрейма я не могу "достучаться" до формы на которой он расположен (fsMDIChild), хотя без проблем "достукивается" до главной (fsMDIForm)... (см. вложенный файл)

Код без проблем компелируется, но при исполнении возникает ошибка:

Project Project1.exe raised exception class EAccessViolation with message 'Access Violation at address 0045436D in module 'Project1.exe'. Read address 000002F8'. Process stopped. Use Step or Run to continue.

Как быть в данной ситуайции?
Вложения
Тип файла: rar _.rar (10.0 Кб, 8 просмотров)
mercury вне форума Ответить с цитированием
Старый 05.03.2010, 14:09   #2
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Ты создаешь форму, но ни где не сохраняешь ее))
Код:
  // создание новой формы
  if myForm = nil
    then Application.CreateForm(FormType, myForm);

  Form3 := TForm3(myForm);
  // показываем
  myForm.WindowState := wsMaximized;
  myForm.Show;
Но, я так понял, что тебе нужно сделать это через указатели без явного присваивания и приведения типов?

Последний раз редактировалось psycho-coder; 05.03.2010 в 14:16.
psycho-coder вне форума Ответить с цитированием
Старый 05.03.2010, 14:23   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

procedure TFrame2.Button1Click(Sender: TObject);
begin
// ShowMessage(Form3.Button1.Caption);
showmessage(tbutton(sender).Caption);
end;
//и можно убирать uses unit1, unit2
проблема в том что form3 не инициализированная переменная, но она нам на самом деле и не нужна. Чтобы узнать какая кнопка была нажать и существует параметр Sendder
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 05.03.2010 в 14:27.
evg_m вне форума Ответить с цитированием
Старый 05.03.2010, 14:28   #4
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
procedure TFrame2.Button1Click(Sender: TObject);
begin
// ShowMessage(Form3.Button1.Caption);
showmessage(tbutton(sender).Caption);
end;
//и можно убирать uses unit1, unit2
Неа) Не прокатит
Изображения
Тип файла: png picture.PNG (10.0 Кб, 149 просмотров)
psycho-coder вне форума Ответить с цитированием
Старый 05.03.2010, 15:05   #5
mercury
Новичок
Джуниор
 
Регистрация: 03.03.2010
Сообщений: 3
По умолчанию

Цитата:
Сообщение от psycho-coder Посмотреть сообщение
Ты создаешь форму, но ни где не сохраняешь ее))
Каким образом мне ее сохранить?
mercury вне форума Ответить с цитированием
Старый 05.03.2010, 15:46   #6
mercury
Новичок
Джуниор
 
Регистрация: 03.03.2010
Сообщений: 3
По умолчанию

Вот верное решение:

TForm3(Form1.ActiveMDIChild).Button 1.Caption;

Спасибо всем, кто принимал обсуждение
mercury вне форума Ответить с цитированием
Старый 05.03.2010, 17:43   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Цитата:
Вот верное решение:

TForm3(Form1.ActiveMDIChild).Button 1.Caption;
вернее будет верным до тех пор пока
не решишь использвать данный frame где-нибудь еще НО
где главная форма не Form1
где хозяин frame не Tform3
где главная форма не MDI
где вызов идет не через нажатие button1

TButton(sender).Caption
Sender специально для того что ЗНАТЬ кто конкретно это вызвал.
не требуюет никаких сведений о внешних формах form1, Tform3, MDIChild
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 05.03.2010 в 17:47.
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MDI формы SlavaSH Общие вопросы Delphi 3 11.04.2014 21:16
Передача параметра с MDI родителя в MDI child через DLL ByXalkin Общие вопросы Delphi 0 15.12.2009 17:21
MDI W0LF Общие вопросы Delphi 3 08.09.2009 23:53
MDICihild форма поверх всех компонентов в родительской MDI ? chandrasecar Общие вопросы Delphi 5 07.06.2009 17:48
MDI Child форма в единственном екземпляре VVVadim Общие вопросы Delphi 3 29.02.2008 18:18