Tf1book + Fastscript - кто-нибудь пробывал ?

отредактировано 08:59 Раздел: FastScript
Приветствую уважаемый форум.
С компонентом FastScript работаю не совсем долго, поэтому вопрос может-быть не совсем мощный, но все-таки:
В Delphi на странице ActiveX есть компонент TF1Book (аналог таблицы Excel).
В программе можно выполнить присвоение значения ячейки компонента строкой типа
F1Book1.EntryRC[2,3]:='ЗначениеЯчейки';
и в ячейку 2,3 занесеться строка 'ЗначениеЯчейки'.
Но как сделать, чтобы это можно было делать в скрипте FastScript ?
точнее как подключить свойство EntryRC в скрипт ?

спасибо.

Комментарии

  • Stalker4Stalker4 123
    отредактировано 08:59
    В принципе это все описано в документации и можно посмотреть примеры такой реализации в FR.

    Вот тебе мой пример:

    У класса TMemoryRecordEh есть свойство DataValues
    property DataValues[const FieldNames: string; DataValueVersion: TDataValueVersionEh]: Variant;
    
    Оно тоже индексное, как и у тебя.

    Вот тебе пример, как оно подключается в FS и FR:
    constructor TFunctions.Create(AScript: TfsScript);
    begin
    
     inherited Create(AScript);
    
     with AScript do begin
    
        AddEnum('TDataValueVersionEh','dvvOldValueEh, dvvCurValueEh, dvvEditValueEh, dvvValueEh, dvvOldestValue, dvvRefreshValue');
    
        with AddClass(TMemoryRecordEh, 'TPersistent') do
          AddIndexProperty('DataValues','String, TDataValueVersionEh','Variant', CallMethod);
    
     end;
    
    end;
    
    function TFunctions.CallMethod(Instance: TObject; ClassType: TClass; const MethodName: String; Caller: TfsMethodHelper): Variant;
    begin
    
     Result := 0;
    
     if ClassType = TMemoryRecordEh then begin
                          
       if MethodName = 'DATAVALUES.GET' then
         Result := TMemoryRecordEh(Instance).DataValues[Caller.Params[0], Caller.Params[1]]
       else
       if MethodName = 'DATAVALUES.SET' then
         TMemoryRecordEh(Instance).DataValues[Caller.Params[0], Caller.Params[1]] := Caller.Params[2]
    
     end;
    
    end;
    
  • отредактировано 08:59
    Stalker4, спасибо за подсказку - сработало. Если интересно - могу написать как, но главное - идея стала понятна.
  • Stalker4Stalker4 123
    отредактировано 08:59
    Dimonis написал: »
    Stalker4, спасибо за подсказку - сработало. Если интересно - могу написать как, но главное - идея стала понятна.
    Напиши, посмотрим ...
  • отредактировано 08:59
    Stalker4 написал: »
    Напиши, посмотрим ...


    AddIndexProperty('EntryRC','Integer,Integer','Variant',CallMethod);
    // это - добавление свойства

    If MethodName='ENTRYRC.SET' Then Begin
    TF1Book6(Instance).EntryRC[Integer(Caller.Params[0]),Integer(Caller.Params[1])]:=Caller.Params[2];
    End;
    If MethodName='ENTRYRC.GET' Then Begin
    Result:=TF1Book6(Instance).EntryRC[Integer(Caller.Params[0]),Integer(Caller.Params[1])];
    End;
    // это - как обрабатывается в CallMethod

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.