|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
|  | 
 | 
|  | Опции темы | Поиск в этой теме | Опции просмотра | 
| 
			 
			#1  
			
			
			
			
		 | |||
| 
 | |||
|  Основное окно закрывается, появляется дополнительное Добрый вечер! Первое - пршу прощения у модераторов - я позавчера кажется ничего не нарушал - это либо у меня нет плохо фурычил - либо у вас чего-то на серваке... Теперь вопрос: В проекте естьдва окна главное и 2-е. так вот для onClose главного окна написал такой код: Код: Form2.Show; Что делать? Может не то событие я обрабатываю? Собственно налдо чтобы главное окно (приложение) законрчило свою работу после того как отработает дополнительное окно Неужели никто с такой проблемой не сталкивался?? Последний раз редактировалось M.A.D.M.A.N., 20.02.2013 в 08:37. | 
| 
			 
			#2  
			
			
			
			
		 | |||
| 
 | |||
|   Сталкивался. Проблема в том, что главное окно и есть основная программа (т.е. главная WndProc), когда оно закрывается, то происходит завершение всей программы. Если тебе надо показать еще одно окно после, фактически,  завершения программы, то тебе надо в .dpr файле после вызова Application.Run добавить код показа этого окна: 1. "Выкидываешь" Form2 из списка автосоздаваемых форм. 2. Открываешь файл проекта (Project -> View source) 3. Добавляешь примерно такой код: Код: begin
    Application.Initialize;
    Application.CreateForm(TMainForm, MainForm);
    Application.Run;
    // Показываем вторую форму
    With Form2.Create(Nil) Do
      Begin
        Show;
        Update;
        Sleep(5000); // Показваем форму в течении 5 сек.
        Free;
      End;
end.Код выше только для примера, если тебе надо, что бы юзер что-то сделал в этом окне, то надо будет сделать отслеживание этого и закрывать окно по действию пользователя. | 
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
|  
lostbananan (20.02.2013)
 | ||
| 
			 
			#3  
			
			
			
			
		 | |||
| 
 | |||
|   Спасибо! Попробую завтра - сегодня я уже устал... Уже пробывал - чего-то не получается - на Sleep(5000); ругается неопредделенный идентификатор, когда слип заремарир в ран-тайм режиме выдает система ошибку EAcsessViolation// чтение по адресу 00000.. Чьто не так: вот весь код моего проекта: Код: program Loh1;
uses
  Forms,
  main in 'main.pas' {Form1},
  Unit2 in 'ini\Головна\1\Unit2.pas' {Form2};
{$R *.res}
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
  // Показуємо додаткову форму форму
    With Form2.Create(Nil) Do
      Begin
        Show;
        Update;
//        Sleep(5000);
        Free;
      End;
end.Последний раз редактировалось M.A.D.M.A.N., 20.02.2013 в 09:17. | 
| 
			 
			#4  
			
			
			
			
		 | ||||
| 
 | ||||
|   Дак оно не создано, вот и ругается EAccessViolation. TForm2.Create | 
| 
			 
			#5  
			
			
			
			
		 | |||
| 
 | |||
|   Моржет я чего-то недопонимаю но по поводу создания окна, вот код: Код: With Form2.Create(Nil) Do
      Begin
        Show;
        Update;Код:  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
    // Ïîêàçóºìî äîäàòêîâó ôîðìó ôîðìó
    TForm2.Create(Nil);
    With Form2.Create(Nil) Do
      Begin
        Show;
        Update;
//        Sleep(5000);
        Free;
      End;Последний раз редактировалось lostbananan, 20.02.2013 в 10:39. | 
| 
			 
			#6  
			
			
			
			
		 | ||||
| 
 | ||||
|   TForm2.Create я уже писал тебе. Код: With TForm2.Create(Nil) Do | 
| 
			 
			#7  
			
			
			
			
		 | |||
| 
 | |||
|   Такой код:  Все-равно аксес виолатион и при этом программа зависает! Код: With TForm2.Create(Nil) Do
      Begin
        Show;
        Update;
//        Sleep(5000);
        Free;
      end; | 
| 
			 
			#8  
			
			
			
			
		 | |||
| 
 | |||
|   Кно-нибудь, помогите разобраться!! и еще вопрос + к предыдущему а я могу из второй формы видеть первую и наоборот? Если да - то как? Последний раз редактировалось lostbananan, 20.02.2013 в 14:08. | 
| 
			 
			#9  
			
			
			
			
		 | ||||
| 
 | ||||
|   Всеж написали уже, куда еще-то. | 
| Этот пользователь сказал Спасибо Aristarh Dark за это полезное сообщение: | ||
|  
lostbananan (20.02.2013)
 | ||
| 
			 
			#10  
			
			
			
			
		 | ||||
| 
 | ||||
|   Можно сделать и так: Код: Form2 := TForm2.Create(Self); кидаем на первую форму баттон и вот это: Код: ... procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure Button1Click(Sender: TObject); procedure fc1; ... var Form1: TForm1; CnClose: boolean; ... uses Unit2; ... procedure TForm1.fc1; begin Form2:= TForm2.Create(Self); Form2.Show; Form1.Visible:= false; end; procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin CanClose:= CnClose; fc1; end; procedure TForm1.Button1Click(Sender: TObject); begin fc1; end; Код: ...
    procedure Button1Click(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure fc2;
...
uses Unit1;
...
procedure TForm2.Button1Click(Sender: TObject);
begin
fc2;
end;
procedure TForm2.fc2;
begin
CnClose:= true;
form1.Close;
end;
procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
fc2;
end; | 
| 
			 
			#11  
			
			
			
			
		 | |||
| 
 | |||
|   Сделал как в коде что в архиве (аорхив я распаковывл ) компилировал - все нормально работает... Показываю полны код своего проекта: Код: program Loh1;
uses
  SysUtils,
  Forms,
  main in 'main.pas' {Form1},
  Unit2 in 'ini\Ãîëîâíà\1\Unit2.pas' {Form2};
{$R *.res}
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
    // Ïîêàçóºìî äîäàòêîâó ôîðìó ôîðìó
   with TForm2.Create(nil) do
   begin
      Show;
      Update;
      Sleep(9000);
      Free;
    end;
 end.Может где еще у меня что-то неправильно? И еще : на какой вкладке палитры компонентов находятся компоненты опендиалог и саведиалог\? Последний раз редактировалось lostbananan, 20.02.2013 в 15:04. | 
| 
			 
			#12  
			
			
			
			
		 | |||
| 
 | |||
|   Мастера! Помогите!!! Компоненты диалогов уже нашел, а вот почему открытие второй (дополнительной) формы вызывает аксе виолатион (при этом форма таки появляется)??? Еще: Как указать в саве диалог чтобы имя файла сразу же бало и с расширением? Последний раз редактировалось lostbananan, 20.02.2013 в 16:02. | 
| 
			 
			#13  
			
			
			
			
		 | ||||
| 
 | ||||
|   Что у тебя в OnShow и OnCreate у второй формы? | 
| 
			 
			#14  
			
			
			
			
		 | |||
| 
 | |||
|   Вторая форма - это неглавная? у нее там ничего, у главной формы - онСоу - ничего, в онКреате - чтение из ини-файла... | 
| 
			 
			#15  
			
			
			
			
		 | ||||
| 
 | ||||
|   Какой-то код у меня во второй форме падает, смотри что у тебя там. | 
|  | 
 | 
| Опции темы | Поиск в этой теме | 
| Опции просмотра | |
| 
 | 
 |