Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с формой, Объяснить теорию 
V
    Опции темы
linker13
Дата 9.5.2008, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 26.4.2008

Репутация: нет
Всего: нет



Доброго времени суток, товарищи программисты!
У меня есть вопрос, скорее по теории
Есть 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 файла


То есть почему отображение формы в модальном режиме не дает выполняться последующеему коду.
Заранее благодарен =)
PM MAIL ICQ   Вверх
Rrader
  Дата 9.5.2008, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 18
Всего: 191



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

Это сообщение отредактировал(а) Rrader - 9.5.2008, 18:35


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
THandle
Дата 10.5.2008, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Я бы к тому же поменял ini.destroy на ini.free. На всякий случай.
PM   Вверх
pseud
Дата 12.5.2008, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 10
Всего: 40



а я бы таких конструкций побоялся...

Код

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



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Sanchezzz
  Дата 12.5.2008, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 1
Всего: 60



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

Это сообщение отредактировал(а) Sanchezzz - 12.5.2008, 10:56


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
pseud
Дата 12.5.2008, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 10
Всего: 40



я бы порекомендовал такой регламент )))

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

Код

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


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
linker13
Дата 13.5.2008, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 26.4.2008

Репутация: нет
Всего: нет



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

еще раз всем спасибо. =)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.2188 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.