Как правильно сделать чтобы вторая форма открывалась в первой

У меня есть главная форма и мне надо набить код чтобы когда я компилирую мне сперва вибивало форма з запросам фамилии и имя? Посмотрите как правильно сделать чтобы ета вторая форма откривалась первой а потом главная через OnShow?
procedure TTelDovidnuk.FormShow(Sender: TObject);
begin
if (Vhidd.Prizv.Text='')and(Vhidd.Imya.Text='') then
ShowMessage('Введіть прізвище і ім"я')else
if (Vhidd.Prizv.Text<>'')and(Vhidd.Imya.Text='') then
ShowMessage('Введіть ім"я')else
if (Vhidd.Prizv.Text='')and(Vhidd.Imya.Text<>'') then
ShowMessage('Введіть прізвище')else
if (Vhidd.Prizv.Text='Admin')and(Vhidd.Imya.Text='Roman')then
begin
Vhidd.Free;
TelDovidnuk.Show;
TelDovidnuk.DBGrid.Enabled:=true;
TelDovidnuk.DBGrid.Options:=[dgEditing,dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgConfirmDelete,dgCancelOnExit];
TelDovidnuk.Dobav.Enabled:=true;
TelDovidnuk.Redag.Enabled:=true;
TelDovidnuk.Vudal.Enabled:=true;
TelDovidnuk.Dobavutu.Enabled:=true;
TelDovidnuk.Redagyvatu.Enabled:=true;
TelDovidnuk.Vudalutu.Enabled:=true;
Mista.Grid.Enabled:=true;
Mista.Dobavyty.Enabled:=true;
Mista.Vydalyty.Enabled:=true;
Mista.Zbereg.Enabled:=true;
Mista.Zakrutu.Enabled:=true;
end
else
begin
Vhidd.Free;
TelDovidnuk.Show;
TelDovidnuk.DBGrid.Options:=[dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgConfirmDelete,dgCancelOnExit];
TelDovidnuk.Dobav.Enabled:=false;
TelDovidnuk.Redag.Enabled:=false;
TelDovidnuk.Vudal.Enabled:=false;
TelDovidnuk.Dobavutu.Enabled:=false;
TelDovidnuk.Redagyvatu.Enabled:=false;
TelDovidnuk.Vudalutu.Enabled:=false;
Mista.Grid.Options:=[dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgConfirmDelete,dgCancelOnExit];
Mista.Dobavyty.Enabled:=false;
Mista.Vydalyty.Enabled:=false;
Mista.Zbereg.Enabled:=false;
Mista.Zakrutu.Enabled:=true;
end;
 
end;
end.
Так не работаєт нормально.Мне надо чтобы вибивало нормально например если 2 едита пустиэ то чтобы вибивало мое сообщениэ введите фамилию и имя
14 ответов

тема лёгкая.... но я у же убегаю в универ... через два часа приду напишу ответ


Alston, тебе просто надо правильно условия написать, и все заработает... в билдере с этим проще, после выполнения условия писанул return и не надо городить таких жестких конструкций, как вариант можно сделать с goto и метками...


Мне надо именно так,если фамилия введена чтобі вибивало сообщение введите имя. А то когда я так делаю мне вибиваєт ето сообщение и сразу входив в справочник Сделайте очень надо пожалуста


Alston, ну сделай так:
procedure TTelDovidnuk.FormShow(Sender: TObject);
begin
 if (Vhidd.Prizv.Text<>'')and(Vhidd.Imya.Text<>'') then begin
     if (Vhidd.Prizv.Text='Admin')and(Vhidd.Imya.Text='Roman')then
      begin
       Vhidd.Free;
       TelDovidnuk.Show;
       TelDovidnuk.DBGrid.Enabled:=true;
       TelDovidnuk.DBGrid.Options:=    [dgEditing,dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgConfirmDelete,dgCancelOnExit];
       TelDovidnuk.Dobav.Enabled:=true;
       TelDovidnuk.Redag.Enabled:=true;
       TelDovidnuk.Vudal.Enabled:=true;
       TelDovidnuk.Dobavutu.Enabled:=true;
       TelDovidnuk.Redagyvatu.Enabled:=true;
       TelDovidnuk.Vudalutu.Enabled:=true;
       Mista.Grid.Enabled:=true;
       Mista.Dobavyty.Enabled:=true;
       Mista.Vydalyty.Enabled:=true;
       Mista.Zbereg.Enabled:=true;
       Mista.Zakrutu.Enabled:=true;
    end
    else
    begin
       Vhidd.Free;
       TelDovidnuk.Show;
       TelDovidnuk.DBGrid.Options:=[dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgConfirmDelete,dgCancelOnExit];
       TelDovidnuk.Dobav.Enabled:=false;
       TelDovidnuk.Redag.Enabled:=false;
       TelDovidnuk.Vudal.Enabled:=false;
       TelDovidnuk.Dobavutu.Enabled:=false;
       TelDovidnuk.Redagyvatu.Enabled:=false;
       TelDovidnuk.Vudalutu.Enabled:=false;
       Mista.Grid.Options:=          [dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgConfirmDelete,dgCancelOnExit];
       Mista.Dobavyty.Enabled:=false;
       Mista.Vydalyty.Enabled:=false;
       Mista.Zbereg.Enabled:=false;
      Mista.Zakrutu.Enabled:=true;
  end;
 end
else begin
    if (Vhidd.Prizv.Text<>'')and(Vhidd.Imya.Text='') then
      ShowMessage('Введіть ім"я')else
    if (Vhidd.Prizv.Text='')and(Vhidd.Imya.Text<>'') then
      ShowMessage('Введіть прізвище')else
    else ShowMessage('Введіть прізвище та ім"я');
 end;
end;
end.


Не работает когда я компилируя вибивает сразу мой справочник


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


все равно не пойму напишите еще раз код пожалуста))


procedure TTelDovidnuk.FormShow(Sender: TObject);
begin
     if (Vhidd.Prizv.Text='Admin')and(Vhidd.Imya.Text='Roman')then
      begin
       Vhidd.Free;
       TelDovidnuk.Show;
       TelDovidnuk.DBGrid.Enabled:=true;
       TelDovidnuk.DBGrid.Options:=    [dgEditing,dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgConfirmDelete,dgCancelOnExit];
       TelDovidnuk.Dobav.Enabled:=true;
       TelDovidnuk.Redag.Enabled:=true;
       TelDovidnuk.Vudal.Enabled:=true;
       TelDovidnuk.Dobavutu.Enabled:=true;
       TelDovidnuk.Redagyvatu.Enabled:=true;
       TelDovidnuk.Vudalutu.Enabled:=true;
       Mista.Grid.Enabled:=true;
       Mista.Dobavyty.Enabled:=true;
       Mista.Vydalyty.Enabled:=true;
       Mista.Zbereg.Enabled:=true;
       Mista.Zakrutu.Enabled:=true;
    end
    else
    begin
       Vhidd.Free;
       TelDovidnuk.Show;
       TelDovidnuk.DBGrid.Options:=[dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgConfirmDelete,dgCancelOnExit];
       TelDovidnuk.Dobav.Enabled:=false;
       TelDovidnuk.Redag.Enabled:=false;
       TelDovidnuk.Vudal.Enabled:=false;
       TelDovidnuk.Dobavutu.Enabled:=false;
       TelDovidnuk.Redagyvatu.Enabled:=false;
       TelDovidnuk.Vudalutu.Enabled:=false;
       Mista.Grid.Options:=          [dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgConfirmDelete,dgCancelOnExit];
       Mista.Dobavyty.Enabled:=false;
       Mista.Vydalyty.Enabled:=false;
       Mista.Zbereg.Enabled:=false;
      Mista.Zakrutu.Enabled:=true;
  end;
end;
end.
 
 
 if (Vhidd.Prizv.Text<>'')and(Vhidd.Imya.Text<>'') then begin
   TelDovidnuk.Show
 else begin
    if (Vhidd.Prizv.Text<>'')and(Vhidd.Imya.Text='') then
      ShowMessage('Введіть ім"я')else
    if (Vhidd.Prizv.Text='')and(Vhidd.Imya.Text<>'') then
      ShowMessage('Введіть прізвище')else
    else ShowMessage('Введіть прізвище та ім"я');
 end;


Блин та что такое ничево не получаетса можыте сделать сдесь


Alston, что не получается?


!!!Мне надо чтобы когда я компилирую програму мне вибывала форма с входом в справочник.Когда 2 едита будут пустие и нижать на кнопку вход вибивало сообщение Введите фамилию и имя.... А мне даже етой форми не вибиваэт


Alston, не понял, а что вы сделали? что-то я свой код в вашем не узнаю никак... вы просто перенесли все скопом в обработчик события OnClick


Мне надо ето сделать в OnShow А етот можите стиреть и сделать в оншов


Alston, вы, видимо, меня не поняли: код в OnShow я вам указал, какой надо оставить, а вот тот кусок с 42 строки вам надо поместить в OnClick