19.09.2018, 16:55 [+3 UTC]
в нашей команде: 2 970 чел. | участники онлайн: 5 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.50 (13.09.2018)

Общие новости:
13.04.2018, 10:33

Форум:
18.09.2018, 08:51

Последний вопрос:
19.09.2018, 12:40

Последний ответ:
19.09.2018, 08:03

Последняя рассылка:
18.09.2018, 17:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
03.03.2010, 18:43 »
Falcon
Спасибо за подробный ответ! Буду искать. Хотя уже начинаю задумываться о замене материнской платы. [вопрос № 176970, ответ № 259795]
06.03.2017, 19:08 »
crater.10
Спасибо, будем разбираться с этой таблицей. [вопрос № 190608, ответ № 274695]

РАЗДЕЛ • Pascal / Delphi / Lazarus

Создание программ на языках Pascal, Delphi и Lazarus.

[администратор рассылки: Зенченко Константин Николаевич (Модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 178
Асмик Гаряка
Статус: Советник
Рейтинг: 0
Орловский Дмитрий
Статус: Мастер-Эксперт
Рейтинг: 0

Перейти к консультации №:
 

Консультация онлайн # 67106
Раздел: • Pascal / Delphi / Lazarus
Автор вопроса: [CRA5H-OVERRIDE]
Отправлена: 15.12.2006, 13:43
Поступило ответов: 1

доброго времени суток товарищи эксперты!
у меня такой вопрос к вам: Как вызвать JavaScript функцию из Delphi?
пишу ActiveX на Delphi, скомпилировал файл OCX прописал его в HTML документе как объект, рядом пишется JavaScript (с простейшей функцией которая вызывает alert) задача заключается в том чтобы из активной формы добраться до нашей функции.

(обратное действие сделано, JavaScript обращается к ActiveX'u)
буду очень благодарен за ваши советы.

если кому удобней по асе, стучите: 4873661

Состояние: Консультация закрыта

Ответ # 131876 от KiberZero

Здравствуйте, [CRA5H-OVERRIDE]!

Для того, чтобы реализовать работу со скриптами, необходимо воспользоваться компонентом "Microsoft ScriptControl" со вкладки ActiveX и установить свойство типа скрипта. После этого, соответствующим методом(зависит от конкретной задачи) описать процедуру вызова, описания и работы скрипта. Извините, но вы мало предоставили информации по вашему вопросу, поэтому чтобы долго не разъяснять и не вдаваться в подробности, прочитайте ниже о методах настройки вызовов скриптов.

Если у вас отсутствует этот компонент, то установите его из библиотеки типов.

Основной принцип вызова скрипта в данном компоненте основан на вызове TScriptControl, например:

Button1.OnClick := ScriptControl1.OnClickHandler;
Настройка свойств и вызов скриптов
Рассмотрим ключевые свойства и методы TScriptControl.
property Language: String
Задает язык, интерпретатор которого будет реализовывать компонент. В стандартной поставке доступны VBScript и JScript, однако, если в вашей системе установлены расширения Windows Scripting, возможно использование других языков, таких как Perl или Rexx
property Timeout: Integer
Задает интервал исполнения скрипта, по истечении которого генерируется ошибка. Значение –1 позволяет отключить ошибки таймаута и позволить скрипту исполняться неограниченное время
property UseSafeSubset: Boolean
При установке этого свойства в TRUE компонент может выполнять ограниченный набор действий, заданный текущими установками безопасности в системе. Использование этого свойства полезно, если Вы запускаете скрипты, полученные, например, по Интернет.
procedure AddCode(const Code: WideString);
Добавляет код, заданный параметром к списку процедур компонента. В дальнейшем эти процедуры могут быть вызваны при помощи метода Run, либо из других процедур скрипта.
ScriptControl1.AddCode(Memo1.Text);
function Eval(const Expression: WideString): OleVariant
Выполняет код, заданный в параметре Expression и возвращает результат исполнения. Позволяет выполнить код без добавления его к списку процедур компонента.
procedure AddObject(const Name: WideString; Object_: IDispatch; AddMembers: WordBool);
Добавляет объект к пространству имен компонента. Объект должен быть OLE-automation сервером. Добавленный объект доступен как объект в коде скрипта. Например, если в программе создан Automation сервер External, реализующий метод DoSomething(Value: Integer), то добавив объект
ScriptControl1.AddObject(‘External’, TExternal as IDispatch, FALSE);
Мы можем в коде скрипта использовать его следующим образом:
Dim I
I = 8 + External.DoSomething(8)
function Run(const ProcedureName: WideString; var Parameters: PSafeArray): OleVariant;
Выполняет именованную процедуру из числа ранее добавленных при помощи метода AddCode. В массиве Parameters могут быть переданы параметры
procedure Reset;
Сбрасывает компонент в начальное состояние, удаляя все добавленные ранее объекты и код.
Таким образом, TScriptControl представляет собой достаточно гибкую исполняющую систему с возможностями расширения путем добавления в её пространство имен серверов автоматизации OLE.
Интеграция TScriptControl с VCL
В существующем виде возможности TScriptControl сильно ограничены сложным доступом к классам VCL. Исполнение интерпретируемого кода – это хорошо, однако хотелось бы иметь возможность их него обращаться к компонентам в программе, получать и устанавливать их свойства, обрабатывать возникающие в них события, например следующим образом:
Sub Main()
Dim Control
Control = Self.Controls("Panel2")
Control.Add "Panel3", "TPanel"
With Panel3
.Align = "alTop"
.BevelOuter = "bvNone"
.Height = 40
.Caption = ""
.Add "Btn", "TButton", True
With Btn
.Top = 10
.Left = .Top
.Caption = "Click me"
End With

End With
End Sub

Sub Btn_OnClick()
Dim StatusBar
Dim Panel
Dim I
I = 0
For Each Panel in StatusBar.Panels
I = I + 1
with Panel
.Text = .Text & " " & CStr(I)
End With
Next
End Sub

Если что-то будет непонятно, спрашивайте, будем вместе решать вашу задачу.

Удачи!


Консультировал: KiberZero
Дата отправки: 15.12.2006, 23:28

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.15377 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.50 от 13.09.2018