![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Про формы :) [D7]
nap<> © (2006-03-09 11:57:00)Если я создаю форму таким образом
var DocumentsToUserForm: TDocumentsToUserForm;
...
DocumentsToUserForm:= TDocumentsToUserForm.Create(application);
DocumentsToUserForm.ShowModal;
DocumentsToUserForm.Destroy;
То как мне её сделать основной.
(например чтобы она могла сворачиваться в панельку, а не в отдельную формочку как у DELPHI, когда окно с кодом сворачивашь)
tesseract (2006-03-09 22:31:00) [1]А почему бы просто код обоих функций не посмотреть ? И увидеть что Release посылает сообщение CM_RELEASE которое приводит к FREE, а не к FreeAndNil.
Единственный плюс release - в неразрушении очереди сообщений формы. В 95% это не нужно.
Игорь Шевченко (2006-03-09 22:31:00) [2]Desdechado © (09.03.06 22:20) [17]
> Ибо в [12] написано не про возможность, а про бессмысленность
Вообще-то разумно написано. Потому что метод TCustomForm.Release содержит в себе
PostMessage (Self.Handle, CM_RELEASE, 0, 0), а в обработчике сообщения CM_RELEASE написано
procedure TCustomForm.CMRelease;
begin
Free;
end;
Это сделано для того, чтобы запрос на уничтожение поступил гарантировано послетого, как закончится выполнение метода самой формы.
В том случае, если форма уничтожается вне ее методов, посылка такого сообщения не имеет такого смысла, как гарантия порядка действий по уничтожению. То есть, Release можно вызывать извне, Коран не запрещает, но будет бессмысленно поставлено сообщение в очередь, затом оттуда выбрано только для того, чтобы вызывать Free. Не проще ли Free (или Destroy, в данном случае, так как объект, скорее весго, заведомо не нулевой) вызывать сразу ? :)
Desdechado (2006-03-09 22:20:00) [3]Игорь Шевченко © (09.03.06 21:40) [16]
Вижу попытку сгладить остроту ситуации.
Благодарю, но останусь при своем мнении. Ибо в [12] написано не про возможность, а про бессмысленность. И в [15] я не зря выделил "только". Про "внутри"-то все ясно.
ps А еще там есть интересное примечаниек методу...
Игорь Шевченко (2006-03-09 21:40:00) [4]
> а также нет нигде про "только внутри"
> Any event handlers of the form should use Release instead
> of Free
of the form - это наверное и есть "внутри" ? :)
> обязаны использовать (а не "желательно")
В [12] имеется в виду, что Release можно использовать и вне обработчиков события самой формы и компонентов на ней.
Desdechado (2006-03-09 21:30:00) [5]перевожу:
should use = обязаныиспользовать (а не "желательно")
а также нет нигде про " тольковнутри"
а еще цитировать надо полностью, не вырывая из контекста
Crash Coredump (2006-03-09 14:26:00) [6]Desdechado © (09.03.06 13:56) [13]
"Release does not destroy the form until all event handlers of the form and event handlers of components on the form have finished executing. Any event handlers of the form should use Release instead of Free."
(с) F1
> А Release желательно использовать только внутри методов
> самого объекта
Я где-то ошибся с переводом ?
Desdechado (2006-03-09 13:56:00) [7]Crash Coredump © (09.03.06 13:49) [12]
В справке четко определено, когда и что использовать. Там нет никаких "желательно" и "лучше". Если проблемы с английским, читай учебники.
Release method (TCustomForm)
Crash Coredump (2006-03-09 13:49:00) [8]Desdechado © (09.03.06 12:26) [4]
> DocumentsToUserForm.Destroy; - неверно
> Release - верно
Вместо Destroy лучше писать Free, хотя в данном случае можно и так.
А Release желательно использовать только внутри методов самого объекта, а не извне, иначе пустая трата времени.
Читать Demos\*.pas
nap<> (2006-03-09 13:45:00) [9]Я загнался конкретно решилось как всега очень просто
Спасибо за терпение :)
Сергей М. (2006-03-09 13:03:00) [10]http://www.google.ru/search?hl=ru&q=%D0%BA%D0%B0%D0%BA+%D1%81%D0%B2%D0%B5%D1%80%D0%BD%D1%83%D1%82%D1%8C+%D1%84%D0%BE%D1%80%D0%BC%D1%83+%D0%B2+%D1%82%D1%80%D0%B5%D0%B9&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=
nap<> (2006-03-09 12:53:00) [11]Да вот в томто идело что я поразному перепробовал а форма либо сворачивается и после того как её развернещ она на соощения не реагирует
Сергей М. (2006-03-09 12:45:00) [12]
> не могу свернуть окно в трей
Рассказывай, как ты это пытаешься делать
nap<> (2006-03-09 12:41:00) [13]У меня такая поблема:
Я не могу свернуть окно в трей (CoolTrayMenu)
Сергей М. (2006-03-09 12:30:00) [14]
> nap<> (09.03.06 12:28) [5]
> sendmessage можно переопредилить?
Что значит "переопредилить" ?
Не ты ее определял - не тебе и переопределять.
nap<> (2006-03-09 12:28:00) [15]А sendmessage можно переопредилить?
Desdechado (2006-03-09 12:26:00) [16]DocumentsToUserForm.Destroy; - неверно
Release - верно
Сергей М. (2006-03-09 12:15:00) [17]Первая же созданная в VCL-приложении форма станет основной и будет таковой вплоть до завершения работы приложения.
Закрытие основной формы приложения ведет к завершению приложения.
Св-во Application.MainForm показывает, какая форма из состава созданных и существующих по ходу работы приложения является основной. Свойство это только для чтения, изменить его нельзя.
nap<> (2006-03-09 12:06:00) [18]А если просто show как сделать?
Сергей М. (2006-03-09 12:00:00) [19]Визуализация основной формы VCL-приложения в модальном режиме лишена всякого смысла.