Конференция "Основная" » Как послать сообщение форме из скрипта FastReport [D7, WinXP]
 
  • tytus (24.03.08 12:58) [0]
    Добрый день всем.
    Собственно вот такой вот вопрос.
    В переменную FFmID записываю хендл формы:

    frxReport1.Variables['FFmID']:=NewPCMDTestDnFm.Handle;


    Вот код скрипта :
    uses 'Windows.pas';
     
    const
     CX_CALLTYPE=WM_USER+60;
       
    procedure Memo21OnPreviewClick(Sender: TfrxView; Button: TMouseButton; Shift: Integer; var Modified: Boolean);
    begin
     Modified:=false;
     PostMessage(Get('FFmID'),CX_CALLTYPE,0,StrToInt(TfrxMemoView(Sender).Text));                                                                                                      
    end;

    begin

    end.



    ругается <'BEGIN' Expected
    как правильно сие написать?
  • Сергей М. © (24.03.08 13:25) [1]

    > uses 'Windows.pas';


    Юниты, перечисленные в uses, должны соответствовать правилам PascalScript-интерпретатора. Совершенно очевидно, что Windows.pas им не соответствует.
  • tytus (24.03.08 14:16) [2]
    >Сергей М. ©   (24.03.08 13:25) [1]
    ОК, это дело я уже отбросил.
    В юните формы написал процедуру с одним ShowMessage('xxx'), описал ее в
    public, и переписал скрипт. Все равно одна и та-же ошибка.

    uses 'PCMDTestDN_Unit.pas';
     
    procedure Memo21OnPreviewClick(Sender: TfrxView; Button: TMouseButton; Shift: Integer; var Modified: Boolean);
    begin
     Modified:=false;
     PCMDTestDnFm.ShowCallType(TfrxMemoView(Sender).Text);                                                                                                      
    end;

    begin

    end.



    как быть теперь?
  • Сергей М. © (24.03.08 14:24) [3]

    > как быть теперь?


    А точно так же - твой PCMDTestDN_Unit.pas не является юнитом, корректным с т.з. PascalScript.
  • tytus (24.03.08 14:34) [4]
    >Сергей М. ©
    Спасибо. Значит не судьба...
    Мне вообщето нужно было всего-то по щелчку на MemoView отобразить мессаг с текстом, в зависимости от значения самого мемовью. Не хотелось писать оператор case в самом скрипте....
    Во первых - вариантов может быть много, а во-вторых - варианты могут поменяться. Тоесть значению '1' - соотв. один текст. '2' - другой... Эти значения я храню в БД (Oracle) и удобнее изменить таблицу в базе, чем саму прогу, и потом снова раздавать юзерам. (хотя я и апдейт сделал). А пользователям внапряг каждый раз обновлять прогу (особенно если пользователь - лицо начальствующее -)
  • Сергей М. © (24.03.08 15:01) [5]

    > tytus   (24.03.08 14:34) [4]


    > не судьба


    Ну почему не судьба ?
    Насколько мне помнится, PS позволяет декларировать и осуществлять вызовы экспортируемых другими PE-модулями ф-ций, в частности WinAPI. Просто надо повнимательней изучить док-цию.
  • tytus (24.03.08 18:53) [6]
    >Сергей М. ©   (24.03.08 15:01) [5]
    Огромнейшее спасибо!
    Подтолкнули на путь истинный.
    Прочитал доку "FastReport - Руководство разработчика".
    Оказывается у FastReport-a есть метод frxReport1UserFunction!!!
    Написал свою процедуру Procedure xxx(AValue:string);
    Добавил ее:
    frxReport1.AddFunction('Procedure xxx(AValue:string)');



    Ну а далее - дело техники...
 
Конференция "Основная" » Как послать сообщение форме из скрипта FastReport [D7, WinXP]
Есть новые Нет новых   [134484   +49][b:0][p:0.001]