delphi7做网页比asp做网页效率快多了(0分)

  • 主题发起人 主题发起人 山泉
  • 开始时间 开始时间
就一个EXE文件?
在Linux上也是EXE文件?
那在Unix,比如Sco Unix上行不行?
 
慢慢得自己就总结出一套比较好得方案了。
比asp强多了。
前端不要用acitvex,下载(安装)客户端最好,可做成在线生机,不受ie得限制。
后端cgi(dll)再连接midas(mts),俺一直用它,相信我,没错的!
 
哪位兄弟可以访问这个网址http://home.pchome.com.tw/guide/code6421/WSChart.htm,这是code6421写的关于IntraWeb的文章,我这里不能访问啊,多谢啦,可以地话,把它贴过来
 
to:abc_xp 图我就没有办法
Write By Code6421 2002/10/1
閒話家常
離上一篇文章至今已將近一年了,對一個整日忙碌於專案堆的人來說,每天能用的時間就只有那幾小時,在這少的可以
的時間內,一方面要鑽研技術,另一方面又想把自己的心得化為文章與朋友們分享,實在是不太可能。我常常把範例寫好後
就放在那,心想著那天有空的時候將她轉化為文章發表,但是時間就是不允許我將這個工作完成,也令許多朋友空等了很久,
實在抱歉…(如果說食言會胖的話,那麼我媽大概會要我多食言個幾百次 ;-) )。


在WebSnap 中使用TChart 元件

在我的WebSnap 文章發佈後,有許多朋友向我提起如何在WebSnap 中使用TChart 元件,那時我的回答很簡單,那就是先
建立一個TChart 元件,設定相關的屬性後將結果輸出成圖形檔後顯示於網頁上,技術上這個答案是正確的,唯一缺乏的是一個
完整的範例,這點造成了朋友的困擾。 最近又有幾個朋友重新提起這個問題,這次我在回答他們時就附上了我所寫的一個範例
程式,同時也順便寫下這篇短文,希望對其他有同樣困擾的朋友們有幫助。 要完成這個範例,我們必須要知道幾件事,
第一件事! TChart 元件是否提供可將圖表存成圖形檔的功能,第二件事! 在WebSnap 中我們該用那一個元件來顯示這個圖形。
第一個問題的答案是肯定的,TChart 元件提供了下面這個函式可將圖表輸出成為一個TBitmap 物件:

TeeCreateBitmap(ABackColor:TColor;const Rect:TRect):TBitmap;


有了TBitmap 物件後,現在我們就只剩下如何在WebSnap 顯示她了,WebSnap 提供了一個TAdapterImageField 元件可供我們顯示
圖形,使用方式很簡單,只需要撰寫她的OnGetImage 事件,將圖形檔寫入她所傳入的Image Stream 中即可,這個事件的宣告如下:

procedure (Sender: TObject;
Params: TStrings;
var MimeType: string;

var Image: TStream;
var Owned: Boolean);



在這個範例中,我們需要用到其中的MimeType 及Image 這兩個參數,Image 是一個TStream 物件,以var 方式傳遞至這個事件中,
在這個事件中我們必須建立出一個實體的Stream 物件後交回給TAdapterImageField,她會將這個Stream 指定給TWebResponse 物件後
送回給Client 端,也就是瀏覽器。 MimeType 參數則代表資料的型態,在預設情況下,TAdapterImageField 會指定MimeType 為Image/Jpeg,
也就是JPEG 圖形格式,我們可以藉由改變MimeType 來變換所傳輸的圖形格式。
好了,現在我們已經解決了完成這個範例所需的兩個問題,接下來只需要實作出來就可以了,下面列出OnGetImage 事件的程式碼:

procedure THome.AdaptImageGetImage(Sender: TObject;
Params: TStrings;
var MimeType: String;
var Image: TStream;
var Owned: Boolean);

//use JPEG
procedure CreateJpeg(Bitmap:TBitmap);
begin

Image:=TMemoryStream.Create;
try
with TJPEGImage.Createdo
begin

try
CompressionQuality := 100;
Assign(Bitmap);
SaveToStream(Image);
finally
Free;
end;

end;

except
Image.Free;
raise;
end;

end;


//use BMP
procedure CreateBmp(Bitmap:TBitmap);
begin

Image:=TMemoryStream.Create;
MimeType:='image/bmp';
try
Bitmap.SaveToStream(Image);
except
Image.Free;
raise;
end;

end;


var
Img:TBitmap;
vSeries:TPieSeries;
begin

