部分资料来源于RAVE开发人员指南 ravedevguide5

新闻组News.Nevrona.com

RAVE的官方主页  www.nevrona.com/rave

KeyLife富翁笔记 
作者 : 引力
标题 : 有关RAVE报表
关键字:
分类 : 个人专区
密级 : 公开
(评分: , 回复: 0, 阅读: 255) »»
KeyLife富翁笔记 
作者 : icet
标题 : 用脚本动态管理RAVE报表。
关键字: rave,动态,创建,编辑
分类 : 开发经验
密级 : 公开
(评分:★★★★★ , 回复: 12, 阅读: 1023) »»
以下文字属大富翁(delphiBbs)ICET所撰写,如有引用,请注明。呵呵。

RAVE报表的优点甚为明显,在此我也不必再进行过多的讨论。
但当我在开始用这个东西的时候,就有一个很不爽的地方是不容易动态对其进行控制。
在大富翁上悬分几天没有人回应,在网上穷搜一遍,有价值的只有在“程序员大本营”
中的qxj老兄的发言。但由于个人原因,高手已经离开delphi与rave。我是初学者,在
此把一点点心得奉出,愿对大家有一定的用处。

(在写上面的文字时还以为大侠不再来,后来他还是来了,并把它那篇文章的链接的改变
做了说明,下面是他总结性文章的链接:
http://search.csdn.net/expert/topic/53/5311/2003/5/6/1743788.htm)

顺便,借这个机会,也想与一些人交些朋友,共同探讨,我的QQ:588527, 
Email: Icet_xingkong@21cn.com,欢迎打扰。:)

1、明确RAVE的结构:
   RVproject->projman->dataview,report

dataview->stringfield, integerfield....

report->page->region->band,databand->text,datatext,memo,datamemo....

2、了解组件的类。
  一般而言,组件的类名可以看RAVE设计器中的component前面的那个单词前面加上个
TRave,如text,则其类为TRaveText, DataText类为TRaveDataText.

3、了解一定的联系。
  这一点尤其是在创建DataText时要了解清楚。要创建一个DataText,则一定要有其
对应的StringField, IntegerField...,如果没有,则创建之。

4、了解要uses的units:
  Rave要uses的units较多,下面有个列表:

RvCsStd :TRaveText,TRaveMemo,TRaveSection,TRaveSection,TRaveMetaFile,
TRaveFontMaster,TRavePageNumInit

RvClass:TRaveComponent,TRaveControl, TRaveContainerControl,
TRaveContainerComponent,TRaveProjectItem,TRavePage

RvCsData:TRaveDataText,TRaveDataMemo,TRaveCalcText,
TRaveDataMirrorSection,TRaveDataCycle, TRaveCalcOp,TRaveCalcTotal,TRaveCalcController

RvCsBars: TRavePostNetBarCode,TRaveI2of5BarCode,TRaveCode39BarCode,TRaveCode128BarCode,
TRaveUPCBarCode,TRaveEANBarCode

RvCsDraw: TRaveLine,TRaveHLine,TRaveVLine,TRaveRectangle,
TRaveSquare,TRaveEllipse, TRaveCircle

RvDataField: TRaveStringField,TRaveIntegerField,
TRaveBooleanField,TRaveFloatField,TRaveCurrencyField,TRaveBCDField,
TRaveDateField,TRaveTimeField,TRaveDateTimeField,TRaveBlobField,
TRaveMemoField,TRaveGraphicField,TRaveInt64Field

RvDatabase: TRaveDatabase

RvDirectDataView: TRaveDataView,TRaveDriverDataView

RvProj:TRaveReport,TRaveProjectManager

RvSecurity:TRaveSimpleSecurity,TRaveLookupSecurity

RvCsRpt:TRaveRegion,TRaveBand,TRaveDataBand,TRaveIterateBand,
TRaveBandStyle,TRaveDataCycle,

5、实例:
uses
RpRave, RVClass,  RVProj, RvCsRpt,  RVCsStd, RvCsData, RvDirectDataView,
  RvDataField;

