Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как запестить вторую форму из главной? 
:(
    Опции темы
Spawn
  Дата 24.6.2002, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 278
Регистрация: 3.6.2002

Репутация: нет
Всего: нет



В литературе написано, что если вторая форма не является автоматически создаваемой(в Project Options), то ее можно вызвать:

Application.CreateForm(TForm2,Form2);

но у меня что-то  не получается. В чем дело?
PM MAIL   Вверх
Song
Дата 24.6.2002, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Всё правильно написано. Откройте dpr файл и увидите там эти "вызовы".


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Spawn
Дата 24.6.2002, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 278
Регистрация: 3.6.2002

Репутация: нет
Всего: нет



Я попробовал закрузить форму из DLL, но при выполнении события ButtonClick:

Form1.Close;

произошел Error. Это как-то связано с тем, что форма была загружена из DLL?
Если так-скажите пожалуйста как надо правильно закрывать.
PM MAIL   Вверх
Song
Дата 24.6.2002, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Что-то я не уловил как соотносятся между собой форма созданная автоматически и форма, которая вызывается из DLL


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Spawn
Дата 24.6.2002, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 278
Регистрация: 3.6.2002

Репутация: нет
Всего: нет



Цитата(Song @ 24.6.2002, 18:54)
Что-то я не уловил как соотносятся между собой форма созданная автоматически и форма, которая вызывается из DLL

Да вобщем ни как - просто я решил попробовать с ДЛЛ. И все таки из за чего Еррор?
PM MAIL   Вверх
Spawn
Дата 24.6.2002, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 278
Регистрация: 3.6.2002

Репутация: нет
Всего: нет



Цитата(Spawn @ 24.6.2002, 17:08)
В литературе написано, что если вторая форма не является автоматически создаваемой(в Project Options), то ее можно вызвать:

Application.CreateForm(TForm2,Form2);

но у меня что-то  не получается. В чем дело?

До меня потом дошло, что надо было подключить модули, но при событии ButtonClick все равно актавизация формы не происходила :(  :(  :(
Подскажите плззззз. (Я создавал сначала Application, а потом к нему еще Form новый).
PM MAIL   Вверх
Free
  Дата 25.6.2002, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 4.6.2002
Где: Приморский край

Репутация: нет
Всего: нет



Попробуй так:
Код

Procedure TMainForm.Button1Click(Sender:TObject);
begin
with TChildForm.Create(Application) do
       Show; //Можно ShowModal
end;


Самое главное:
В дочерней форме надо прописать обработчик onClose
Код

procedure TChildForm.FormClose (Sender:TObject, var Action:TCloseAction);
begin
Action:=caFree;
end;


P.S. ChildForm - это имя твоей дочерней формы.
Надеюсь, поможет. :D
PM MAIL ICQ   Вверх
Vit
Дата 25.6.2002, 06:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Цитата(Spawn @ 24.6.2002, 13:13)
Я создавал сначала Application, а потом к нему еще Form новый

В DLL нельзя создавать Application - этот объект должен быть один на приложение(впрочем, вручную в приложении его тоже не рекомендуется ни создавать, ни разрушать). Если Вам в DLL приспичило поработать с ним - передайте его как параметер экспортируемой функции, и ни в коем случае нельзя его убивать в DLL.




--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Spawn
Дата 25.6.2002, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 278
Регистрация: 3.6.2002

Репутация: нет
Всего: нет



Цитата(Vit @ 25.6.2002, 07:42)
Цитата(Spawn @ 24.6.2002, 13:13)
Я создавал сначала Application, а потом к нему еще Form новый

В DLL нельзя создавать Application - этот объект должен быть один на приложение(впрочем, вручную в приложении его тоже не рекомендуется ни создавать, ни разрушать). Если Вам в DLL приспичило поработать с ним - передайте его как параметер экспортируемой функции, и ни в коем случае нельзя его убивать в DLL.

Когда я писал ето, то имел ввиду первый случай, в котором я говорил о активации неактивной формы(отключение автоматическо запуска в Опциях)
PM MAIL   Вверх
Vit
Дата 25.6.2002, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Честно говоря я ничего не понял из того что тебе нужно, давай сначала... Тебе надо создать форму вручную? Вызвать ее? показать? Откуда? - из dpr? из другой формы? из DLL? Попробуй опиши конкретно в чем у тебя проблема и что именно ты делаешь и чего именно ты хочешь получить.

PS. Чтобы ты не имел ввиду когда писал "Я создавал сначала Application, а потом к нему еще Form новый", этого делать нельзя.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Spawn
Дата 25.6.2002, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 278
Регистрация: 3.6.2002

Репутация: нет
Всего: нет



Цитата(Vit @ 25.6.2002, 15:43)
Честно говоря я ничего не понял из того что тебе нужно, давай сначала... Тебе надо создать форму вручную? Вызвать ее? показать? Откуда? - из dpr? из другой формы? из DLL? Попробуй опиши конкретно в чем у тебя проблема и что именно ты делаешь и чего именно ты хочешь получить.

PS. Чтобы ты не имел ввиду когда писал "Я создавал сначала Application, а потом к нему еще Form новый", этого делать нельзя.

Начну сначала: :)
мне требуется форма(в которой будут размещены опции моей программы) , которую можно будет вызвать например при нажатии на кнопку, вносить какие-либо изменения(настройки), с последующим их сохранением .
:baaa
PM MAIL   Вверх
Vit
Дата 25.6.2002, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



1) В дизайне создаешь форму со всем необходимым.
2) Удаляешь из DPR все ссылки на нее и ее создание (если они туда попали)
3) В вызывающей форме в Uses ( в секции Implementation) пишешь название модуля, типа

Код

Implementation

Uses Unit2;


4) Вот код для вызова формы (пишется в основной форме):
 
Код

With TForm2.Create(nil) do
 try
   Showmodal;
 finally
   free;
 end;


Никаких действий по разрушению формы в самой форме делать не надо - код разрушит ее сразу после закрытия.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Spawn
Дата 25.6.2002, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 278
Регистрация: 3.6.2002

Репутация: нет
Всего: нет



Можно-ли запросить массив компонентов главной формы во второй или инициализировать их во второй(что нить типа Button:array[1..21] of TButton)?
Просто мне нужно проделывать из второй формы с главной массовые операции с большим количеством однотипных компонентов.
PM MAIL   Вверх
Vit
Дата 25.6.2002, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Прописываешь во второй форме:

Implementation

Uses Unit1;

Теперь у тебя доступны контролы из главной формы на дополнительной:

Form2.Button1.Caption:='Ha-Ha'

из дополнительной на главной:

Form1.Button1.Caption:='Ha-Ha'

Как работать с однотипными контролами уже обсуждалось:

http://www.forum.vingrad.ru/cgi-bin....2;t=741


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Spawn
Дата 27.6.2002, 07:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 278
Регистрация: 3.6.2002

Репутация: нет
Всего: нет



а как моно обмениваться глобальными переменными между формами?
PM MAIL   Вверх
Spawn
Дата 27.6.2002, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 278
Регистрация: 3.6.2002

Репутация: нет
Всего: нет



Цитата(Spawn @ 27.6.2002, 08:36)
а как моно обмениваться глобальными переменными между формами?

Уже дошло :)  :)  :)
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1320 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.