Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.06;
Скачать: CL | DM;

Вниз

Формы   Найти похожие ветки 

 
LexXL   (2006-07-17 15:14) [0]

Подскажите пожалуйста, как создати приложение которое открывает сначало одну форму которая закрывается и открывает другую (после например ввода пароля)...?


 
Vlad ©   (2006-07-17 15:21) [1]

открой файл проекта (dpr), увидишь много интересного. Например как создается главная форма приложения и как оно (приложение) запускается.

Для размышления: там же можно создавать и другие формы, ставить условия if и все остальное.


 
LexXL   (2006-07-17 15:50) [2]

Конечно спасибо, но насколько я понимаю при создании главной формы необходимо эту форму (главную переназначить) например:

if Param(1) = "Param1" then
    SetAsMainForm(Form2);
что - то "вроде так" , но как при вводе правильно пароля закрыть form1 и открыть form2 так чтобы она стала главной? (вот в чем вопрос)..


 
LexXL   (2006-07-17 15:59) [3]

ах да,

procedure SetAsMainForm(aForm:TForm);
var
  P:Pointer;
begin
  P := @Application.Mainform;
  Pointer(P^) := aForm;
end;


 
Amoeba ©   (2006-07-17 16:30) [4]


> LexXL   (17.07.06 15:59) [3]
> ах да,
>
> procedure SetAsMainForm(aForm:TForm);
> var
>   P:Pointer;
> begin
>   P := @Application.Mainform;
>   Pointer(P^) := aForm;
> end;


Подумай, что написал.
Application.Mainform уже и так является указателем. Так что у тебя получается масло масляное.

Дальше вникать в приведенный код желания нет.


 
Amoeba ©   (2006-07-17 16:38) [5]

Все же прокомментирую цитатой из справки:

MainForm cannot be modified at run-time because it is read-only.

Так что приведенный автором вопроса код - полная чушь.


 
LexXL   (2006-07-17 16:46) [6]

program Project1;

uses
  Forms,
  Unit1 in "Unit1.pas" {Form1},
  Unit2 in "Unit2.pas" {Form2},
  Unit3 in "Unit3.pas" {Form3};

{$R *.res}

procedure SetAsMainForm(aForm:TForm);
var
  P:Pointer;
begin
  P := @Application.Mainform;
  Pointer(P^) := aForm;
end;

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm3, Form3);

  if Paramstr(1) = "Param1" then
    SetAsMainForm(Form2);

  if Paramstr(1) = "Param2" then
    SetAsMainForm(Form3);

  Application.Run;
end.


 
StriderMan ©   (2006-07-17 16:50) [7]


> procedure SetAsMainForm(aForm:TForm);
> var
>   P:Pointer;
> begin
>   P := @Application.Mainform;
>   Pointer(P^) := aForm;
> end;

и как, работает? :)


 
LexXL   (2006-07-17 16:51) [8]

Ладно забьем на этот кусок кода!!! Он плохой и не красивый...
Но кто нить вместо высказываний даст мне ответ.
Запускается приложение -> появляется форма с вводом email, если верно открываем программу.!!!!?????
Заставку я делал... но там был временной интервал. А как сделать как мне надо???????????
Заранее спасиб!!!


 
StriderMan ©   (2006-07-17 17:02) [9]

можно так

 TForm1 = class(TForm)
 private
   { Private declarations }
 public
   constructor Create(AOwner: TComponent); override;
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

constructor TForm1.Create(AOwner: TComponent);
begin
 with TForm2.Create(nil) do //форма с вопросом
 try
   if ShowModal <> mrOK then
    raise Exception.Create("что-то не верно....")
 finally
   Free;
 end;
 inherited;
end;


Да, и убери Form2 из autocreate (Project-options-forms)


 
StriderMan ©   (2006-07-17 17:04) [10]

.. а еще лучше все формы убрать из autocreate и создавать их ручками. ИМХО.


 
Amoeba ©   (2006-07-17 17:10) [11]


> LexXL   (17.07.06 16:51) [8]
> Ладно забьем на этот кусок кода!!! Он плохой и не красивый.
> ..
> Но кто нить вместо высказываний даст мне ответ.
> Запускается приложение -> появляется форма с вводом email,
>  если верно открываем программу.!!!!?????
> Заставку я делал... но там был временной интервал. А как
> сделать как мне надо???????????
> Заранее спасиб!!!

Этот кусок кода представляет собой нагромождение ошибок (на них я уже указал в своих постах.

Делать надо примерно таким макаром:

Форма, которую показываешь первой, не должна быть ни Auto Create, ни MainForm;

Создаешь эту форму через вызов конструктора и показывешь ее модально перед Application.Run, владельцем указываешь Application. После закрытия этой формы проверяешь правильность введенных данных, и если неправильно, то вызывается

begin
 Application.MainForm.Visible := False;
 Application.Terminate;
end;

И никаких procedure SetAsMainForm(aForm:TForm); быть не должно.


 
Vlad ©   (2006-07-17 17:11) [12]


> LexXL   (17.07.06 16:51) [8]

Я же тебе сказал, в dpr-e перед созданием ГЛАВНОЙ формы, создавай любую другую форму с вводом е-мейла или пароля, чего угодно. И если он (е-мейл или пароль) верный, то идешь дальше, иначе - Exit. Чего неясно?
Причем тут

>   P := @Application.Mainform;

?


 
LexXL   (2006-07-18 11:02) [13]

Я блин уже запутался, дано 2 формы, вторая появляется первой, на ней edit и батон. если в edit введено yes то закрываем и открывает первую.
дайте код и я убегу....
или пойду за тубареткой мылом и веревкой, (буду сидя на тубаретке веревку мыть).....
ВСЕМ ОГРОМНОЕ СПАСИБО!!!

-легче 10 раз посоветовать чем 1 показать -


 
Vlad ©   (2006-07-18 11:25) [14]

простой пример, что называется втупую!

(в DPR -е)

var
 B: Boolean;
begin
 Application.Initialize;
 with TForm2.Create(Application) do
 try
   ShowModal;
   B := (Edit1.Text = "correct_password");
 finally
   Free;
 end;

 if not B then Exit;

 Application.CreateForm(TForm1, Form1);
 Application.Run;

end.


 
LexXL   (2006-07-18 12:13) [15]

!!!все спасибо мне нужна была срока:!!!B := (Edit1.Text = "correct_password");
в ней мона передать и переменную из форм2 (например пароль сверяется с базой и присваивет переменной per{boolean} истинна) а дальше B:=(per);
и дальше по тексту...

О ВЕЛИКИЙ VLAD С-П-А-С-И-Б-О !!!



Страницы: 1 вся ветка

Текущий архив: 2006.08.06;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.027 c
2-1153201225
zorik
2006-07-18 09:40
2006.08.06
использование EhLib


15-1152629899
SergP.
2006-07-11 18:58
2006.08.06
KAV + WINXP = проблемы


15-1152339302
Колдун
2006-07-08 10:15
2006.08.06
Проблема с NFS: Most Wanted


15-1152677702
DimonS
2006-07-12 08:15
2006.08.06
Тут есть электронщики? Или может кто так подскажет?


15-1151432743
Nic
2006-06-27 22:25
2006.08.06
У кого какая клавиатура?