Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.06.27;
Скачать: [xml.tar.bz2];

Вниз

Создание форм   Найти похожие ветки 

 
j_onion   (2002-06-14 10:19) [0]

Я создаю форму вызовом Application.createform, а освобождаю ее form.release. Может кто-нибудь сказать, корроктна такая последовательность, или нет. Смутные сомнения терзают меня


 
Игорь Шевченко   (2002-06-14 10:41) [1]

Вопрос сам по себе некорректный. Без кода.

А освобождать можно хоть release, хоть free - в зависимости от того, в каком месте освобождение происходит


 
kull   (2002-06-14 10:45) [2]

Ну что вас всех тянет на этот Release?
Ни в одном примере нет такого способа закрытия формы...


 
Song   (2002-06-14 10:49) [3]

Некорректна. Система сама осовоюождает автоматически созданные формы.


 
Виктор Щербаков   (2002-06-14 10:55) [4]


> Ну что вас всех тянет на этот Release?

Почитай в хэлпе про Release, или попробуй захлопнуть форму из обработчика её события.


 
Romkin   (2002-06-14 10:55) [5]

У меня очень много кода вида

Application.CreateForm(TfrmDummy, frmDummy);
try
frmDummy.ShowModal;
finally
frmDummy.release;
end;

Что здесь некорректного? Я уверен, что данный отрывок будет работать на всех платформах win32 без сюрпризов (и работает :-)))
2kull: а что вас всех тянет на TForm.Free?
2Song: нафиг ждать, пока приложение закроется? Ресурсы не резиновые...


 
Игорь Шевченко   (2002-06-14 11:02) [6]

Romkin © (14.06.02 10:55)

У меня очень много кода вида


procedure TfMain.ShowModalForm(FormClass: TFormClass);
begin
with FormClass.Create(Self) do
try
ShowModal();
finally
Free();
end;
end;


И соответственно,

ShowModalForm(TForm1);
ShowModalForm(TForm2);
ShowModalForm(TForm3);

В разных местах программы.

Ни я, ни наши заказчики ни разу не сталкивались с проблемами в этой части.

Более того, пример из Demos Borland"a


procedure TMainForm.About1Click(Sender: TObject);
begin
AboutBox := TAboutBox.Create(Self);
try
AboutBox.ShowModal;
finally
AboutBox.Free;
end;
end;


IMHO, это Пачеко с Тейксейрой воду мутят :-)))



 
Romkin   (2002-06-14 11:36) [7]

А вот с Free надо поосторожнее.. У QReport есть довольно неприятная ошибка (может, в 3.5 исправили, не проверял): при preview при использовании стандартной формы после закрытия некоторых сложных отчетов возникала AV, и после другие preview выдавали "Form QRPreview already exists". Вызвано, ИМХО, это тем, что вызывается QRPreview.Free, а не release. Приходилось делать Application.processmessages, чтобы очередь сообщений выбиралась перед уничтожением (или свое preview, висящее постоянно).
2Игорь Шевченко: я много раз напарывался на AV именно из-за TForm.Free, насчет того, что проблем нет - по-видимому, используются быстрые станции, и очередь сообщений успевает обработаться. Попробуй P166 :-))
Вообще-то я не вижу причины, почему надо писать именно Free, с тем же успехом можно везде писать Release, что я и делаю. Возможно, сейчас это уже не актуально, но я считаю, что лишняя защищенность кода не повредит...


 
Игорь Шевченко   (2002-06-14 11:52) [8]

Romkin © (14.06.02 11:36)

Я использовал QuickReport.PreviewModal, и от этого сообщения избавился. Правда, дургие проблемы появились. QuiсkReport плохо написан, IMHO.

Я пробовал на разных процессорах :-)
Для release, IMHO, определено свое место - в обработчиках событий от компонент формы и собственно формы. В случае внешнего освобождения, особенно после ShowModal, все сообщения успевают обрабатываться и я не вижу ситуации, когда после вызова Free может прийти сообщение окну формы.

С уважением,


 
kull   (2002-06-14 12:52) [9]


> Почитай в хэлпе про Release, или попробуй захлопнуть форму
> из обработчика её события.


TForm1.Button1Click(Sender: TObject);
begin
Close;
end;


замечательно работает. :)



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

Форум: "Основная";
Текущий архив: 2002.06.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
3-88719
John_John
2002-06-03 19:09
2002.06.27
Как записать СОДЕРЖИМОЕ массива в BLOB ?


3-88729
Seva
2002-05-22 15:50
2002.06.27
Interbase многопользовательский доступ


3-88767
sergey32
2002-06-05 10:10
2002.06.27
Кто-нибудь знает как подконнектится к базе UNIFY


8-88967
Aristotel
2002-02-15 20:51
2002.06.27
Как создать иконки на форме и при необходимости их перемещать?? Как на рабочем столе в Windows!


3-88750
niko4543
2002-06-02 13:47
2002.06.27
DBImage





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский