C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
TVCLScript
** Nick
Отправлено: 19.11.2005, 11:21


Не зарегистрирован







Есть пример на Delphi

и ограниченная по возможностям моя попытка переделать на BCB
На паскале не писал лет 10 уже

Реализация скриптового языка в программе для некоторых вещей
в основном правка на месте у клиента.

Паскалевский код

RegisterClasses([TButton, TPanel, TEdit, TLabel, TTimer, TDateTimePicker]);
/* SC создается гдето в недрах */
SC.Language := 'VBScript';
SC.IScriptControl_Timeout := -1;
SC.RegisterClass('Self', Self);
SC.AddCode(Memo1.Text);
SC.RunProc('Main');


/* Вот эту строку не могу перевести, в инете только Делфийские коды на эту тему, без нее нельзя в скрипте создавать новые кнопка, поля редактирования и т.д и т.п. и обрабатывать события нажатие кнопок и изменения полей и т.д. КАК ЕЕ ПЕРЕВЕСТИ НА C++ весь инет, исходники и Help излазил
RegisterClass([TButton, TPanel, TEdit, TLabel, TTimer, TDateTimePicker]); */

ScriptControl2 = new TVCLScriptControl(this);
ScriptControl2->Language = "VBScript";
ScriptControl2->IScriptControl_Timeout = -1;
ScriptControl2->RegisterClass("Self", Panel1 );
ScriptControl2->RegisterClass("But", Button1 );

ScriptControl2->AddCode(Memo1->Text);

ScriptControl2->RunProc("Main");

Guest
Отправлено: 19.11.2005, 13:53


Не зарегистрирован







Вобщем разобрался
надо было так

TMetaClass *classes[5] =
{ __classid(TButton),
__classid(TPanel),
__classid(TEdit),
__classid(TLabel),
__classid(TTimer) };
// , __classid(TDateTimePicker) };

ScriptControl2->Language = "VBScript";
ScriptControl2->IScriptControl_Timeout = -1;
RegisterClasses( classes , 0);

работает.
в скрипте работает создание
элементов из зарегистрированных классов
и обраьотка событий,
вобщем круто можно завернуть,
жаль только что VB но и его хватит я думаю


Вернуться в Вопросы программирования в C++Builder