procedure TForm1.Button1Click(Sender: TObject);
var  MyPage:  TRavePage;
     MyBand: TRaveBand;
     MyRegion: TRaveRegion;
     mytext2: Travetext;
     mydataband: Travedataband;
     mydatatext: Travedatatext; 
     myDataView: TRaveDataView;
     myfield: TraveStringField;
begin

form1.ADOQuery1.Close;
  form1.ADOQuery1.SQL.Clear;
  form1.ADOQuery1.SQL.Add('select name,mobile,hometele,CnD from address');
  form1.ADOQuery1.Open;

form1.RvProject1.Open;

With  RvProject1.ProjMan  do
     begin
       MyPage  :=  FindRaveComponent('Report3.mainPage',nil)  as  TRavePage;  //查找page (注意,查找page,dataview后面的parent引用的是nil,而其他的页面上的对象引用时用page,比如说如果是某BAND下的一个TEXT,你不能引用这个BAND找到它,而是要用PAGE名。)

MyRegion:= FindRaveComponent('dataview1Region',MyPage) as TRaveRegion;

MyBand := FindRaveComponent('DataView1Band',Mypage) as TRaveBand;
       // MyBand :=  TRaveBand(mypage.Components[3]);

MyText2:=TRaveText.Create(Myband);
       MyText2.Parent:=Myband;
       MyText2.Name:=GetUniqueName('Text125',MyPage,false);
       MyText2.Top:=0;
       MyText2.Left:=5.2;
       MyText2.Width:=200;
       MyText2.Height:=200;
       MyText2.Text:='号码';
       MyText2.Font.Size :=15;//设置字体的属性
       MyText2.Font.Color :=Clmaroon;
       MyText2.Font.Name :='宋体';
       AddComponent(MyText2);
       //建立新文本,TraveText,列标题。

myDataView:=FindRaveComponent('DataView1',nil) as TraveDataView;
       //myDataView:=TraveDataView(rvproject1.ProjMan.Components[0]);
       myfield:=TRaveStringField.Create(myDataView);
       myfield.Parent:=myDataView;
       myfield.Name:='dataview1CnD';
       myfield.FieldName:='CnD';
       myfield.FullName:='CnD';
       myfield.Size:=4;
       addcomponent(myfield);
       //建立新的字段,tStringfield,字段。

MydataBand := FindRaveComponent('dataview1dataBand',Mypage) as TRavedataBand;
       //MydataBand :=  TRavedataBand(mypage.Components[8]);
       Mydatatext:=TRavedataText.Create(Mydataband);
       Mydatatext.Parent:=Mydataband;
       Mydatatext.Name:=GetUniqueName('dataText125',Mypage,false);
       Mydatatext.Top:=0;
       Mydatatext.Left:=5.2;
       Mydatatext.Width:=1;
       Mydatatext.Height:=200;
       mydatatext.DataView := myDataView;
       mydatatext.DataField:='CnD';
       Mydatatext.Font.Size :=12;//设置字体的属性
       Mydatatext.Font.Color :=Clblack;
       Mydatatext.Font.Name :='宋体';
       AddComponent(Mydatatext);
       //建立新的列,Tdatatext,字段内容。
     end;
    form1.RvProject1.Execute;
    rvproject1.Close;
end;

希望大家多多评论! 
我这段时间在用,会继续修改。

2003-10-7 14:43:00   
发表评语»»»

2003-10-13 0:53:08    关于数据类型的注意事项。
如果你是自己创建新字段的话,那么,你一开始可能并不能确定该字段的类型。
在这种情况下,我的处理方法是把所有的字段类型定义为字符型,也就是在创建
字段的时候用TRaveStringField.Create(myDataView)

这里要注意的一点就是因为这是字符型,所以你的数据源也得都为字符型。
这里提倡用query组件,在SQL语句中把所有的字段都转化成字符型。这点
在SQL server中甚为方便,一个STR函数就可以摆平了。在用到一些整型
数(如count函数等)时,这点就需要很是注意了。

