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选择同样的字段