Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.12;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.004 c
14-36363
denick
2002-11-21 11:16
2002.12.12
Помогите, пожалуйста.


1-36147
DKalinin
2002-11-30 13:14
2002.12.12
как посчитать количество строк текстового файла не пробегая его


14-36373
iNew
2002-11-20 08:56
2002.12.12
Как узнать к какому провайдеру подключен тот или иной сервер


14-36377
XMlbPb
2002-11-21 02:16
2002.12.12
Защита программ


1-36234
dim-
2002-12-01 19:26
2002.12.12
Модальная форма в DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский