Delphi学习总结

  • 格式:doc
  • 大小:338.50 KB
  • 文档页数:67

1. Pascal语言

VAR I:integer;――――――――//定义整数http://10.1.20.82:8088/JianYanJu/QueryPage.jsp?sql=selec

VAR变量定义要放在begin前面

Str,str2:Stirng;――――――――――//定义字符串

sql2:=' where '+sql2;字符串连接

:if 条件 then begin语句;end;

If 条件 then

Begin

语句;

End

Else if 条件then

Begin

End;

2.各 form互相调用implementation uses unit3;

3.数据库设置;query1.DatabaseName:=ExtractFilePath(Application.Exename);//返回当前目录

4,Query组件//执行查询

Query1.Close;Query1.SQL.Clear; Query1.SQL.Add('select * from '+college+edutime);

Query1.Open;

query1.Prior; //向前一条

query1.Next; //向后一条

5.数据库记录总数inttoStr(query1.RecordCount);

6.显示窗体Unit11.Form11.Show;

7.文件复制

var

FromF,ToF:file;

filepath:String;

NumRead,NumWritten:Integer;

Buf:array[1..2048] of Char;

begin

filepath:=ExtractFilePath(Application.Exename);

if opendialog1.Execute then

begin//22

AssignFile(FromF,opendialog1.FileName);Reset(FromF,1);{Record size=1}

if SaveDialog1.Execute then

begin//3

AssignFile(ToF, SaveDialog1.FileName);//打开目标文件

Rewrite(ToF,1);//移动到文件开始处

Canvas.TextOut(10,10,'正在拷贝'+IntToStr(FileSize(FromF))+'字节...');

repeat

BlockRead(FromF,Buf,SizeOf(Buf),NumRead);

BlockWrite(ToF,Buf,NumRead,NumWritten);

until(NumRead=0)or(NumWritten<>NumRead);//重复读入缓冲区,并写入文件,一直到文件结束

CloseFile(FromF);CloseFile(ToF);//关闭文件End;//3

boBox组件ComboBox2.Items.Add('学号');

11.fastreport打印dbgrid内容 dbgrid打印

用fastreport中的frPrintGrid组件,设置它的dbgrid属性为dbgrid1,然后调用frPrintGrid1.ShowReport;

12.窗口显示位置

Cunminxinxi.Form4.left:=200;

Cunminxinxi.Form4.top:=200;

10.ListBox组件: //添加元素with ListBox1 do

begin //1

if RadioButton1.Checked then

begin //2

with ListBox1 do

begin //3 if ListBox1.Items.Count<>0 then

begin //4

SQL:=' AND '+SQL;

SQL1:=' AND '+SQL1;

end; //4

end;//3

ListBox1.Items.Add(SQL);

ListBox2.Items.Add(SQL1);

end; //2

end; //1

删除一个元素i:=listbox1.ItemIndex;listbox1.Items.Delete(i);

11.消息框,信息框,弹出框,选择框:

Showmessage('这是一个消息弹出框!');

////////////22

with Application do

begin//22

NormalizeTopMosts;

MessageBox('对不起!条件不能为空.','提示',MB_OK);

RestoreTopMosts;

End;

//////////////22

if messagedlg('你真的要删除吗?',mtconfirmation,[mbyes,mbno],0)=mryes then

begin

end;

12.窗体打印form8.Print;

13.主窗体的标题MAIN.MainForm.Caption:='年毕业生信息';

14. DBLookupComboBox组件

设置listsource---listfiled-----keyfield

DBLookupComboBox组件改变DBGrid组件中的值

两个数据源,两个表, DBLookupComboBox的listsource:source1---listfiled:ID-----keyfield:ID设置后,datasource:source2,datafiled:ID, DBGrid的数据源datasour:source2

15.制作报表预览:Ⅰ.制作一个简单的报表

5加入一个QuickReport构件Report1,将TQuickReport构件DataSource属性设为DataSource1,

2.在该Form上放入两个QuickReport组中的TQRBand构件Band1,BandDetail;将其type属性设置为rbColumnHeading,rbDetail;

3.放入一个TTtable构件Table1,设置其DataBase属性为DBDemos,TableName属性为Custermer,Active属性为Ture,

4.在Band1上加入三个TQRLabel构件,将其Caption属性值分别设为“公司名称”、“电话”、“传真”;在BandDetail中加入三个TQRDB Text构件,将其Dataset属性设为table;DataField属性分别设为Company,Phone,Fax;

6.至此报表已基本完成,可在程序中加入Form1.Report1.Priview;对该报表进行预览,加入Form1.Report1.Print;打印该报表。

为了美观和方便,我们常希望能在报表每页的页眉或页脚中打印出页码、总页数、打印日期等等。在QuickReport中也提供了简便的方法:

7—(1).在该Form中再增加一个TQRBand构件Band4,将其Type属性设置为rbPageHeader,即可将Band4中的内容作为页眉打印出来;

(2).在Band4中加入TQRLabel构件,以在报表中每页显示文字;加入TQRSYSdata构件,设置其Data属性值,可在报表中显示页码、打印日期、打印时间、记录序号等等文档信息;

(3).如希望在每页中显示总页数,则必须写入下面几行程序:

Report1.Prepare;Count:=QRPrinter.PageCount;QRLabell.Caption:=InttoStr(Conut);

Report1.Cleanup;Report1.Preview;

8.为报表增加标题和封面

我们希望在第一页上加上标题或给报表加上封面,在使用QuickReport制作报表时,也是很简单的。在报表中增加一个TQRBand构件,将其属性设为rbTitle,在Band5中所加的文字和图形,均在第一页中打印出来。当用于封面时,可在该Band的AfterPrint事件中加入Report1.NewPage,即可。

9.为报表增加表格线

可以使报表看起来更为清晰明朗。在QuickReport中提供了两种方法:一是使用TQuickReport和TQRBand构件的Frame属性;二是直接使用TQRSharp构件。

使用TQuickReport和TQRBand构件的Frame属性的优点是设置简单,不需要写程序代码;缺点就是不能随意修改其位置和大小。使用TQRSharp则恰恰相反。而且在其所属Band的AfterPrint事件中可自由修改其位置、线型、粗细等参数。

10. ListBox和ComboBox1中显示表的所有字段

if table1.Active then

table1.GetFieldNames(listbox1.Items); table1.GetFieldNames(ComboBox1.Items);

11.动态连接库dll:

第一行代码说明这个工程文件是DLL类型的,USE部分是自动添加的单元,如果您用不到这两个单元中的内容可以去掉它。Begin和end之间用来写DLL运行时的启动代码,一般情况下,我们无需在此处写任何代码。我们这个例子是设计的一个四舍五入的函数(有读者朋友问过这个问题,也不知道为何Delphi中没有如此常用的函数),为了完整,将此动态连接库所有代码列出如下: library intnum; { Important„} uses SysUtils, Classes; function intdata(d:double):double; stdcall; begin result:=int(d*100+0.5)/100; end; exports intdata; begin end.

关键字stdcall是不能少的,另外关键字exports下面表示哪个例程可被外部程序调用,如果在其中有多个例程,但不在exports下面列出是无法调用的

DLL文件的调用

implementation

{$R *.DFM}

function intdata(d:double):double; stdcall;

external 'intnum.DLL';

edit2.text:=floattostr(intdata(strtofloat(edit1.text)));

10. DBLookupComboBox组件显示字段中的所有值“

使listfiled和keyfiled选择同样的字段