Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.05.2013, 17:45
Sheitan48 Sheitan48 вне форума
Прохожий
 
Регистрация: 05.05.2013
Сообщения: 11
Версия Delphi: RAD Studio 2010
Репутация: 10
Восклицание Не корректно работает второй раз Form.Show

Есть несколько форм, цикл их запуска и заполнения таков
Код:
Form1 -> Form1.Hide; Form2.Show;
Form2 -> Form3.ShowModal;
Form3 -> Form2.Hide;  Form3.Hide;  Form5.Show;
Form5 -> Form5.Hide;  Form6.Show;
Form6 -> Form6.Hide;  Form7.Show;
Form7 -> Form7.Hide;  Form8.Show;

Далее на восьмой форме нужно нажать кнопку и еще раз перейти к заполнению Form2(ну и далее еще раз все формы по циклу), но при выполнении
Код:
procedure TForm8.Button2Click(Sender: TObject);
begin
  Form8.Hide;
  Form2.Show;
end;
вторая форма открывается но ничего на ней нажать или изменить я не могу. В чем может быть проблема?
Ответить с цитированием
  #2  
Старый 19.05.2013, 17:53
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

а если вместо showmodal просто show?
и лучше бы создавать и разрушать их
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
Этот пользователь сказал Спасибо Mrak за это полезное сообщение:
Sheitan48 (19.05.2013)
  #3  
Старый 19.05.2013, 18:00
Sheitan48 Sheitan48 вне форума
Прохожий
 
Регистрация: 05.05.2013
Сообщения: 11
Версия Delphi: RAD Studio 2010
Репутация: 10
По умолчанию

Цитата:
Сообщение от Mrak
а если вместо showmodal просто show?
и лучше бы создавать и разрушать их
Там showmodal только одна третья форма открывается, на ней несколько DBText'ов в которых показывается выбранная на второй форме информация...

Что есть создавать и разрушать формы?
Создание форм в проджекте по дефолту, ничего не менял
Код:
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.Title := 'Абитуриент';
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm3, Form3);
  Application.CreateForm(Tdm, dm);
  Application.CreateForm(TForm5, Form5);
  Application.CreateForm(TForm6, Form6);
  Application.CreateForm(TForm7, Form7);
  Application.CreateForm(TForm8, Form8);
  Application.CreateForm(TForm9, Form9);
Ответить с цитированием
  #4  
Старый 19.05.2013, 18:13
Sheitan48 Sheitan48 вне форума
Прохожий
 
Регистрация: 05.05.2013
Сообщения: 11
Версия Delphi: RAD Studio 2010
Репутация: 10
По умолчанию

О_О Эм, нифига не понял с чем это связано, но да, убрал showmodal с третьей формы и вторая нормально открылась и заработала... В чем прикол?)))
Ответить с цитированием
  #5  
Старый 19.05.2013, 18:13
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

ну меня смущает, что со второй модально третью, а с нее пятую, а в оконцове опять вторую.

Проект - настройки - формы - из списка автосоздаваемых убрать все, кроме первой. При вызове формы
Код:
if (not Assigned(Form2)) then Form2:=TForm2.Create(form2);  form2.show;
на onClose
Код:
 Action:=caFree;
  form2:=nil;

У самого были траблы именно с showmodal, непонятная ошибка с чтением памяти при повторных показах окна. Вылечилось через show.
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
Этот пользователь сказал Спасибо Mrak за это полезное сообщение:
Sheitan48 (19.05.2013)
  #6  
Старый 19.05.2013, 18:22
Sheitan48 Sheitan48 вне форума
Прохожий
 
Регистрация: 05.05.2013
Сообщения: 11
Версия Delphi: RAD Studio 2010
Репутация: 10
По умолчанию

Я так понимаю при
Код:
Action:=caFree;
 form2:=nil;
у меня все содержимое формы будет очищаться? А значит если у меня сначала происходит заполнение а обработка заполненного происходит на последней восьмой форме у меня посыпятся ошибки? тогда не подойдет...
Да и смысл в том что это программка заполнения заявления абитуриента на поступление в вуз на определенную специальность, соответственно когда пытаюсь открыть второй раз вторую форму - значит пользователь хочет заполнить заявление еще на одну специальность и нужно чтобы уже введенные им данные остались на своих места на всех формах))

Но тем не менее запомню этот "финт ушами" с созданием форм ручками) И да, спасибо за подсказку с showmodal
Ответить с цитированием
  #7  
Старый 19.05.2013, 18:33
Аватар для Mrak
Mrak Mrak вне форума
Местный
 
Регистрация: 26.01.2013
Адрес: МО
Сообщения: 438
Версия Delphi: XE2
Репутация: 17
По умолчанию

да, очистится, это уберет форму из памяти.
у меня уже привычка их в момент вызова создавать и ломать потом. как-то правильнее себя чувствуешь

пожалуйста
__________________
Я за здоровый экстрим!
Спасибо за "спасибо")
Ответить с цитированием
Этот пользователь сказал Спасибо Mrak за это полезное сообщение:
Sheitan48 (22.05.2013)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:42.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter