Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Много форм


Автор: SanLLIer 1.2.2010, 16:52
Собственно сабж: в проекте 5 форм. Как сними правильно работать? Прикол в том, что иногда при открытии новой формы выскакивает ошибка, но нажимаешь на кнопку еще раз и все нормально. Или когда закрываешь форму и возвращаешься обратно на "главную", то на ней перестают реагировать все кнопки и т.д...
Как правильно обращаться со всем этим хозяйством, открывать/закрывать формы? 

Автор: profesiachuvak 1.2.2010, 17:16
Ну для начала нужно выяснить как Вы ими управляете. 

- Каким способом создаются формы (динамически?). 
-Привести какой-нибудь кусок кода, где вы пытаетесь закрывать\открывать формы. (обработчик на событие ButtonClick)


Автор: SanLLIer 1.2.2010, 17:30
На кнопке:
Код

procedure TFMain.SpeedButton1Click(Sender: TObject);
begin
Lib_dialog:=TLib_dialog.Create(Application);
Lib_dialog.ShowModal;
end;

Форма в списке Available Forms. 
При попытке открыть таким "макаром" форму выдает ошибку: "Rised exception class EAсcess Violation with message..."

Автор: former 1.2.2010, 18:47
SanLLIer, необходимо в меню Project/Options... в дереве выбрать Forms,  и убрать из списка Auto-create forms форму Lib_dialog.

Автор: SanLLIer 1.2.2010, 18:56
Цитата(SanLLIer @  1.2.2010,  17:30 Найти цитируемый пост)
Форма в списке Available Forms. 


Автор: former 1.2.2010, 20:37
SanLLIer, стормозил. smile 

А в обработчиках OnCreate и OnClose вызываемой формы что прописано? Вообще, с пустой формой работает?

Автор: SanLLIer 1.2.2010, 20:52
Итак. Вроде чуток разобрался. теперь проблема вот в чем. Я модально открываю форму выбора файла (не диалог открытия файла, а свою форму!) и выбрав файл жму открыть его. И по идее должна открыться новый формы (редактор) и при этом закрыться форма выбора файла и главная форма. Но вылетает та-же ошибка. Причем если убрать строку открытия формы редактора, то все норм...
Код

begin
FLogin.lib_edit_name:=Grid.Cells[0, Grid.Row];
FLogin.lib_lesson:=Grid.Cells[1, Grid.Row];
if FLogin.IsFormOpen('FMain') then           
  FMain.Hide;
Lib_dialog.Close;
if not FLogin.IsFormOpen('Editor') then
  Editor.Show;  
end; 

Автор: SanLLIer 2.2.2010, 19:56
Ну что? Нет идей?
Так и не поборол "траблу" с открытием новой формы, нажатием на кнопку на МодальноОткрытой форме...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)