rm报表的web发布 //见者有分 (300分)

  • 主题发起人 主题发起人 hfghfghfg
  • 开始时间 开始时间
H

hfghfghfg

Unregistered / Unconfirmed
GUEST, unregistred user!
rm报表的web发布

//使用webSoapApplication
procedure TWebModule_rpt.WebModule_rptWebActionItem_reportAction(
Sender: TObject; Request: TWebRequest; Response: TWebResponse;
var Handled: Boolean);
var
RPTID: string;
begin
。。。。。。。。。。

Response.Content := RMReport1.ExportToString(RMHTMExport1);
Response.ContentType := 'text/html';
end;


//修改了TRMReport


//unit RM_class;
var
ExportStream: TStream;

function TRMReport.ExportToString(Filter: TRmExportFilter):string;
var
s: string;
Flag, NeedConnect: Boolean;
begin
DocMode := dmPrinting;
FCurrentFilter := Filter;
FCurrentFilter.FileName := FileName;
if (Preview <> nil) and (EMFPages.Count = 0) then
begin
Preview.Disconnect;
NeedConnect := True;
end
else
NeedConnect := False;

Flag := True;
if Assigned(FCurrentFilter.OnBeforeExport) then
FCurrentFilter.OnBeforeExport(FCurrentFilter.FileName, Flag);
if Flag {and (FCurrentFilter.ShowModal = mrOk) }then
begin
ExportStream := TStringStream.Create('');
FCurrentFilter.Stream := ExportStream;
FCurrentFilter.OnBeginDoc;

CurReport := Self;
MasterReport := Self;
SavedAllPages := EMFPages.Count;

if FShowProgress then
begin
with RMProgressForm do
begin
s := RMLoadStr(SReportPreparing);
if Title = '' then
Caption := s
else
Caption := s + ' - ' + Title;
FirstCaption := RMLoadStr(SPagePreparing);
Label1.Caption := FirstCaption + ' 1';
OnBeforeModal := ExportBeforeModal;
Show_Modal(Self);
end;
end
else
ExportBeforeModal(Self);
result := TStringStream(ExportStream).DataString;
ExportStream.Free;
if Assigned(FCurrentFilter.OnAfterExport) then
FCurrentFilter.OnAfterExport(FCurrentFilter.FileName);
end;

if NeedConnect then
Preview.Connect(Self);
FCurrentFilter := nil;
end;

//图片的处理unit RM_e_htm;
TGetGraphicEvent = procedure(Sender: TRMMainExportFilter; AViewName: string;
var FileName: string) of object;
if ExportImages then
begin
// liFlag := (DataRec^.ViewClassName = TRMMemoView.ClassName) or (DataRec^.ViewClassName = TRMCalcMemoView.ClassName);
// if (not liFlag or DataRec^.VerticalText) and (DataRec^.ViewClassName <> TRMLineView.ClassName) then
// begin
// SetReuseImageIndex(DataRec^.ViewName, DataRec^.ViewIndex);
// if (ReuseImageIndex <> -1) and (ReuseImageIndex < FImgFileNames.Count) then
// begin
// AFileName := FImgFileNames[ReuseImageIndex];
// K := ReuseImageIndex;
// end
// else
// begin
// AFileName := FImageCreateDir + RMMakeImgFileName(ExtractFileName(FileName), 'bmp', ImgFileCount + 1);
// AFileName := SaveBitmapAs(DataRec^.Bitmap,
// ExportImageFormat{$IFDEF JPEG}, JPEGQuality{$ENDIF}, ChangeFileExt(AFileName, ''));
// K := FImgFileNames.AddObject(AFileName, TObject(Datarec^.ViewIndex));
// end;
// AFileName := FImageEncodeDir + ExtractFileName(AFileName);
// DataRec^.Bitmap.Free;
// if Assigned(FAfterSaveGraphic) then
// FAfterSaveGraphic(Self, DataRec^.ViewName, K);

if Assigned(FGetGraphicEvent) then
FGetGraphicEvent(Self, DataRec^.ViewName, AFileName);
if AFileName <> '' then
AImageSource := '<IMG SRC="' + AFileName + '" ALT="' + FAltText + '" width="' + inttostr(DataRec^.Bitmap.Width)+ '" height="' +inttostr(DataRec^.Bitmap.Height)+'">';
// end;
end;


procedure TWebModule_rpt.getG(Sender: TRMMainExportFilter;
AViewName: string; var FileName: string);
var
str: string;
idx, w, h: integer;
begin
if RMReport1.FindObject(AViewName) is TRMPictureView then
begin
with TRMPictureView(RMReport1.FindObject(AViewName)) do
begin
str := trim(Memo.Text);
w := Prop['width'];
h := Prop['height'];
end;
if checkstrtoint(str) then
idx := strtoint(str) - 1
else
idx := 0;


FileName := format('image?FileName=%s&IDX=%d', [getReportValue(DataSet_Print, '图像文件'), idx]);

end
else
FileName := '';

end;



procedure TWebModule_rpt.WebModule_rptWebActionItem_imageAction(
Sender: TObject; Request: TWebRequest; Response: TWebResponse;
var Handled: Boolean);
var
FileName: string;
Jpg: TJPEGImage;
s: TMemoryStream;
Bmp: TBitmap;
idx: integer;
MyImg: TDicomImage;

begin

S := TMemoryStream.Create;
Jpg := TJPEGImage.Create;
Bmp := TBitmap.Create;
Bmp.Width:=128;
bmp.Height:=128;
。。。。。。。。。。。。。。。。。。。。。。。。。。。
Jpg.Assign(Bmp);
jpg.SaveToStream(s);

Response.ContentType := 'image/jpeg';
s.Position := 0;
Response.ContentStream := s;
freeandnil(Jpg);
freeandnil(Bmp);

end;


以上代码
没有问题
已经在用了

只是贴给大家
 
我见分眼开!
 
接分,
老大是WHF吗?
是REPPRTMACHINE吗?
 
到老王的主页去问嘛

回复很快地
 
以上代码
没有问题
已经在用了

只是贴给大家
 
好,收藏
能不能给我寄一个例子: wanghaifeng_1@163.net
 
我也做了个rm web报表发布方案:
http://www.reportmachine.net/download/webreport/webreport.rar
 
刚刚试过
//有时会报地址错误
 
厉害,谢楼主了。
 
好像ActiveForm有问题,已经改成Activex了,不过还没上传
 
能不能考虑不用Active,应为客户的ie的有时是禁用Active的。//至少是我的客户
源码明天发给你。是rm的2.2版。
 
whf, 佩服,接分, 谢谢!
 
http://xianjun.vicp.net/temp/test.exe
 
Unit1.pas就是代码


我这种写法纯粹是为了赶时间,不能实用的。
我只是通过TRMHTMExport 在不产生文件的情况下 把html 发到了客户端。//这是一个临时的方法。

 

Similar threads

I
回复
0
查看
571
import
I
I
回复
0
查看
713
import
I
I
回复
0
查看
824
import
I
I
回复
0
查看
742
import
I
后退
顶部