Текущий архив: 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.48 MB
Время: 0.004 c