2003-10-13 1:03:10    关于自动展栏与画线延长的做法。
RAVE的那个datamemo的expandparent:=true能自动展栏确实是一个很爽
的功能。
但如果我们是自己新建的datamemo,却在这个方面会出现错误,我现在
也搞不清楚究竟是什么原因,怀疑是RAVE的一个小BUG,第三方控件有
些意外也性正常。那我们就得避开它而进行操作。
具体的做法是先在你的RAVE设计器里,在那个databand里放上几个datamemo,
在用的时候修改它,而不是去创建它,就一切OK了。

至于那条画线的anchor如果是(V-strech/left)的话,可以延长,但是这个
在脚本生成的时候也会出现一些问题。那个anchor是一个TraveAnchor的值,
但其值的表达方法我找寻了N天都没有找到可以让我编绎过去。甚至于我用
已有的边框(一般情况下脚本生成还是画一些基本的框框容易实现些),以
myDAtamemo.anchor:=(rvproject1.projman.findcomponent('asdf',mypage) as TRaveVline).anchor
都编绎不过去,甚为恼火,于是解决方法同上,也是预先在设计器里画上有限
的几条线,把这些anchor设好,并把left设成与边框重叠(这样就视觉上可以
满足的。),在脚本中控制它的left值就OK了。

2003-10-18 1:52:17    想不到QXJ大侠大驾光临。
QXJ大侠大驾光临,真是让我荣幸之至,还望多多指教。:)
你不是在那篇贴子里说要寻求其他出路了么? 现在如何?

他的那个贴子确实是经典,个人认为应该算是中文第一手资料,呵呵,我也再
贴一遍,大家看看:
http://expert.csdn.net/Expert/topic/1743/1743788.xml?temp=.1427576

2003-10-27 15:03:22    to qxj:
 
 QQ上可以通过验证否?
 我的好友列表已经期待你好久了。 :)

2003-10-27 16:03:48    关于一些anchor,pagesize等的赋值。
前面讲到datamemo的时候,说到anchor赋值不能通过。

今天突然用起了paperSize的时候试了一下,用整数输入,有变化。
于是在dataMemo里也试了一下,用整数也有变化。

于是怀疑这个整数是否为该属性取值的序号。
但在paperSize里验证,发现有变化,但是没有发现相应的规律。

哪位同志如果发现了,告诉告诉。谢谢。

2003-10-27 20:54:33    上面那个QXJ文档的链接不能用了。
这个富翁笔记似乎只有第一栏可以修改,其他栏不能修改。
上面提到的QXJ的文档已经不是那个链接了,它在后面的评语里也有说到,
我这里再贴一遍,以便大家参阅。
http://search.csdn.net/expert/topic/53/5311/2003/5/6/1743788.htm

2003-12-1 1:49:30    几个问题的自问自答。(CSDN)
http://expert.csdn.net/Expert/topic/2508/2508675.xml?temp=.2401087

几个问题:
 1、如果实现空白表格?
   比如说,某些表格每一页都是填满整页的,如果数据不足以填充整页,
 则其他的行为空白行,填满整页。
 2、表底栏。
   意思就是说如果建一个栏,让那些内容老是处于末页页脚的位置。如果
 上面的问题解决了,可能这个就不是问题了。
 3、左边的“合并单元格”。
   我不知道大家是如何实现类似“合并单元格”的功能,我现在的做法是
 一种愚笨的方法,就是在REgion的左边画一个框框。。。但这个框框的高度
 要保证它的上线与下线与表格内的其他记录内容相匹配时就出现了难题,因
 为由于memo的展栏,那个高度很难估计。大家是如何实现的?或者说,这个
 高度如何取得?
谢谢了。

我自己的问题已经解决。
现把我的解决思路说出,希望能有人遇到时会有些帮助。
  一、如果是只有一页,而且刚好那里面又都没有用到会换行的
datamemo,那么,可以从数据集着手。select top 20 * from
(select a,b,c from table where ...
Union all select null,null,null from table) AAA
  二、当然,第一步解决了,这一步随之解决。这里要注意到的
就是一个关于BAND的PositionMode属性。它有三种属性,选择pmAbsolute
可以选择固定的位置。再加上BandStyle设置成first,就可以实现
末端表底打印。
  三、在左边加一个方框,把背景前景设置好,在上面放一个合
