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

Вниз

ActiveFrom   Найти похожие ветки 

 
handra ©   (2002-11-29 11:18) [0]

ситуёвина такая:
- создается компоненты ActiveX с использованием AciveForm (визуальное проектирование формы, которая затем оборочивается в ActiveX control).
- в клиентском приложении динамически создаются n-ое количество TOleContainer, в которых создаются собсвенно ActiveX элементы, описанные.
Трабл: в ActiveX контролах начисто пропадает реакция на клавиши VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT и другие, а также непонятно поведение фокуса ввода...


 
handra ©   (2002-11-29 13:03) [1]

help!!!


 
handra ©   (2002-11-29 14:40) [2]

н-да, что ни вопрос - то в пропасть!


 
Fantasist ©   (2002-11-29 18:49) [3]


> н-да, что ни вопрос - то в пропасть!


Потому как слишком комплексный вопрос. Так по нему тяжело ответить, если не сталкивался именно с такой ситуацией. Единственно, что приходит на ум - возможно ActiveForm не поддерживают интерфейсы для реализовывания встраивания. Или они так сделаны, что этого не предпологается. Попробуй, например, вместо формы создать ActiveX Panel.


 
handra ©   (2002-12-01 01:55) [4]

Fantasist ©> ActiveForm - ни есть что-либо новое в технологии, а один из способов создания элементов ActiveX (с использованием RAD), предложенный Borland в Delphi 3.0 (причем применительно для разработки расширений к браузеру).
Дополнительные показания: глюки не со стороны контрола ActiveX, а со стороны клиентского приложения - тот же ActiveX, использованны в VB (VBA) работает нормально, клавиши управления курсором и enter обрабатываются... Люди посоветовали попробовать перекомпилировать клиент в D6/D7, буду пробобавть в понедельник, хотя не уверен - сходные проблемы были у других (причем разрешились), но никто внятно методы решения не объяснил.


 
asmith   (2002-12-01 15:31) [5]

В свое вреня делал то же самой, что и ты сейчас, но на Delphi 3.0. Наткнулся на точно такие же грабли. Нашел в Инете инфу на эту тему; это был баг в VCL и предлагался путь его исправления. Попробовал - полечилось. Сейчас переискал все архивы, списки фаворитов - не нашел ничего. Помню только, что в заголовке страницы было что-то типа "DAX page" или "DAX bugs" (DAX=Delphi ActiveX). Поищи, может найдешь. С другой стороны уже вышла куча новых версий - неужели не пофиксали?


 
asmith   (2002-12-01 17:07) [6]

Found right now:
http://pweb.netcom.com/~cherrman/afrms302.htm


 
Fantasist ©   (2002-12-02 00:12) [7]


> ActiveForm - ни есть что-либо новое в технологии, а один
> из способов создания элементов ActiveX

Конечено. ActiveForm - обыкновенный ActiveX. Но АсtiveX"ы бывают разные, те которые поддерживают встраивание(embbading) должны реализовать ряд интерфейсов. Так как сам я активные формы практически не использовал, то что в них реализованно в деталях незнаюи - это было предположение.


> Дополнительные показания: глюки не со стороны контрола ActiveX


А это не дополнительные, а основные показания. Одно дело, когда не работают контролы - другое, когда не работают контейнеры. По этому вопросу могу сказать, что TOleContainer мне никогда особо не нравился - глюки в нем встречаются, и впринципе он практически никогда не нужен. Проще и эффективнее (в твоей ситуации, скорее всего тоже) импорт библиотек типов. Мастер делает неплохую компонентную обертку - работает надежнее, плюс эффективность раннего связывания.


 
handra ©   (2002-12-02 11:31) [8]

Fantasist ©> Раннее связывание не катит - реализован механизм плагинов.


 
handra ©   (2002-12-02 18:12) [9]

asmith (01.12.02 17:07)
Found right now:
http://pweb.netcom.com/~cherrman/afrms302.htm

не покатило, там много чего поменялось
Пробовал компилить в D6, D7 - те же ойца, вид сбоку


 
Fantasist ©   (2002-12-02 20:52) [10]


> Fantasist ©> Раннее связывание не катит - реализован механизм
> плагинов.


Механизм плагинов тоже разный бывает - часто просто усатнавливается некоторый протокол(набор интерфейсов) по которому происходить в плагинивание. :) На речь не об этом - на основании компонента TOleControl, можно реализовать динамическую обертку, а не статическую, как это делает мастер. Делается с помощью перекрытия методов, как их там... CreateControl, InitControlData, и введению переменной, хранящей IDispatch(скорее всего в виде variant, если, конечно, не требуется дизайнер ActiveX контролов)


 
handra ©   (2002-12-03 11:56) [11]

Fantasist ©> Cогласен.
Subj по-прежнему открыт... =(


 
handra ©   (2002-12-03 15:48) [12]

нашел!!!

protected
procedure CMDialogKey(var Msg: TCMDialogKey); message CM_DIALOGKEY;

...

procedure TForm1.CMDialogKey(var Msg: TCMDialogKey);
begin
if PageControl1.ActivePage.Controls[0] is TOleContainer then
if Msg.CharCode in [VK_TAB,VK_UP,VK_DOWN,VK_LEFT,VK_RIGHT,VK_RETURN,VK_ESCAPE] then Exit;
inherited;
end;

- т.е. при наличии закладки с OleContainer (содерхащий ActiveX) - пропускаются нажатие спец. клавиш (нужных мне).
-------------
всем спасибо.


 
Fantasist ©   (2002-12-03 20:57) [13]


> Subj по-прежнему открыт... =(


Так я как раз и клонил в сторону ухода от TOleContainer - так как он и есть причина сабжа. C TOleControl контейнером является любой VCL-ный контейнер, а TOleControl является как раз оберткой позволяющей встроить ActiveX в этот контейнер. Ну да ладно.


> handra © (03.12.02 15:48)
> нашел!!!
>
> protected
> procedure CMDialogKey(var Msg: TCMDialogKey); message
> CM_DIALOGKEY


А вот это хорошо - такие вещи надо публиковать.


 
handra ©   (2002-12-04 11:19) [14]

Fantasist ©> TOleContainer не является причиной, пробовал без него, напрямую передавая в ActiveX для контрола ParentHandle...

А так еще ряд вопросов для повышения юзабилити - уход с контрола по Tab и пр., о чем г-н asmith хреф кидал, разбираюсь...



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

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

Наверх




Память: 0.5 MB
Время: 0.019 c
1-36261
iNew
2002-12-02 06:59
2002.12.12
Есть строка содержащая ФИО, причем кол-во пробелов между


3-36045
Uran
2002-11-25 11:11
2002.12.12
Шифрование строки


1-36243
Новичок
2002-12-02 08:35
2002.12.12
Текст выбранного эл-та в ListBoxe


1-36113
Гас
2002-12-02 10:43
2002.12.12
Перенос из Delphi в Builder


1-36203
Grande
2002-11-27 10:53
2002.12.12
Delphi 5. Руководство разработчика