Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Дополнительная форма


Эдик ©   (2005-01-20 13:35:00) 

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


SPeller   (2005-01-20 20:25:00) [1]

InitCommonControls попробуй вписать где-нить в начале загрузки программы.


Эдик   (2005-01-20 17:36:00) [2]

Может чем можно Memo заменить, нужна возможность выводить сообщение с переменным колич. строк (может быть большим) и со скролингом


Эдик   (2005-01-20 17:27:00) [3]

Дополнение
данный эфект происходит, если на главной форме находиться компонент Memo, как только его убрать - все будет ok...
Как сие можно побороть? Я так понимаю - глюк


Эдик   (2005-01-20 17:10:00) [4]

NewForm2( Form2, Applet );
 Form2.Form.ShowModal;
 Form2.Form.Free;
в результате появляеться форма а прорисовка не происходит... белая форма, элименты можно только нащупать...


SPeller   (2005-01-20 15:31:00) [5]

А вот то что в фак так и не добавилось по часть модальности:

   Существует так же ещё один способ вызова модальной формы, который
практически не отличается от того, который используется в VCL, и не зависит
от наличия или отсутствия в проекте отдельного объекта Applet. Для того
чтобы его задействовать, необходимо вместо функции ShowModal использовать
функцию ShowModalParented и добавить директиву условной компиляции
NEW_MODAL. В этом случае нет никакой надобности вписывать какой-либо код
управления поведением модальной формы в какие-либо обработчики. Всё сделано
автоматически. Однако вы можете пожертвовать размером программы если
используете asm-версию kol.pas. Если же вы используете pas-версию, то даже
уменьшите размер.
   Функция ShowModalParented принимает один параметр - объект
формы-родителя. Идея такой реализации была такова, что бывают случаи, когда
в программе при показе модальной формы необходимо заблокировать лишь одну
форму, в то время как остальные должны быть доступны. Именно объект такой
блокируемой формы и должен быть передан в качестве параметра. Если нет
нужды для такого поведения, то достаточно передать в этом парметре Applet.
Если же неохота постоянно писать длинноватое имя функции и передавать
параметр, то можно использовать директиву условной компиляции
USE_SHOWMODALPARENTED_ALWAYS. В этом случае функция ShowModal превратится в
вызов функции ShowModalParented с переданным в качестве параметра значением
переменной Applet.
   Так же существует директива условной компиляции USE_SETMODALRESULT,
которая призвана гарантировать сокрытие модальной формы с экрана при
назначении свойства ModalResult. Дело в том, что механизм модальности
основан на том, что после каждого пришедшего окну сообщения проверяется
значение свойства ModalResult. И если оно отлично от нуля, то окно
скрывается и управление передается стандартному обработчику очереди
сообщений. Так вот теоритически существет вероятность того, что каким-то
образом мы выставим значение ModalResult в отличное от нуля значение, а
окну не придёт при этом ниодного сообщения. Окно останется висеть. При
включении вышеуказанной директивы при присвоении ModalResult окну
отправляется пустое сообщение, которое гарантированно вызовет проверку
значения ModalResult и сокрытие модальной формы при необходимости.
   У данного способа вызова модальной формы существуют нюансы, которые
следует знать. При закрытии формы (крестиком, методом Close, присвоением
ModalResult и т.п.) вызывается обработчик OnClose, которому передается
параметр Accept, разрешающий или запрещающий закрытие формы. По умолчанию
он равен True. Если по каким-либо причинам ModalResult = 0 (запрещает
закрытие), а Accept = True (разрешает закрытие), то данное противоречие
решается тем, что форма закрывается, но ModalResult становится равным
$80000000. То же самое происходит если обработчик OnClose не назначен (т.е
Accept = True), а ModalResult при этом равен нулю.


SPeller   (2005-01-20 15:31:00) [6]

nicesc   (20.01.05 15:29) [5]
Обогнал!!!!

Да уж, миллиметраж :)


SPeller   (2005-01-20 15:29:00) [7]

А показывать - в факе.


nicesc   (2005-01-20 15:29:00) [8]

Эдик
прочитай ФАК


nicesc   (2005-01-20 15:29:00) [9]

SPeller
Обогнал!!!!


Эдик   (2005-01-20 14:16:00) [10]

Вот и все...
 NewForm2( Form2, Pointer( Form1.Form ) );
форма не полностью прорисовуеться...


ECM   (2005-01-20 13:57:00) [11]

"Стандарт Delphi" это ВКЛ?
... тогда и не должно получиться ...
Как пример используй файлы генерируемые МЦК


Наверх

Титульная страница Поиск, карта сайта Написать письмо