适位置的Memo,下端不要划线,数据栏里的线也不要画到这里,然
后在底端紧跟一个Band,画一条top为零的Hline。

2004-11-29 10:55:35   
查看评语»»»

2005-4-9 9:43:09    Rave常见问题>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
我在DELPHI版块RAVE报表上解决的问题较多,而且发现提出的问题都有很大的相似性(本来提交了几个FAQ,但不知何时才能通过审核),所以就先整理一下自己的一点经验,希望能带给大家一点帮助,如果你觉得没什么用大可不必看.:)

以下的程序在XP+D6+Rave5.1下调试通过,

问题1:动态的设置报表中的内容

   uses

RVClass, RVProj, RVCsStd;

var

MyPage: TRavePage;

MyText: TRaveText;

begin

RaveProject1.Open;

With RaveProject1.ProjMan do begin

MyPage := FindRaveComponent('Report1.Page1',nil) as TRavePage; //查找PAGE

MyText := FindRaveComponent('Text1',MyPage) as TRaveText; //查找TEXT

MyText.Text := 'Boland Delphi'; //设置报表中文本内容

MyText.Color := clGreen; //设置颜色

end; { with }

RaveProject1.ExecuteReport('Report1');

RaveProject1.Close;

end;

问题2:保存报表为HTML或PDF格式(对于PDF格式不支持中文)

   rvproject1.projectfile :='E:\delphi\rave\files\test.rav';

rvproject1.Open;

rvproject1.SelectReport('report1',true);//选择要打印的报表

RvSystem1.DoNativeOutput:=false;

RvSystem1.DefaultDest:= rdFile;//保存成文件

RvSystem1.RenderObject:=RvRenderHTML1;//保存成HTML格式 或RPRenderPDF1;

RvSystem1.OutputFileName:='files/test.html'; //存放的路径

RvSystem1.SystemSetups:=RvSystem1.SystemSetups-[ssAllowSetup];

try

rvproject1.Execute;

except

ShowMessage('生成报表文件错误!');

end;

对于只有一页报表那是没有问题的,但对于多页在D6下和D7有所不同.D6下可以生成许多页,但D7下却

不行,不知为什么?D6下的RAVE版本是5.1,

问题3: IntraWeb和Rave的无缝连接

我的思路就是先把报表保存成HTML或PDF格式,然后再用IE调用

const

AIPOptions: string = 'toolbar=no,status=no,menubar=yes,scrollbars=yes,resizable=yes,location=no,directories=no,width=1000,height=700';

var

aipurl :string;

rvproject1.Open;

rvproject1.SelectReport('report1',true);//选择要打印的报表

RvSystem1.DoNativeOutput:=false;

RvSystem1.DefaultDest:= rdFile;//保存成文件

RvSystem1.RenderObject:=RvRenderHTML1;//保存成HTML格式

RvSystem1.OutputFileName:='files/test.html'; //存放的路径

RvSystem1.SystemSetups:=RvSystem1.SystemSetups-[ssAllowSetup];

try

rvproject1.Execute;//生成报表

AIPURL := WebApplication.URLBase + '/files/' + 'test.html'; //IE打开第一页报表

AddToInitProc('NewWindow("' + AIPURL + '", "Agenda", "' + AIPOptions+'");');

except

webapplication.ShowMessage('生成报表文件错误!');

end;

问题4: 让最终用户动态的修改报表格式.

with RvProject1 do

begin

DLLFile :='D:\Rave5\Redist\RaveSolo.dll'; //如果不指定此文件则运行时会报出错

ProjectFile :='E:\delphi\rave\files\test.rav'; //指定RAV文件

LoadDesigner :=true;

If Design then begin

If MessageDlg(Trans('Save changes to project ') +

ProjectFile + '?',

mtConfirmation,

[mbYes,mbNo,mbCancel],0) = mrYes then

begin

Save;//保存

end; { if }

end; { if }

end;{with}

此程序在D6+Rave5.1下调试通过.在D7下就用Rave.dll

回复人: qxj(Borland中国&游民) ( ) 信誉:135 2003-5-6 9:16:39 得分:0

