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

Вниз

О разнице вариантов создания формы ...   Найти похожие ветки 

 
Andrey V.   (2003-10-29 14:02) [0]

Вариант 1
Application.CreateForm(TUserForm, UserForm);
try
UserForm.ShowModal;
finally
UserForm.Free;
end;

Вариант 2
with TUserForm.Create(Application) do begin
try
ShowModal;
finally
Free;
end;{try}
end;{with}

Если я иду по варианту 2 , то если я попытаюсь сделать что-то типа UserForm.Height:=UserForm.Height+UserForm.Height;
Получаю исключение. Я долго не мог понять , что за ерунда , ну да ладно это еще можно понять.
Но тут я попробовал примерно так :
Application.CreateForm(TUserForm, UserForm);
try
{ничего}
finally
UserForm.Free;
^^^^^^^^^^^^^^^^^^^^^
end;
и следом :
with TUserForm.Create(Application) do begin
try
ShowModal;
finally
Free;
end;{try}
end;{with}
То UserForm.Height:=UserForm.Height+UserForm.Height;
отрабатывает нормально .
Значит ли это что выделенноя строка не освобождает память ??

Еще раз поворю для понимания
Если идет вар2 - исключение(при обращении через UserForm...).
Если подряд вар1 и вар2 - все Ок.


 
Reindeer Moss Eater   (2003-10-29 14:08) [1]

Если я иду по варианту 2 , то если я попытаюсь сделать что-то типа UserForm.Height:=UserForm.Height+UserForm.Height;

то надо Height:=Height + Height;


 
Anatoly Podgoretsky   (2003-10-29 14:08) [2]

Нет, это означает только одно, что тебе повезло


 
Skier   (2003-10-29 14:09) [3]


> Если я иду по варианту 2 , то если я попытаюсь сделать что-то
> типа UserForm.Height:=UserForm.Height+UserForm.Height;

Ответь для себя на такой вопрос :
Кто в варианте 2 инициализирует указатель UserForm ?


 
Reindeer Moss Eater   (2003-10-29 14:11) [4]

Лучше не "кто?", а "ну и где же?"

:)


 
Skier   (2003-10-29 14:12) [5]

>Reindeer Moss Eater © (29.10.03 14:11) [4]
Тоже годится.


 
Andrey V.   (2003-10-29 14:20) [6]

То есть вариант 2 - МастДай ?

2Reindeer Moss Eater :

>то надо Height:=Height + Height;

а если из др.формы ?
да и "Height" это я для простоты .


 
Reindeer Moss Eater   (2003-10-29 14:22) [7]

а если из др.формы ?

нужна ссылка на экземпляр другой формы

да и "Height" это я для простоты .

Так и я не для сложноты


 
Плохиш_   (2003-10-29 14:31) [8]

>Andrey V. © (29.10.03 14:20) [6]

Только поняв, что TUserForm не имеет никакого отношения к UserForm, ты поймёшь какой вариант лучше.


 
Anatoly Podgoretsky   (2003-10-29 14:33) [9]

Вот теперь самый моемент признаться, с пказаниями - а где план аэродрома, то есть где это таинственное UserForm.Height:=UserForm.Height+UserForm.Height; и почему ты к нему обращаешься не имея UserForm


 
Юрий Зотов   (2003-10-29 14:50) [10]

> Andrey V.

Application.CreateForm(TUserForm, UserForm) - создает экземпляр класса TUserForm и инициализирует переменную UserForm ссылкой на этот экземпляр.

TUserForm.Create(Application) - ТОЛЬКО создает экземпляр класса TUserForm и ничего не инициализирует. Значение переменной UserForm при этом не изменяется и потому попытка обращения к ней, как к ссылке на объект может привести к любым результатам. Что у Вас и происходит.



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

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

Наверх





Память: 0.46 MB
Время: 0.04 c
14-42107
Delirium^.Tremens
2003-10-22 09:27
2003.11.13
Ищу работу!


1-41450
незнайка
2003-10-29 10:39
2003.11.13
Tthread


3-40877
BKGG
2003-10-21 09:27
2003.11.13
Можно ли как ни будь распознать какой базе принадлежить файл


11-41123
vdas2
2003-02-16 03:29
2003.11.13
размер в памяти после запуска?


1-41154
Ivolg
2003-11-03 12:01
2003.11.13
Звуки из динамика





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский