Несколько непонятных вопросов в MSE

Вопросы программирования и использования MSEide + MSEgui.

Модератор: Модераторы

Ответить
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Несколько непонятных вопросов в MSE

Сообщение Padre_Mortius »

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

Код: Выделить всё

begin
  with tmodule2fo.Create(Application) do
    Show;
end;


где

Код: Выделить всё

tparamUnitfo = class(tsubform) 


2. Как правильно работать с компонентом tfiledialog?

Добавлено спустя 17 минут 39 секунд:
с первым вопросом вроде бы разобрался благодаря проекту debi12345 persons

Код: Выделить всё

  try
    Application.CreateForm(tparamUnitfo, paramUnitfo);
    if paramUnitfo.show(true) = mr_windowclosed then
    begin
    end;
  finally
    ParamUnitfo.Free
  end;
end;
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

Padre_Mortius писал(а):1. Как правильно закрыть (уничтожить) дочернюю форму, которая создается в рантайме, чтобы ее можно было повторно создать?

также как и везде

Код: Выделить всё

tmodule2fo.free


Padre_Mortius писал(а):2. Как правильно работать с компонентом tfiledialog?

а как пробывал ? хотя можешь глянуть в компонент filenameedit который его и запускает по кнопке.
Padre_Mortius
энтузиаст
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Сообщение Padre_Mortius »

2 Attid
Если мы используем

Код: Выделить всё

tmodule2fo.free
при закрытии формы tmodule2fo, то при повторном вызове окна получаем сообщение что форма была создана и повторно не будет создаваться. Т.е. форма не уничтожается.

А пример использования tfiledialog вроде нашел в конференции с Мартином.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Padre_Mortius писал(а):tmodule2fo.free

А если попробовать вместо этого FreeAndNil(tmodule2fo)?
Возможно ругается из-за того, что там не NIL сидит. :)
Аватара пользователя
Attid
долгожитель
Сообщения: 2589
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E
Контактная информация:

Сообщение Attid »

Padre_Mortius писал(а):при закрытии формы tmodule2fo, то при повторном вызове окна получаем сообщение что форма была создана и повторно не будет создаваться. Т.е. форма не уничтожается.

:shock:

пойду погляжу, просто я обычно не присваю ничему модальные формы типа

Код: Выделить всё

  with TfmseCardInfofo.Create(nil) do
  try
    qci.params[0].AsString := CardCode;
    qci.open;
    if Show(True) = mr_Ok then
    begin
      qci.applyupdate;
    end;
  finally
    Free;
  end;


код как-бы выполняется много много раз в день, никто не жаловался на память. сейчас замерю в тестовом примере.

Добавлено спустя 11 минут 7 секунд:
прогнал

Код: Выделить всё

  for vNum := 0 to 500 do 
  with tmainfo.create(self) do
  try
    show;
    sleep(1000);
  finally
    free;
  end;


память на месте, так что все освобождается, что-то там у тя другое
v-t-l
энтузиаст
Сообщения: 744
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение v-t-l »

Как я понимаю, tmodule2fo - класс, а не переменная этого класса: tmodule2fo.free - ???.
Ответить