问题5: 设计时通过程序动态向报表增加一个TEXT

uses

RVClass, RVProj, RVCsStd,RvCsRpt;

var

MyBand: TRaveBand;

MyRegion: TRaveRegion;

MyPage: TRavePage;

MyText,mytext1: TRaveText;

begin

RvProject1.Open;

With RvProject1.ProjMan do begin

MyPage := FindRaveComponent('Report1.Page1',nil) as TRavePage;

MyRegion:= FindRaveComponent('Region1',MyPage) as TRaveRegion;

MyBand := FindRaveComponent('Band1',MyRegion) as TRaveBand;

MyText:=TRaveText.Create(Myband);

MyText.Parent:=Mypage;

MyText.Name:=GetUniqueName('Text125',MyPage,false);

MyText.Top:=0.2;

MyText.Left:=0.7;

MyText.Width:=200;

MyText.Height:=200;

MyText.Text:='Delphi';

MyText.Font.Size :=20;//设置字体的属性

MyText.Font.Color :=ClRed;

MyText.Font.Name :='隶书';

AddComponent(MyText);

end; { with }

RvProject1.ExecuteReport('Report1');

RvProject1.Close;

问题6:在报表中插入日期或页数

在RAVE设计时增加一个DATATEXT控件,其DATAFIELD属性有相关的设置

Report Variables中有CurrentPage当前页,TotalPages总页数,DateShort短日期,DateLong长日期,

TimeLong 长时间

问题7:通过参数向报表传值,和问题1有点相同

     With RaveProject1 do begin

Open;

SetParam('ParamName','ParamValue');

ExecuteReport('Report1');

Close;

end; { with }

问题8:去掉打印预览时出现的Output Options对话框

RvSystem.SystemSetups中的ssAllowSetup 设为False

问题9:ndr格式转化为pdf

    var

NDRStream: TMemoryStream;

begin

NDRStream := TMemoryStream.Create;

try

NDRStream.LoadFromFile('files\test.ndr');

RvRenderPDF1.PrintRender(NDRStream, 'files\test.pdf');

finally

NDRStream.Free;

end; { tryf }

ShowMessage('NDR Converted');

end;

问题10: 分栏显示(snaking columns)

    name1 name6

    name2 name7

    name3 name8

    name4

    name5

    窗体添加以下控件Rvsystem1,table1,DataSource1 

    procedure TForm1.Button1Click(Sender: TObject);

begin

ReportSystem1.Execute;

end;

procedure TForm1.ReportSystem1Print(Sender: TObject);

begin

With (Sender as TBaseReport),Table1 do begin

SetFont('Times New Roman', 20);

Bold := True;

Underline := True;

Home;

PrintCenter('NAME LISTING', PageWidth / 2.0);

SectionTop := 1.0;

MarginBottom := 0.75;

Home;

While not Table1.EOF do begin

SetColumns(2,0.5);

{OnNewColumn will be called after each call to SetColumns and on each

new column after that}

While (ColumnLinesLeft > 0) AND (NOT Table1.EOF) do begin

If FieldByName('NAME').AsString <> '' then begin

Println(FieldByName('NAME').AsString);

end; {if}

Table1.Next;

end; {while}

If not Table1.EOF then begin

NewPage;

end; {if}

end; {while}

end; { with }

end;

procedure TForm1.ReportSystem1BeforePrint(Sender: TObject);

begin

Table1.First;

end;

procedure TForm1.ReportSystem1NewColumn(Sender: TObject);

begin

With Sender as TBaseReport do begin

SetFont('Times New Roman', 14);

Bold := True;

UnderLine := True;

AdjustLine;

Println(' NAME');

SetFont('Arial',12);

AdjustLine;

end; {with}

end;

procedure TForm1.ReportSystem1PrintFooter(Sender: TObject);

begin

With Sender as TBaseReport do begin

MarginBottom := 0.5;

PrintFooter('Page ' + Macro(midCurrentPage)

+ ' of ' + Macro(midTotalPages), pjCenter);

MarginBottom := 0.75;

end; {with}

end;

Top