vSeries:=TPieSeries.Create(FChart);
try
vSeries.AddPie(FCurValue1,'Value 1',clBlue);
vSeries.AddPie(FCurValue2,'Value 2',clRed);
vSeries.AddPie(FCurValue3,'Value 3',clGreen);
vSeries.AddPie(FCurValue4,'Value 4',clTeal);
FChart.AddSeries(vSeries);
FChart.Color:=clWhite;
FChart.BevelOuter:=bvNone;
Img:=FChart.TeeCreateBitmap(clWhite,Rect(0,0,400,300));
try
CreateBmp(Img);
// CreateJpeg(Img);
finally
Img.Free;
end;

finally
vSeries.Free;
FChart.RemoveAllSeries;
end;

end;





在這段程式碼中,我建立了一個餅狀圖,並加入了四個值後將她添加進Chart 物件中,接著呼叫TeeCreateBitmap 函式取得圖表的Bitmap,
最後呼叫CreateBmp 將這個Bitmap 放入Image Stream中,執行範例程式後可以得到以下的畫面:



程式中也包含了將圖表輸出成JPEG 的副函式,就實務上而言,我建議你使用JPEG格式來輸出圖形,她可以減低網路上的傳輸量。
在範例程式中除了OnGetImage 事件及建立TChart 物件的程式碼之外,其它部份都只是介面上的控制,
所以我就不列出來了(我偷偷小懶)。

範例程式下載位址: http://home.pchome.com.tw/guide/code6421/WebChart.zip
 
哪里有关于它的中文资料?
 

我分别再两台机器装过5.0.53和5.0.55(windowsXP+delphi7),5.0.53安装注册运行都正常,5.0.55安装后编译正常,运行时提示'$+0' is not a valid integer value.有能解决的吗?
注册过程:运行压缩包中的注册码生成程序,生成注册码,复制到install license key的相应窗口中就可以注册。
 
Report with Intraweb
Here are some steps to try with the code-based Rave components:
* Drop a ReportSystem component on your Datamodule.
* Set this property: ReportSystem1.DoNativeOutput := False;
* Set the appropriate output parameters to file, not printer.
* Kill Status reporting, anything that would locally pop a form
* Set the FileName and path -- use the "files" directory for output,
setting
type to .rtf or .htm, as appropriate to which report type you are
generating.
* Drop an RPRenderHTML and/or an RPRenderPDF component on the form
* Set the Render object for the specific report, eg
ReportSystem1.RenderObject := RPRenderPDF1;
* Code your ReportSystem events (BeforePrint, Header, Print, etc.)
* Execute them with ReportSystem1.Execute.
* Return the generated file with the following:
const
AIPOptions: string =
'toolbar=no,status=no,menubar=yes,scrollbars=yes,resizable=yes,location=no,
d
irectories=no,width=780,height=580';
AIPNewWindow: string = 'NewWindow("%s", "%s", "%s");';
{ A mask for the
Format }
....
....
AIPURL := WebApplication.URLBase + '/filesNC/' + sFileName;
AddToInitProc('NewWindow("' + AIPURL + '", "Agenda", "' + AIPOptions
+'");');
 
DLL卸载的方法我见有一篇文章讲过,打开IIS管理器->主目录->配置->应用程序
映射->去掉缓存ISAPI应用程序前面的勾。
我只是见别人说可以解决办法,我没有试过,你试试。
 
山泉兄弟,我要架在internet上,你的服务器可以运行吗?(申请了空间,)
 
哦,不错,简单介绍一下吧
 
山泉老兄,我初次接触WEB编程,有跟TDelphi近似的问题:用DELPHI做的主页能在
申请的个人主页空间上发布吗?我现在想用做一个个人主页,只用DELPHI,
不用ASP.CGI.JSP等(即不直接动手编写这些脚本代码)。
有可能做成一个带后台数据库的.能在INTERNET上发布的个人主页吗?
 
关注,关注!!!!!唉,真不知如何下手?
高手请出招吧。
 
大家好,终于找到intraweb高手了,我也在用intraweb 作应用,
但主要是处理大型数据的动态网页,
有事大家多交流,tjj_07@sina.com
 
有没有人解决新开窗口问题,
高手们讨论一下
 
up!
交个朋友:kuangke@sina.com.cn
 

Similar threads

A
回复
0
查看
932
Andreas Hausladen
A
A
回复
0
查看
805
Andreas Hausladen
A
A
回复
0
查看
655
Andreas Hausladen
A
A
回复
0
查看
834
Andreas Hausladen
A
后退
顶部