Форум: "KOL";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
ВнизДополнительная форма Найти похожие ветки
← →
Эдик (2005-01-20 13:35) [0]Подскажите пож., как создавать и показывать дополнительные формы, какой порядок? Вроди бы как тривиальный вопрос, но что-то глючит... по стандарту Delphi не получаеться.
← →
ECM © (2005-01-20 13:57) [1]"Стандарт Delphi" это ВКЛ?
... тогда и не должно получиться ...
Как пример используй файлы генерируемые МЦК
← →
Эдик (2005-01-20 14:16) [2]Вот и все...
NewForm2( Form2, Pointer( Form1.Form ) );
форма не полностью прорисовуеться...
← →
SPeller © (2005-01-20 15:29) [3]А показывать - в факе.
← →
nicesc (2005-01-20 15:29) [4]Эдик
прочитай ФАК
← →
nicesc (2005-01-20 15:29) [5]SPeller
Обогнал!!!!
← →
SPeller © (2005-01-20 15:31) [6]А вот то что в фак так и не добавилось по часть модальности:
Существует так же ещё один способ вызова модальной формы, который
практически не отличается от того, который используется в 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) [7]nicesc (20.01.05 15:29) [5]
Обогнал!!!!
Да уж, миллиметраж :)
← →
Эдик (2005-01-20 17:10) [8]NewForm2( Form2, Applet );
Form2.Form.ShowModal;
Form2.Form.Free;
в результате появляеться форма а прорисовка не происходит... белая форма, элименты можно только нащупать...
← →
Эдик (2005-01-20 17:27) [9]Дополнение
данный эфект происходит, если на главной форме находиться компонент Memo, как только его убрать - все будет ok...
Как сие можно побороть? Я так понимаю - глюк
← →
Эдик (2005-01-20 17:36) [10]Может чем можно Memo заменить, нужна возможность выводить сообщение с переменным колич. строк (может быть большим) и со скролингом
← →
SPeller © (2005-01-20 20:25) [11]InitCommonControls попробуй вписать где-нить в начале загрузки программы.
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.035 c