|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.05.2007, 18:25 | #1 |
Регистрация: 11.05.2007
Сообщений: 8
|
MDIChild на MDIForm
Помогите разобраться с формами. Хотелось бы в процессе работы программы каждым нажатием кнопки создавать на MDIForm новую однотипную MDIChild, которые при необходимости можно было бы потом закрыть, а не только свернуть. Реально ли это? Заранее благодарен.
|
11.05.2007, 18:46 | #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;
Быстро пойманный эксепшн исключением не считается
|
11.05.2007, 20:42 | #3 |
Регистрация: 11.05.2007
Сообщений: 8
|
Прошу прощения за дилетантизм, но хочется разобраться. fmChild у меня грузится сразу... Или ее Style нужно сделать нормальным? Закрывается... Но вот после того, как я давану на Button1, выскакивает "Access violation..." Где я торможу?
|
12.05.2007, 17:10 | #4 |
Регистрация: 11.05.2007
Сообщений: 8
|
Все! Зафунциклировало!!! Разобрался. Новые окошки появляются рядами и колоннами от одной единственной кнопки! Спасибо!
|
13.05.2007, 20:03 | #5 |
Регистрация: 11.05.2007
Сообщений: 8
|
Гм... Рано обрадовался. Работать-то работает, но вот по части указателя как рыба об лед Растолкуйте, пожалуйста, кто-нибудь, как мне, к примеру, получить доступ к Caption этих форм?
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..." |
14.05.2007, 08:28 | #6 |
Пользователь
Регистрация: 02.02.2007
Сообщений: 29
|
Насчет того, что fmChild создается сразу: можно или подправить файл проекта *.dpr, убрав Application.CreateForm(fmChil), либо в меню Project -> Options на вкладке Forms убрать fmChild из списка Auto-create form
А по указателям... лучше скинь весь исходник В том коде который ты привел проблем быть не должно, наверное глюк где-то в другом месте... (Кстати сам список то создан? Ну, типа List := TList.Create; ?
Быстро пойманный эксепшн исключением не считается
|
14.05.2007, 08:40 | #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;
Быстро пойманный эксепшн исключением не считается
|
15.05.2007, 13:16 | #8 |
Регистрация: 11.05.2007
Сообщений: 8
|
Вот! В самое туда! Я с этим List как мартышка с очками, так и не надыбал вчера методом тыка синтаксиса команды. А в книжках что-то по этому ничего нет. Спасибо! Зафунциклировало-2!
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 |