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

Вниз

Про формы :)   Найти похожие ветки 

 
nap<>   (2006-03-09 11:57) [0]

Если я создаю форму таким образом
var DocumentsToUserForm: TDocumentsToUserForm;
 ...
 DocumentsToUserForm:= TDocumentsToUserForm.Create(application);
 DocumentsToUserForm.ShowModal;
 DocumentsToUserForm.Destroy;

То как мне её сделать основной.
(например чтобы она могла сворачиваться в панельку, а не в отдельную формочку как у DELPHI, когда окно с кодом сворачивашь)


 
Сергей М. ©   (2006-03-09 12:00) [1]

Визуализация основной формы VCL-приложения в модальном режиме лишена всякого смысла.


 
nap<>   (2006-03-09 12:06) [2]

А если просто show как сделать?


 
Сергей М. ©   (2006-03-09 12:15) [3]

Первая же созданная в VCL-приложении форма станет основной и будет таковой вплоть до завершения работы приложения.
Закрытие основной формы приложения ведет к завершению приложения.
Св-во Application.MainForm показывает, какая форма из состава созданных и существующих по ходу работы приложения является основной. Свойство это только для чтения, изменить его нельзя.


 
Desdechado ©   (2006-03-09 12:26) [4]

DocumentsToUserForm.Destroy; - неверно
Release - верно


 
nap<>   (2006-03-09 12:28) [5]

А sendmessage можно переопредилить?


 
Сергей М. ©   (2006-03-09 12:30) [6]


> nap<>   (09.03.06 12:28) [5]


> sendmessage можно переопредилить?


Что значит "переопредилить" ?

Не ты ее определял - не тебе и переопределять.


 
nap<>   (2006-03-09 12:41) [7]

У меня такая поблема:
Я не могу свернуть окно в трей (CoolTrayMenu)


 
Сергей М. ©   (2006-03-09 12:45) [8]


> не могу свернуть окно в трей


Рассказывай, как ты это пытаешься делать


 
nap<>   (2006-03-09 12:53) [9]

Да вот в томто идело что я поразному перепробовал а форма либо сворачивается и после того как её развернещ она на соощения не реагирует


 
Сергей М. ©   (2006-03-09 13:03) [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 13:45) [11]

Я загнался конкретно решилось как всега очень просто
Спасибо за терпение :)


 
Crash Coredump ©   (2006-03-09 13:49) [12]

Desdechado ©   (09.03.06 12:26) [4]


> DocumentsToUserForm.Destroy; - неверно
> Release - верно


Вместо Destroy лучше писать Free, хотя в данном случае можно и так.

А Release желательно использовать только внутри методов самого объекта, а не извне, иначе пустая трата времени.

Читать Demos\*.pas


 
Desdechado ©   (2006-03-09 13:56) [13]

Crash Coredump ©   (09.03.06 13:49) [12]
В справке четко определено, когда и что использовать. Там нет никаких "желательно" и "лучше". Если проблемы с английским, читай учебники.
Release method (TCustomForm)


 
Crash Coredump ©   (2006-03-09 14:26) [14]

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 21:30) [15]

перевожу:
should use = обязаны использовать (а не "желательно")

а также нет нигде про "только внутри"
а еще цитировать надо полностью, не вырывая из контекста


 
Игорь Шевченко ©   (2006-03-09 21:40) [16]


> а также нет нигде про "только внутри"



> Any event handlers of the form should use Release instead
> of Free


of the form - это наверное и есть "внутри" ? :)


> обязаны использовать (а не "желательно")


В [12] имеется в виду, что Release можно использовать и вне обработчиков события самой формы и компонентов на ней.


 
Desdechado ©   (2006-03-09 22:20) [17]

Игорь Шевченко ©   (09.03.06 21:40) [16]
Вижу попытку сгладить остроту ситуации.
Благодарю, но останусь при своем мнении. Ибо в [12] написано не про возможность, а про бессмысленность. И в [15] я не зря выделил "только". Про "внутри"-то все ясно.

ps А еще там есть интересное примечаниек методу...


 
Игорь Шевченко ©   (2006-03-09 22:31) [18]

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, в данном случае, так как объект, скорее весго, заведомо не нулевой) вызывать сразу ? :)


 
tesseract ©   (2006-03-09 22:31) [19]

А почему бы просто код обоих функций не посмотреть ? И увидеть что Release посылает сообщение CM_RELEASE  которое приводит к FREE, а не к FreeAndNil.

Единственный плюс release - в неразрушении очереди сообщений формы. В 95% это не нужно.



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

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

Наверх




Память: 0.49 MB
Время: 0.053 c
15-1141716165
БарЛог
2006-03-07 10:22
2006.03.26
Возвращение прав после изъятия


1-1140919693
Grol
2006-02-26 05:08
2006.03.26
Быстро обновить все визуальные компонент на форме


11-1123050971
Дмитрий Пырин
2005-08-03 10:36
2006.03.26
XML parser


2-1141626781
K_Val
2006-03-06 09:33
2006.03.26
Программа без среды Delphi


2-1141993956
fedpavel
2006-03-10 15:32
2006.03.26
DLL





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