![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 11.05.2007
Сообщений: 8
|
![]()
Помогите разобраться с формами. Хотелось бы в процессе работы программы каждым нажатием кнопки создавать на MDIForm новую однотипную MDIChild, которые при необходимости можно было бы потом закрыть, а не только свернуть. Реально ли это? Заранее благодарен.
|
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 02.02.2007
Сообщений: 29
|
![]()
Вполне реально
![]() Чтобы форма закрывалась, в OnClose Child-формы нужно добавить строчку Action := caFree; И создавать новую форму тоже достаточно просто: var fmChild: TfmChild; begin fmChild := TfmChild.Create(Application); end; Чтобы впоследствии можно было работать с этой формой, нужно сохранить указатель на нее. Например, сделать так: var List: TList; implementation procedure Form1.Button1Click(Sender: TObject); var fmChild: TfmChild; begin fmChild := TfmChild.Create(Applicatin); List.Add(fmChild); end;
Быстро пойманный эксепшн исключением не считается
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 11.05.2007
Сообщений: 8
|
![]()
Прошу прощения за дилетантизм, но хочется разобраться. fmChild у меня грузится сразу... Или ее Style нужно сделать нормальным?
![]() ![]() |
![]() |
![]() |
![]() |
#4 |
Регистрация: 11.05.2007
Сообщений: 8
|
![]()
Все! Зафунциклировало!!!
![]() |
![]() |
![]() |
![]() |
#5 |
Регистрация: 11.05.2007
Сообщений: 8
|
![]()
Гм... Рано обрадовался. Работать-то работает, но вот по части указателя как рыба об лед
![]() var ... List: TList; implementation ... procedure TForm1.CreateChildFormT(const childName : string); var Child1: TfrTerminal; begin Child1 := TfrTerminal.Create(Application); Child1.Caption := childName; //List.Add(Child1); end; Прога с этим "List" компилится, но при создании формы выскакивает все то же "Access violation..." ![]() |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 02.02.2007
Сообщений: 29
|
![]()
Насчет того, что fmChild создается сразу: можно или подправить файл проекта *.dpr, убрав Application.CreateForm(fmChil), либо в меню Project -> Options на вкладке Forms убрать fmChild из списка Auto-create form
![]() А по указателям... лучше скинь весь исходник ![]() ![]()
Быстро пойманный эксепшн исключением не считается
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 02.02.2007
Сообщений: 29
|
![]()
Кстати по работе со списком: доступ к окнам можно получить так:
procedure TForm1.btnChangeTitleClick(Sender: TObject); var fmChild: TfmChild; i: integer; begin // поиск активной формы for i := 0 to List.Count - 1 do begin fmChild := List.Items[i]; if fmChild.Active then break; end; fmChild.Caption := Edit1.Text; end;
Быстро пойманный эксепшн исключением не считается
|
![]() |
![]() |
![]() |
#8 |
Регистрация: 11.05.2007
Сообщений: 8
|
![]()
Вот! В самое туда!
![]() ![]() for i:=0 to 100 do begin Child1 := List.Items[i]; if Pos('Порт открыт',Child1.Caption)>0 then begin Child1.Caption := 'Порт не подключен.'; goto m1; end; end; m1: |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Закрытие формы MDIChild в MDI приложении | Avalonix | Общие вопросы Delphi | 4 | 29.05.2008 16:45 |
MDICHild oкно в МОДАЛЬНОМ режиме | MARA | Компоненты Delphi | 5 | 20.02.2007 06:46 |