Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2010, 14:36   #1
Izlom
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 52
По умолчанию показ второй формы при создании первой (Delphi)

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

Я сделал так:

procedure TForm1.FormCreate(Sender: TObject);
begin;
Form2.Show;
...

Но при запуске выдает ошибку и показывает это:

Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2); <--- Возмущается этой строчкой.
Application.CreateForm(TForm3, Form3);

как я понял он просто еще не успел создать эту форму, а ее уже запрашивают.

Что делать в этом случае? как исправить?
Izlom вне форума Ответить с цитированием
Старый 01.06.2010, 14:48   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Убери Application.CreateForm(TForm2, Form2);
А в OnCreate главной формы напиши:
Код:
    var f:TForm2;

begin
    f:=TForm2.Create(nil);
    f.FormStyle:=fsStayOnTop;
    f.Show;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.06.2010, 14:56   #3
Vohakisa
Пользователь
 
Регистрация: 11.05.2009
Сообщений: 47
По умолчанию

Сталкивался с этой же проблемой, решил её так, что при первой загрузке главной формы вывести методом ShowModal другую форму, а при её закрытии завершить вывод главной формы.
Создание главной формы:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var ran:integer;
begin
loadp:=false;
SG_XY.Cells[2,0]:='X';
SG_XY.Cells[3,0]:='Y';
  LoadStringGrid(SG_A,getcurrentdir + '\Data\way.n');
  LoadStringGrid(SG_XY,getcurrentdir + '\Data\koord.n');
  LoadStringGrid(SG_D,getcurrentdir + '\Data\block.n');
end;
Вывод на экран главной формы, в которой реализован вывод дочерней формы:
Код:
procedure TForm1.FormShow(Sender: TObject);
begin
//Занесення назв населених пунктів в комбобокси
CB_Start.Items.Clear;
CB_Finish.Items.Clear;
for i:=1 to form1.SG_XY.RowCount-1 do begin
  CB_Start.Items.Add(Form1.SG_XY.Cells[1,i]);
  CB_Finish.Items.Add(Form1.SG_XY.Cells[1,i]);
end;
CB_Start.ItemIndex:=0;
CB_Finish.ItemIndex:=1;
//Ініціалізація циклу пронумеровки рядків і стовпчиків
for i:=1 to SG_XY.RowCount-1 do begin
  SG_A.Cells[0,i]:=IntToStr(i);
  SG_A.Cells[i+1,0]:=IntToStr(i);
  SG_XY.Cells[0,i]:=IntToStr(i);
end;
if loadp=false then begin
  FPrintBlock.ShowModal;
  loadp:=true;
end;
//Занесення даних із стрінггрідів в масив
for i:=1 to SG_A.RowCount - 1 do
  for j:=2 to SG_A.RowCount do
  if (SG_A.Cells[j,i] <> '-1') and (SG_D.Cells[j,i]<>'-1') then
    a[i,j-1]:=StrToInt(SG_A.Cells[j,i])
  else a[i,j-1]:=-1;
end;
//Процедура завантаження  данних із файлів
procedure TForm1.Load_DataClick(Sender: TObject);
begin
LoadStringGrid(SG_A,getcurrentdir + '\1.txt');
LoadStringGrid(SG_XY,getcurrentdir + '\koord.txt');
LoadStringGrid(SG_D,getcurrentdir + '\block.txt');
end;
P.S. Взял свой код со своей дипломной, которую через 2 недели сдавать. Красным цветом выделена реализация вывода дочерней формы перед выводом основной. Если, что не ясно, задавайте вопросы, при возможности отвечу.
P.P.S. Вожможно уважаемый Stilet, дал вам более простой способ, но я его не смог понять . поэтому дал свой пример реализации даной проблемы.

Последний раз редактировалось Vohakisa; 01.06.2010 в 14:59.
Vohakisa вне форума Ответить с цитированием
Старый 01.06.2010, 15:16   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
при первой загрузке главной формы вывести методом ShowModal другую форму, а при её закрытии завершить вывод главной формы.
Это не всегда хорошо ибо модальная форма стопорит поток в котором она вызвана, а в данном случае процесс, если автор хочет что-то подгружать И по ходу показывать инфу это не подойдет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.06.2010, 15:57   #5
Vohakisa
Пользователь
 
Регистрация: 11.05.2009
Сообщений: 47
По умолчанию

Полностью согласен, в моём случае мне нельзя продолжать работу программы, пока не закроется дочерняя форма, во избежания ошибки целостности данных.
Vohakisa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ламер: выполнение процедуры, описанной в первой форме - из второй формы spiritos Помощь студентам 4 31.03.2010 15:12
Показ НЕ главной формы, при закрузке приложения Vit@L Общие вопросы Delphi 2 16.02.2010 11:01
Фоновая музыка при создании формы JNLYSk Мультимедиа в Delphi 3 13.09.2009 20:08
начало второй нарисованной линии должно передвинутся к началу первой. Delphi maddamo4ka Помощь студентам 7 08.12.2008 19:19
При создании формы! Anton Помощь студентам 4 08.08.2007 08:20