回复人: qxj(Borland中国&游民) ( ) 信誉:135 2003-5-6 9:16:53 得分:0

问题11:通过rave面板中的textfiler把table中的内容直接打印到文本

在窗体上增加table,textfiler,button;

procedure TForm1.Button1Click(Sender: TObject);

begin

TextFiler1.FileName :='e:\rave\program\txtprint\tmp.txt';

TextFiler1.Execute;

end;

procedure TForm1.TextFiler1Print(Sender: TObject);

var

DoHeader: boolean;

begin

With Sender as TBaseReport,Table1 do begin

ClearTabs;

SetTab(0.5,pjLeft,3.0,0,BOXLINENONE,0);

SetTab(NA,pjLeft,3.0,0,BOXLINENONE,0);

SetTab(NA,pjLeft,1.5,0,BOXLINENONE,0);

First;

DoHeader := true;

While not EOF do begin

If LinesLeft <= 0 then begin

NewPage;

DoHeader := true;

end; { if }

If DoHeader then begin

PrintCenter('Customer Listing',PageWidth / 2.0);

NewLine;

NewLine;

PrintTab('name');

PrintTab('sex');

PrintTab('age');

NewLine;

DoHeader := false;

end; { if }

PrintTab(FieldByName('name').AsString);

PrintTab(FieldByName('sex').AsString);

PrintTab(FieldByName('age').AsString);

NewLine;

Next;

end; { while }

end; { with }

end;

问题12:设计好的Rave报表文件如何打包到EXE文件中

    在rvproject的属性中有一个storerav,你只要load .rav文件即可

问题13:格式化字符串

    对于从数据源取出的字段如何格式化如price 在表中12345.25现要显示为$12,345.2500

只需在设计时修改Data View Dictionary->dataview1->dataviewprice中的displayFormat为

$#,####,###.0000;

Top

回复人: qxj(Borland中国&游民) ( ) 信誉:135 2003-5-6 9:17:17 得分:0

问题14:常常要USES到的单元

RvCsStd :TRaveText,TRaveMemo,TRaveSection,TRaveSection,TRaveMetaFile,

TRaveFontMaster,TRavePageNumInit

RvClass:TRaveComponent,TRaveControl, TRaveContainerControl,

TRaveContainerComponent,TRaveProjectItem,TRavePage

RvCsData:TRaveDataText,TRaveDataMemo,TRaveCalcText,

TRaveDataMirrorSection,TRaveDataCycle,       TRaveCalcOp,TRaveCalcTotal,TRaveCalcController

RvCsBars: TRavePostNetBarCode,TRaveI2of5BarCode,TRaveCode39BarCode,TRaveCode128BarCode,TRaveUPCBarCode,TRaveEANBarCode

RvCsDraw: TRaveLine,TRaveHLine,TRaveVLine,TRaveRectangle,

TRaveSquare,TRaveEllipse, TRaveCircle

RvDataField: TRaveStringField,TRaveIntegerField,

TRaveBooleanField,TRaveFloatField,TRaveCurrencyField,TRaveBCDField,

TRaveDateField,TRaveTimeField,TRaveDateTimeField,TRaveBlobField,

TRaveMemoField,TRaveGraphicField,TRaveInt64Field

RvDatabase: TRaveDatabase

RvDirectDataView: TRaveDataView

TRaveDriverDataView

RvProj:TRaveReport,TRaveProjectManager

RvSecurity:TRaveSimpleSecurity,TRaveLookupSecurity

RvCsRpt:TRaveRegion,TRaveBand,TRaveDataBand,TRaveIterateBand,

TRaveBandStyle,TRaveDataCycle,

