Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > проблема с формой


Автор: linker13 9.5.2008, 16:58
Доброго времени суток, товарищи программисты!
У меня есть вопрос, скорее по теории
Есть 2 формы. При создании одной из них ( не главной ) вызывается функция:
Код

procedure Tsecurity.FormCreate(Sender: TObject);
var
s:string;
begin
s:=ExtractFilePath(Application.ExeName)+ini_file_name;
ini:=TIniFile.Create(s);
login:=ini.ReadString(ini_section_name,'Login','Alex');
pass:=ini.ReadString(ini_section_name,'Password','12345');
ini.Destroy;
ShowModal;
end;


С ним все хорошо. Он работает. Но Объясните, почему не работает вот такой код:
Код

procedure Tsecurity.FormCreate(Sender: TObject);
var
s:string;
begin
ShowModal;
s:=ExtractFilePath(Application.ExeName)+ini_file_name;
ini:=TIniFile.Create(s);
login:=ini.ReadString(ini_section_name,'Login','Alex');
pass:=ini.ReadString(ini_section_name,'Password','12345');
ini.Destroy;
end;


Этот код только отресовывает форму в модальном режиме, и не собирает данные из ini файла


То есть почему отображение формы в модальном режиме не дает выполняться последующеему коду.
Заранее благодарен =)

Автор: Rrader 9.5.2008, 18:34
После вызова ShowModal вызывающая форма блокируется, и все действия после прекращаются

Автор: THandle 10.5.2008, 09:27
Я бы к тому же поменял ini.destroy на ini.free. На всякий случай.

Автор: pseud 12.5.2008, 09:43
а я бы таких конструкций побоялся...

Код

procedure Tsecurity.FormCreate(Sender: TObject);
begin
  ShowModal;
  ...

Автор: Sanchezzz 12.5.2008, 10:50
хранить пароли а ini не безопасно
прикрепи свой код к onShow.
ну если переменные глобальные то сперва обрабатывай INI..
showmodal бы выше убрал из FormCreate это ошибка... 
после создание формы вызывается событие onShow и если до этого будет вызывается сразу форма модальная  то это приведет к ошибке.

Автор: pseud 12.5.2008, 14:10
я бы порекомендовал такой регламент )))

вызывающий код:

Код

var
  fmSec: TSecurityForm;
begin
...
  fmSec := TSecurityForm.Create(Self);
  try
    if fmSec.ShowModal = mrOK then
      ...
  finally
    fmSec.Free;
  end;
...
end;


твоя форма

Код

procedure TSecurityForm.FormCreate(Sender: TObject);
var
  s:string;
begin
  s := ExtractFilePath(Application.ExeName) + ini_file_name;
  ini := TIniFile.Create(s);
  try
    login := ini.ReadString(ini_section_name, 'Login', 'Alex');
    pass := ini.ReadString(ini_section_name, 'Password', '12345');
  finally
    ini.Free;
  end;
end;


только оговорюсь повторя пред. ораторов:
хранить пароли в ini - дилетантство
ну или хотя бы шифруй его.

Цитата(linker13 @  9.5.2008,  16:58 Найти цитируемый пост)
То есть почему отображение формы в модальном режиме не дает выполняться последующеему коду.

извини но  smile 
Код

Shows a form as a modal dialog.

function ShowModal: Integer; virtual;

Description

Use ShowModal to show a form as a modal form.  A modal form is one where the application can’t continue to run until the form is closed. Thus, ShowModal does not return until the form closes. When the form closes, it returns the value of the ModalResult property.

To close a modal form, set its ModalResult property to a nonzero value.

Note:    If the form contains buttons with a ModalResult property set to a value other than mrNone, the form automatically closes when the user clicks one of those buttons and returns the ModalResult value as the return value of ShowModal.

You can check the return value against common return values using the global IsAbortResult, IsAnAllResult, IsNegativeResult, or IsPositiveResult functions.


Добавлено через 30 секунд
 A modal form is one where the application can’t continue to run until the form is closed

Автор: linker13 13.5.2008, 11:29
всем спасибо за ответы. про пароли в ини: естественно дилетанство,но это был только пример. в последующем можно подключить базы данных или криптовать отдельный файл....а это была, если можно так сказать , тренировка работы с ини....

еще раз всем спасибо. =)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)