![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как послать сообщение форме из скрипта FastReport [D7, WinXP]
tytus © (2008-03-24 12:58:00)Добрый день всем.
Собственно вот такой вот вопрос.
В переменную 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
как правильно сие написать?
tytus (2008-03-24 18:53:00) [1]>Сергей М. © (24.03.08 15:01) [5]
Огромнейшее спасибо!
Подтолкнули на путь истинный.
Прочитал доку "FastReport - Руководство разработчика".
Оказывается у FastReport-a есть метод frxReport1UserFunction!!!
Написал свою процедуру Procedurexxx(AValue: string);
Добавил ее:
frxReport1.AddFunction('Procedure xxx(AValue:string)');
Ну а далее - дело техники...
Сергей М. (2008-03-24 15:01:00) [2]
> tytus (24.03.08 14:34) [4]
> не судьба
Ну почему не судьба ?
Насколько мне помнится, PS позволяет декларировать и осуществлять вызовы экспортируемых другими PE-модулями ф-ций, в частности WinAPI. Просто надо повнимательней изучить док-цию.
tytus (2008-03-24 14:34:00) [3]>Сергей М. ©
Спасибо. Значит не судьба...
Мне вообщето нужно было всего-то по щелчку на MemoView отобразить мессаг с текстом, в зависимости от значения самого мемовью. Не хотелось писать оператор caseв самом скрипте....
Во первых - вариантов может быть много, а во-вторых - варианты могут поменяться. Тоесть значению '1' - соотв. один текст. '2' - другой... Эти значения я храню в БД (Oracle) и удобнее изменить таблицу в базе, чем саму прогу, и потом снова раздавать юзерам. (хотя я и апдейт сделал). А пользователям внапряг каждый раз обновлять прогу (особенно если пользователь - лицо начальствующее -)
Сергей М. (2008-03-24 14:24:00) [4]
> как быть теперь?
А точно так же - твой PCMDTestDN_Unit.pas неявляется юнитом, корректным с т.з. PascalScript.
tytus (2008-03-24 14:16:00) [5]>Сергей М. © (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.
как быть теперь?
Сергей М. (2008-03-24 13:25:00) [6]
> uses ' Windows.pas';
Юниты, перечисленные в uses, должны соответствовать правилам PascalScript-интерпретатора. Совершенно очевидно, что Windows.pas им не соответствует.