Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Как сделать OCX на html не видимой?


Автор: Sleepy_PIP 12.5.2005, 19:16
делаю тест.
некая OCX, на некоей html страничке.
надо - что-б форма OCX-а не отображалась вообще.
Попытался передать Visible как параметр - без толку.
Повесил на форму кнопку, которой смотрю состояние Visible.
Куда-б я не вставлял Visible:=Fale - по кнопке видим что Visible==True smile.
Если при этом в той-же кнопке сказать Visible:=False - порма исчезает ...
Таки как при старте OCX задать Visible:=False??
Спасибо!

Автор: Comrade 12.5.2005, 19:23
Попробуй повесить таймер с нулевым интервалом с нужным событием.
--
А можно просто высоту и ширину задать по нулям.

Автор: <Spawn> 13.5.2005, 04:49
Не знаю как функционирует ActiveX форма, т.к. не работал с ними, но если там есть обьект Application, то попробуй это поставить в конструкторе:

Код

Application.ShowMainForm := False;

Автор: Sleepy_PIP 13.5.2005, 10:25
Цитата
Не знаю как функционирует ActiveX форма, т.к. не работал с ними, но если там есть обьект Application, то попробуй это поставить в конструкторе:

Код

Application.ShowMainForm := False;

нет, это не помогает - в какой-то момент после создания фломы, ее активации и паинта - Visible становиться True, хоть я и устанавливаю ее в эвентах принудительно в false.
А ShowMainForm - не оказывает никакого влияния ... smile
Добавлено @ 10:34
Цитата(Comrade @ 12.5.2005, 19:23)
Попробуй повесить таймер с нулевым интервалом с нужным событием.
--
А можно просто высоту и ширину задать по нулям.

да, так работает.
только в таймере надо вставить Application.ProcessMessages.
Но зараза - промаргивает.
т.е. сначала отображается на доли сек. и тут-же таймером гасится ...
Это не совсем то, что надо.
Но за идею - спасибо!

Автор: Sleepy_PIP 13.5.2005, 11:15
а мне все-ж удалось сделать OCX не видимым smile.
Ларчик как всегда просто открывался.
Надо смотреть внимательно хелп по TActiveFormFactory.Create.
Есть там параметр - MiscStatus
он - битовое поле.
так вот к нему надо добавть OLEMISC_INVISIBLEATRUNTIME
т.е. вот так:
Код

  TActiveFormFactory.Create(
    ComServer,
    TActiveFormControl,
    TRepEngineX,
    Class_RepEngineX,
    1,
    '',
    OLEMISC_SIMPLEFRAME or OLEMISC_ACTSLIKELABEL or OLEMISC_INVISIBLEATRUNTIME,
    tmApartment);



и все, телемаркет smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)