有关RAVE报表 - 大富翁论坛20050419的更多相关文章

  1. Delphi--最强大的开发工具(欢迎转载)

    最强大的开发工具 Delphi 目录 --------------------------------------------------------------------------- 前言 De ...

  2. Delphi7目录结构----初学者参考

    打开Delphi的安装目录,如C:\Program Files\Borland\Delphi7,你将会看到目录下包含了一些文件和文件夹: ²        Source:存放的是Delpi提供的所有源 ...

  3. Delphi7目录结构

    Delphi7目录结构 打开Delphi的安装目录,如C:\Program Files\Borland\Delphi7,你将会看到目录下包含了一些文件和文件夹:Source:存放的是Delpi提供的所 ...

  4. C#的前世今生,学会C#还能找到高薪工作吗?

    其实C#,.net正在逐步淡出程序员的视野是正在发生的现实,量子及量子的小伙伴们,还在坚持写C#代码的人几乎没有了,回忆起过去那些写C#时候的美好时光,真是不胜唏嘘,最近园子里的一篇<C#程序员 ...

  5. delphi中webbrowser的用法

    WebBrowser1.GoHome; //到浏览器默认主页 WebBrowser1.Refresh; //刷新 WebBrowser1.GoBack; //后退 WebBrowser1.GoForw ...

  6. Delphi七个版本

    第一次Zack Urlocker给我看一款尚未发布的名为Delphi的产品时,我意识到她将改变我的工作—还有许多其他软件开发者的工作. 我过去为使用Windows C++ 库而挣扎,而Delphi过去 ...

  7. XE7 - Image的双击事件无响应,咋整?(已解决)

    今天折腾了好一会,本想做个类似于手机相册的功能,显示SQLite数据库中的图片,然后继续做一些处理.哪成想,写个测试例子时就被卡住了:简单的往窗体上拖放了一个TImage和一个TLabel,没有修改任 ...

  8. 完美PNG半透明窗体解决方案

    当年Vista系统刚出来的时候,最吸引人的莫过于半透明磨砂的窗体界面了,迷倒了多少人.这个界面技术随即引发了编程界的一阵骚动,很多人都在问:如何实现这一界面效果?当然,在Vista下倒是很简单,系统本 ...

  9. Delphi编程中资源文件的应用

    Delphi编程中资源文件的应用/转自 http://chamlly.spaces.live.com/blog/cns!548f73d8734d3acb!236.entry一.引子: 现在的Windo ...

随机推荐

  1. Rhel6-varnish配置文档

    系统环境: rhel6 x86_64 iptables and selinux disabled 主机: 192.168.122.160:virnish apache server60.example ...

  2. String与InputStream相互转换

    1.String to InputStream String str = "String与InputStream相互转换"; InputStream   in_nocode   = ...

  3. linux命令每日一练习-top free

    top看看进程的内存使用情况 free产看内存使用情况 top -n 2 -b > log.txt   将更新两次的结果输入到log.txt cat > log.txt //清空文件并写入 ...

  4. 【matlab】用matlab 保存带标记图像、图片的方法总结

    最近看了一些用matlab对图形图片进行保存的帖子和资源,关于图像保存的方法给大家分享一下这些方法是大家所使用方法的一个总结. 如今常用的方法有三种printf,imwrite,saveas下面分别介 ...

  5. HTML5新增video标签及对应属性、API详解

    知识说明: 比不上很牛的前端开发人员,但自始至终明白“万丈高楼平地起”,基础最重要,初学HTML5,稳固基础第一步,把最基本的整理下来,留下自己学习的痕迹.HTML5新增的video标签,将其属性以及 ...

  6. rails常用验证方法 (转)

    validates_presence_of       :login,  :message => "用户名不能为空!" validates_length_of         ...

  7. 2014年4月份第2周51Aspx源码发布详情

    HFC代码转化工具源码  2014-4-8 [VS2010]源码描述:HFC代码转化工具源码 1.主要实现HTML代码转化为C#或者JS代码,为我们平时编码节省时间. 2.把代码复制到面板上,通过右键 ...

  8. linux上安装php+gd扩展

    515 cd zlib-1.2.3 516 ./configure --prefix=/usr/local/zlib2 517 make && make install 518 cd ...

  9. Unit Tests

    The Three Laws of TDD First Law : you may not write production code until you have written a failing ...

  10. inline-block

    在CSS中,块级对象元素会单独占一行显示,多个block元素会各自新起一行,并且可以设置width,height属性:而内联对象元素前后不会产生换行,一系列inline元素都在一行内显示,直到该行排满 ...