Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.28;
Скачать: CL | DM;

Вниз

Дополнительная форма   Найти похожие ветки 

 
Эдик   (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 вся ветка

Текущий архив: 2005.08.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.035 c
1-1123544473
Yura32
2005-08-09 03:41
2005.08.28
Assembler


4-1121083542
SpyBoy
2005-07-11 16:05
2005.08.28
combobox


14-1122212690
Санёк
2005-07-24 17:44
2005.08.28
Посоветуйте книгу по C# под .NET


1-1123264667
Doplhin1
2005-08-05 21:57
2005.08.28
emoticon


4-1120629000
just
2005-07-06 09:50
2005.08.28
как отменить общий доступ к дискам (программно)