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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2010, 16:58   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию Закрытие формы при работе с SelectDirectory

Так я задаю путь к игре
Код:
  if SelectDirectory('Set game location', '', GamePath) then
    if not FileExists(GamePath + '\lithtech.exe') then
      begin
        MessageBox(0, 'Path to lithtech.exe is specified incorrectly!', 'Error', MB_ICONError);
        GamePath := LGamePath.Caption;
        Exit;
      end;

  LGamePath.Caption := GamePath;
  PBBOK.Click; // Сохранить настройки и закрыть форму
Если путь не верен, то сказать об этом и остаться в окне натроек иначе закрыть форму, но закрытие формы также происходит если открыть окно выбора папки и нажать на отмена или кнопку закрыть. Как этого не допустить?
Shouldercannon вне форума Ответить с цитированием
Старый 14.07.2010, 17:02   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
  while not SelectDirectory('Set game location', '', GamePath) or (GamePath='') then
    if not FileExists(GamePath + '\lithtech.exe') then
      begin
        MessageBox(0, 'Path to lithtech.exe is specified incorrectly!', 'Error', MB_ICONError);
        GamePath := LGamePath.Caption;
        Exit;
      end;
Что-то в этом роде?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.07.2010, 17:05   #3
Korben5E
Форумчанин
 
Аватар для Korben5E
 
Регистрация: 13.07.2010
Сообщений: 346
По умолчанию

ну дык
PBBOK.Click; // Сохранить настройки и закрыть форму
(это-же функция закрытия формы?)

выполняется всегда - независимо от SelectDirectory...

вставьте ее внутрь блока if
Non est culpa vin, sed culpa bibentis
Korben5E вне форума Ответить с цитированием
Старый 14.07.2010, 17:14   #4
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
  while not SelectDirectory('Set game location', '', GamePath) or (GamePath='') do
    if not FileExists(GamePath + '\lithtech.exe') then
      begin
        MessageBox(0, 'Path to lithtech.exe is specified incorrectly!', 'Error', MB_ICONError);
        GamePath := LGamePath.Caption;
        Exit;
      end;
Что-то в этом роде?
Так вообще жесть, окно постоянно появляется при нажатии на Отмена или закрыть

Цитата:
Сообщение от Korben5E Посмотреть сообщение
ну дык
PBBOK.Click; // Сохранить настройки и закрыть форму
(это-же функция закрытия формы?)

выполняется всегда - независимо от SelectDirectory...

вставьте ее внутрь блока if
Это процедура. Вот весь код
Код:
procedure TFormSettings.PBBSetClick(Sender: TObject);
begin
  if SelectDirectory('Set game location', '', GamePath) then
    if not FileExists(GamePath + '\lithtech.exe') then
      begin
        MessageBox(0, 'Path to lithtech.exe is specified incorrectly!', 'Error', MB_ICONError);
        GamePath := LGamePath.Caption;
        Exit;
      end;

  LGamePath.Caption := GamePath;
  PBBOK.Click;
end;

procedure TFormSettings.PBBOKClick(Sender: TObject);
var
  F: TRegIniFile;
begin
  F := TRegIniFile.Create('Software');
  F.OpenKey('Project1', True);
  F.WriteString('Settings', 'GamePath', GamePath);
  F.WriteString('Settings', 'LaunchOnStartUp', LaunchOnStartUp);
  F.WriteString('Settings', 'Sounds', Sounds);
  F.WriteString('Settings', 'AutoUpdate', AutoUpdate);
  F.WriteString('Settings', 'LoadMasterList', LoadMasterList);
  F.Free;

  Close;
end;

Последний раз редактировалось Shouldercannon; 14.07.2010 в 17:17.
Shouldercannon вне форума Ответить с цитированием
Старый 14.07.2010, 19:13   #5
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Ну и сделай так:
Код:
procedure TFormSettings.PBBSetClick(Sender: TObject);
begin
  if SelectDirectory('Set game location', '', GamePath) then
    begin
      if not FileExists(GamePath + '\lithtech.exe') then
        begin
          MessageBox(0, 'Path to lithtech.exe is specified incorrectly!', 'Error', MB_ICONError);
          GamePath := LGamePath.Caption;
          exit;
        end;
      LGamePath.Caption := GamePath;
      PBBOK.Click;
    end;
end;
FaTaL вне форума Ответить с цитированием
Старый 14.07.2010, 19:51   #6
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Спасибо за внимание. Проблема решена.
Shouldercannon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закрытие формы annaangel Общие вопросы Delphi 2 09.10.2009 13:26
Закрытие формы.... sergiksergik Microsoft Office Excel 18 22.09.2009 20:23
Закрытие формы RIO Общие вопросы Delphi 2 27.08.2009 17:10
Закрытие формы girz БД в Delphi 7 13.05.2009 22:54