搜档网
当前位置:搜档网 › Delphi中DBGrid的应用技巧和简单美化

Delphi中DBGrid的应用技巧和简单美化

Delphi中DBGrid的应用技巧和简单美化
Delphi中DBGrid的应用技巧和简单美化

在Delphi语言的数据库编程中,DBGrid是显示数据的主要手段之一。但是DBGrid缺省的外观未免显得单调和缺乏创意。其实,我们完全可以在我们的程序中通过编程来达到美化DBGrid外观的目的。通过编程,我们可以改变DBGrid 的表头、网格、的前景色和背景色,以及相关的字体的大小和风格。

在 DBGrid的onDrawColumnCell事件中键入以下代码,然后运行程序,就可以看到神奇的结果了。

procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;constRect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState); vari :integer;

begin

//定义表头的字体和背景颜色:

for i :=0 to (Sender as TDBGrid).Columns.Count-1 do

begin

(Sender as TDBGrid).Columns[i]https://www.sodocs.net/doc/ca4532107.html, :='宋体'; //字体

(Sender as TDBGrid).Columns[i].Title.Font.Size :=9; //字体大小

(Sender as

TDBGrid).Columns[i].Title.Font.Color :=$000000ff; //字体颜色(红色) (Sender as TDBGrid).Columns[i].Title.Color :=$0000ff00; //背景色(绿色)

end;

//选中行的背景颜色

if gdSelected in State then

(Sender as TDBGrid).Canvas.Brush.Color:=clyellow

//隔行改变网格背景色:

if Query1.RecNo mod 2 = 0 then

(Sender as TDBGrid).Canvas.Brush.Color :=clteal //定义背景颜色 else

(Sender as TDBGrid).Canvas.Brush.Color :=clwhite ; //定义背景颜色

//特定字段颜色显示

if column.FieldName='fls' then

begin

(Sender as TDBGrid).Canvas.Brush.color:=clblue; //背景色 (Sender as TDBGrid).Canvas.Font.Color:=clred; //字体色

end;

DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State); end;

//DBGrid回车键自动跳转下一列,以及自动增加记录

procedure Tform1.DBGrid1KeyPress(Sender: TObject; var Key: Char); begin

if key<>#13 then exit;

if (ActiveControl is tDBGrid) then begin

with TDBGrid(ActiveControl) do

if SelectedIndex<(FieldCount-1) then

selectedIndex:=SelectedIndex+1

else

if not DataSource.DataSet.Eof then begin

DataSource.DataSet.Next;

selectedIndex:=0;

end else begin

DataSource.DataSet.Append;

selectedIndex:=0;

end;

end;

end;

//DBGrid单元格(第i列)中添加下拉列表

DBGrid1.Columns[i].PickList.Add('AAA');

DBGrid1.Columns[i].PickList.Add('BBB');

......

delphi制作多文档界面

最为一个巩固之前有关窗体和对象的有关知识,下面就建立一个简单的MDI示范程序,这个程序的功能是打开和保存图形文件(包括位图、图标等),为了完成这个任务,我们有一个大概的计划,计划内容如下: (1)建立主窗体(一个MDI父窗体),包括菜单。 (2)为【File | Open…】和【File | Save…】菜单选项编写代码。 (3)为Windows菜单上的Cascade、Tile和Arrange All选项编写代码。 (4)建立MDI子窗体。 (5)建立一个About对话框。 (6)然后再回忆和欣赏一下这段工作。 时间就是金钱,即刻就做吧。 一、创建主窗口窗体 首先创建一个主窗口窗体,一个MDI应用程序的主窗口的FormStyle属性必须设置为fsMDIForm。不但要为应用程序增加File Open和File Save 对话框,还要增加一个菜单。 1、启动Delphi,并从主菜单选择【File | New | Application】; 2、把主窗体的Name属性设置为MainForm; 3、把Caption属性设置为Picture Viewer; 4、把FormStyle属性设置为fsMDIForm; 好了,下面为此窗体增加一个菜单,利用Delphi特性,引进一个预定义菜单,具体如下:1、点击组件选项板的Standard标签,并点击MainMenu按钮;

2、把MainMenu组件点击放置到窗体上,具体放到哪个地方无所谓了,因为在运行阶段,代表菜单的图标只是占地方而不显示,这是非可视化组件。 3、把MainMenu组件Name属性改为MainMenu; 4、双击MainMenu组件,就会出现Menu Designer对话框; 5、在MainMenu上点击鼠标右键,选择“Insert From Template…”,将出现Insert Template对话框;

WebEx Recorder使用说明

WebEx Recorder:性能最好的录屏软件 你在寻找好用的录屏软件吗?商用级品质的WebEx Recorder就是一款优秀的录屏软件。WebEx Recorder可以录制全屏或指定窗口,可以设定是否包含声音,生成的文件体积极小且极清晰,录制过程占用资源很少。WebEx的最大优点是性能出众。WebEx 软件并不是个人开发或面向个人的小软件,而是完整的商业解决方案中包括的一款小工具。因此,它在效率和稳定性方面非常出色,称得上是善用佳软见过的录屏软件(包括几款共享软件)中性能最好的一款。例如,用WebEx Recorder全屏带声音录制1小时,生成的文件约25MB,且计算机仍工作流畅,无任何延缓。再如,包括微软、SAP在内的很多大公司,网络讲座经常采用WebEx平台。再如,有些录屏软件,时间太长的话会占用资源太大而失去响应,但WebEx不存在此情况。 1. WebEx Recorder 版权说明 WebEx Recorder不是免费软件,也不是共享软件,而是商业套件中的一个小工具。尽管从技术来讲,可以到主页下载,可以无限期应用,无任何注册提示或限制。但软件许可协议中规定:3.1 You may not: …… iii) utilize the Software for any purpose other than participation in a WebEx meeting or use of the WebEx services。 2. 下载安装WebEx Recorder 在官方下载 WebEx recorder v2.4,体积约 4271KB,安装后约 7MB。WebEx 安装后有三个快捷方式,包括 player、recorder、editor。但这并不意味着有3个独立程序:所谓的播放、录制、编辑其实对应同一个主程序,只是运行参数不同: ”D:\program files\WebEx\atauthor.exe” -PLAYER ”D:\program files\WebEx\atauthor.exe” ”D:\program files\WebEx\atauthor.exe”–EDITOR

修改PE壁纸以及启动界面_最简单的WINPE_DIY美化教程_文库首发

最简单的WINPE DIY美化教程 –制作你自己的个性U盘系统 注:本教程以老毛桃WinPE系统为例您还在为WINPE那难看的界面发愁吗? 您还在为网上找不到全面的DIYPE教程发愁吗? 您还在为找到DIY教程以后看不懂而发愁吗? ………… 今天让我以最通俗的、最简单的、最易学的方式带着你美化属于你自己的PE系统。让你在日常使用PE维护的过程中个性十足。 在教程开始之前小生特此声明:本人并非专业认识,只是对电脑有着浓厚兴趣,喜欢DIY电脑界面,如果在教程中如有遗漏或者错误,希望友友们指出。本人不胜感激! 教程: 预处理: 1.打开资源管理器——工具——文件夹选项——打开隐藏所有文件(如图) 2.插入你的U盘并打开,你会发现有名字为MiniPE的文件夹,在本教程中需要修

改其中的:BJ2008.XPM(包含启动界面)以及OP.WIM(包含桌面壁纸) 3.复制BJ2008.XPM,OP.WIM到你自己硬盘里面任意位置(如D:\),修改的时候 起到备份的作用。 4.下载需要的工具:WimTool,WinGZip,XnView。(教程最后附有下载地址) 修改WINPE界面&启动界面(需要软件WimTool) 1.打开wimtool(),界面如图所示 2.将从U盘里面复制出的OP.WIM解开映像 注:* 在这部可能出现解开失败,如果你是WIN7用户可以尝试修改UAC为如图

同WIMTOOL同目录即可(教程最后附有WIMGAPI.DLL) 3.然后解开映像(如:存放位置D:\OP文件夹中如图)

4.然后替换同名图片为你自己喜欢的壁纸名字必须一致哟 成美化

delphi制作登陆界面

///////////////////// (一)项目文件 test.dpr ////////////////////// program SerialGet; uses Forms, UMain in UMain.pas {frmMain}, ULogin in ULogin.pas {frmLogin}, UDataModule in UDataModule.pas {DataModule1: TDataModule}, {$R *.res} begin Application.Initialize; if CreateMutex then //创建句柄,判断此应用程序是否在运行 begin //调用全局函数,创建并显示登陆界面 if doLogin then //登陆成功 begin Application.CreateForm(TfrmMain, frmMain); //数据模块文件不须在这儿创建,因为 ULogin.pas 中已创建 //Application.CreateForm(TDataModule1, DataModule1); Application.Run; end else //登陆不成功 begin try DataModule1.free; Application.terminate; except end; end; end else begin DestroyMutex; //释放句柄 end; end. //////////////// (二)登陆窗体 ULogin.pas ULogin.dfm ////////////////// unit ULogin; interface uses ...... type ... ... ...

C++中函数调用时的三种参数传递方式

在C++中,参数传递的方式是“实虚结合”。 ?按值传递(pass by value) ?地址传递(pass by pointer) ?引用传递(pass by reference) 按值传递的过程为:首先计算出实参表达式的值,接着给对应的形参变量分配一个存储空间,该空间的大小等于该形参类型的,然后把以求出的实参表达式的值一一存入到形参变量分配的存储空间中,成为形参变量的初值,供被调用函数执行时使用。这种传递是把实参表达式的值传送给对应的形参变量,故称这种传递方式为“按值传递”。 使用这种方式,调用函数本省不对实参进行操作,也就是说,即使形参的值在函数中发生了变化,实参的值也完全不会受到影响,仍为调用前的值。 [cpp]view plaincopy 1./* 2. pass By value 3.*/ 4.#include https://www.sodocs.net/doc/ca4532107.html,ing namespace std; 6.void swap(int,int); 7.int main() 8.{ 9.int a = 3, b = 4; 10. cout << "a = " << a << ", b = " 11. << b << endl; 12. swap(a,b); 13. cout << "a = " << a << ", b = " 14. << b << endl; 15.return 0; 16.} 17.void swap(int x, int y) 18.{ 19.int t = x; 20. x = y; 21. y = t; 22.}

如果在函数定义时将形参说明成指针,对这样的函数进行调用时就需要指定地址值形式的实参。这时的参数传递方式就是地址传递方式。 地址传递与按值传递的不同在于,它把实参的存储地址传送给对应的形参,从而使得形参指针和实参指针指向同一个地址。因此,被调用函数中对形参指针所指向的地址中内容的任何改变都会影响到实参。 [cpp]view plaincopy 1.#include https://www.sodocs.net/doc/ca4532107.html,ing namespace std; 3.void swap(int*,int*); 4.int main() 5.{ 6.int a = 3, b = 4; 7. cout << "a = " << a << ", b = " 8. << b << endl; 9. swap(&a,&b); 10. cout << "a = " << a << ", b = " 11. << b << endl; 12. system("pause"); 13.return 0; 14.} 15.void swap(int *x,int *y) 16.{ 17.int t = *x; 18. *x = *y; 19. *y = t; 20.} 按值传递方式容易理解,但形参值的改变不能对实参产生影响。 地址传递方式虽然可以使得形参的改变对相应的实参有效,但如果在函数中反复利用指针进行间接访问,会使程序容易产生错误且难以阅读。

labview界面美化问题(自动保存的)

labview界面美化问题(自动保存的) 部门: xxx 时间: xxx 整理范文,仅供参考,可下载自行编辑

LABVIEW前面板加工美化问题 2018-09-14 14:17xuanxi2005 | 分类:其他编程语言| 浏览5702次 我设计了一个LABVIEW程序,生成EXE可执行文件后,觉得前面板很难看,主要是因为操作页面也就是前面板和网页一样,虽然菜单栏什么的都可以去掉,但界面上有很多没有控件的版面,我的所有控件都集中在一个矩形框内,能否打开仅仅显示有用的部分呢? b5E2RGbCAP 忘了图。。 分享到: 2018-09-15 15:30 提问者采纳 当然可以了!剔除矩形框以外的部分对吧!VI属性》类别“窗口大小”,设置为你矩形框的大小即可。运行后,只显示,你输入的大小。试一下哈,可以的。p1EanqFDPw

在labview中怎样实现界面切换 ------解决方案-------------------- 1.可以使用选项卡 2.可以使用sub面板 3.适当加一些控件隐藏,显示功能 ytclimbsky | 二级 不是很明白你的问题,可否贴下图。如果只是要在程序面板中使用不需要在前面板显示,那可以在前面板中右击不用的控件,高级-->隐藏显示控件,这样就不会在前面板出现了DXDiTa9E3d labview前面板怎么插入图片,还有去掉网格 2018-11-06 13:49u3434u | 分类:其他编程语言| 浏览2344次

分享到: 2018-11-06 14:13网友采纳 仅仅是美化的话,在前面板中粘贴进来就行了; 网格嘛,你说的是图中的这个选项所指代的网格不?这个网格在运行的时候是不显示的呀,你把圈出来的勾选去掉,编辑时也不显示了RTCrpUDGiT labview怎么隐藏前面板的菜单栏和工具栏? 2018-08-26 16:53wlfry2009 | 分类:Windows | 浏览748次分享到: 2018-08-27 21:08 提问者采纳

函数参数传递的原理

函数参数传递的原理 参数传递,是在程序运行过程中,实际参数就会将参数值传递给相应的形式参数,然后在函数中实现对数据处理和返回的过程,方法有按值传递参数,按地址传递参数和按数组传递参数。 形参:指出现在Sub 和Function过程形参表中的变量名、数组名,该过程在被调用前,没有为它们分配内存,其作用是说明自变量的类型和形态以及在过程中的作用。形参可以是除定长字符串变量之外的合法变量名,也可以带括号的数组名。 实参:实参就是在调用Sub 和Function过程时,从主调过程传递给被调用过程的参数值。实参可以是变量名、数组名、常数或表达式。在过程调用传递参数时,形参与实参是按位置结合的,形参表和实参表中对应的变量名可以不必相同,但它们的数据类型、参数个数及位置必须一一对应。 等号、函数名称、括弧和参数,是函数的四个组成部分。 函数“=SUM(1,2,3)”,1、2和3就是SUM函数的参数,没有参数1、2、3,函数SUM 则无从求值。 函数“=VLOOKUP(2,A:C,3,)”,没有参数2、A:C和3,函数VLOOKUP如何在A:C 区域查找A列中是2那一行第3列的数值? 当然,也有不需要参数的函数,如“=PI()”、“=NOW()”、“TODAY()”等。 函数参数传递的原理C语言中参数的传递方式一般存在两种方式:一种是通过栈的形式传递,另一种是通过寄存器的方式传递的。这次,我们只是详细描述一下第一种参数传递方式,另外一种方式在这里不做详细介绍。 首先,我们看一下,下面一个简单的调用例程: int Add (int a,int b,int c) { return a+b+c; }

DELPHI中如何调用API,可举例说明

DELPHI中如何调用API,可举例说明 第一部分Delphi知识1. 如果一个元件希望放到IDE的元件面板上,它必须从________类派生,如果一个元件能作为其它元件的容器,它必须从_____________类派生,如果一个元件在运行时可见,它必须从___________________类派生(A)TGraphicControl (B)TWinContr 1、rtl70.bpl是什么?有什么用? 2、delphi的Package相对dll有什么优点? 3、以下的记录(结构)变量在内存占多少字节?type a = packed record v1: Byte; v2: Word; v3: string[16]; v4: Double; v5: string; v6: TForm; end; 4、以下的写法是否正确?type a 1.您为什么选择软件开发这个行业?(30字左右简写); 2.如果有您解决不了的软件问题您会采取什么样的解决措施; 3.a.请您写出Object Pascal所支持的数据类型;b.请您写出Shl、Shr、Xor、Not 的数学表示法; 4.请您写出VCL结构层次(以TObject开始,最少五层);5 二.是非题(共20道)1.从主菜单上选择Project|Syntax Check 菜单选项,Delphi将编译从上次编译后有改动的任何单元,并报出遇到的错误。()2.Delphi的VCL对象有些是指针,从堆栈中分配空间,有些则不是。()3.粘贴时,如果作为容器的组件已被选择,

剪贴 一.选择题(共40道)1.用户开发程序时需要经常在窗体和编辑器窗口之间来回切换,可使用快捷键()。A、F12和F11 B、F12和F13 C、F12和Ctrl+F12 D、F12和Alt+F12 E、F12和Shift+F12 2.某函数如下:Function check(n,k:Integer):Integer; Var m:Integer; Beg 编程语言:delphi7.0或Vc++6.0 时间:4小时内环境:可参考帮助文档,但不能上网查资料1、编程查找指定目录下所有EXE 文件,并将其全路径存入Result.txt中,要求用递归。2、采用SOCKET(可用SOCKET API或delphi Socket控件)实现点对点传输大文件,要求不能掉

DELPHI Variant变量的使用技巧

DELPHI Variant变量的使用技巧。。。。。。 delphi 为了完全支持OLE,32位Delphi 增加了Variant 数据类型,本节将从宏观角度来分析这种数据类型。实际上,Variant类型对Pascal语言有普遍而深入的影响,Delphi 控件库中与OLE 无关的地方也使用到这种类型。 Variant变量没有类型 一般说来,你可以用Variant 变量存储任何数据类型,对它执行各种操作和类型转换。需要注意的是:这违反了Pascal 语言的一贯原则,有悖于良好的编程习惯。variant 变量的类型检查和计算在运行期间才进行,编译器不会提示代码中的潜在错误,这些错误在进一步测试中才能发现。总之,你可以认为包含variant变量的代码是解释性代码,正如解释性代码一样,许多操作直到执行时才能知道,这对代码运行速度会有很大的影响。 上面对Variant 类型的使用提出了警告,现在来看看Variant 类型究竟能干什么。基本上说,如果声明了一个variant 变量: var V: Variant; 你就可以把各种不同类型的值赋给它: V := 10; V := 'Hello, World'; V := 45.55; 一旦得到一个variant 值,你可以把它拷贝给任何兼容或不兼容的数据类型。如果你把值赋给不兼容的数据类型,Delphi 会力尽所能进行转换,无法转换则颁布一个运行时间错误。实际上,variant变量中不仅包含了数据还包含有类型信息,并允许一系列运行时间操作,这些操作很方便,但运行速度慢且安全性差。 见例VariTest,它是上面代码的扩展。窗体上有三个编辑框,一对按钮,第一个按钮的OnClick 事件代码如下: procedure TForm1.Button1Click(Sender: TObject); var V: Variant; begin V := 10; Edit1.Text := V; V := 'Hello, World';

delphi海康

type //HCNetSDK头文件类型声明Delphi改写 //基本数据类型声明 DWORD=LongWord; //WORD:Word; USHORT=Word; LONG=Longint; //BYTE=char ; //#define BOOL int UINT=Longword; LPVOID=Pointer; HANDLE=Pointer; LPDWORD=^LongWord; //typedef unsigned long long UINT64; //NET_DVR_Login_V30()参数结构 type LPNET_DVR_DEVICEINFO_V30=^NET_DVR_DEVICEINFO_V30; NET_DVR_DEVICEINFO_V30=Record sSerialNumber:array [0..SERIALNO_LEN-1] of BYTE ; //序列号 byAlarmInPortNum:BYTE ; //报警输入个数 byAlarmOutPortNum:BYTE ; //报警输出个数 byDiskNum:BYTE ; //硬盘个数 byDVRType:BYTE ; //设备类型, 1:DVR 2:ATM DVR 3:DVS ...... byChanNum:BYTE ; //模拟通道个数 byStartChan:BYTE ; //起始通道号,例如DVS-1,DVR - 1 byAudioChanNum:BYTE ; //语音通道数 byIPChanNum:BYTE ; //最大数字通道个数 byZeroChanNum:BYTE ; //零通道编码个数 //2010-01-16 byMainProto:BYTE ; //主码流传输协议类型 0-private, 1-rtsp bySubProto:BYTE ; //子码流传输协议类型0-private, 1-rtsp bySupport:BYTE ; //能力,位与结果为0表示不支持,1表示支持, //bySupport & 0x1, 表示是否支持智能搜索 //bySupport & 0x2, 表示是否支持备份 //bySupport & 0x4, 表示是否支持压缩参数能力获取 //bySupport & 0x8, 表示是否支持多网卡 //bySupport & 0x10, 表示支持远程SADP //bySupport & 0x20, 表示支持Raid卡功能 //bySupport & 0x40, 表示支持IPSAN 目录查找 //bySupport & 0x80, 表示支持rtp over rtsp bySupport1:BYTE ; // 能力集扩充,位与结果为0表示不支持,1表示支持 //bySupport1 & 0x1, 表示是否支持snmp v30 //bySupport1 & 0x2, 支持区分回放和下载 byRes1:BYTE ;

网站界面如何美化的几种方法

武汉网页设计培训:网站界面如何美化的几种方法 网站的界面是网站给来访者留下第一印象的直接窗口。网站界面的漂亮与否直接影响到访客对网站的兴趣以及停留时间!所以网站的界面美化工作是应该引起足够重视的。那到底该如何美化网站界面使他容易被访客所接受呢?今天我们就跟大家一起来探讨一下网站界面的美化的几个原则以及具体的方法。 一、网页设计界面优化原则 武汉网页设计界面优化原则一、行业特征 网站就像你的穿着打扮,要有自己的风格自己的个性。但是这种个性要与自己的身份职务相搭配。也就是说你的网站要根据你的行业特点进行美化,比如说科技类网站善用蓝色,娱乐类网站善用橙色,政府门户类网站大多用红色调。 总结下就是你的网站界面要符合行业特征! 武汉网页设计界面优化原则二、访客喜好 如果你的访客是年轻人充满活力个性十足的,那你的网站配色以及LOGO就要符合这个定位符合你受众的喜好。你的网站色调也要表现的充满活力动感十足!举个例子说太平洋女性网主色调就是紫色,因为紫色代表的就是时尚浪漫。试问哪些女性朋友们不渴望一份浪漫与时尚呢? 总结下就是作访客喜欢的! 武汉网页设计界面优化原则三、统一性原则 你的网站一定色调要统一,最好属于同一个色系。至多不要超过三个颜色!如果颜色过多会导致人们审美疲劳!慢慢的离开你的网站!从而失去一定访客,导致PV下降! 总结下就是统一色调效果佳! 武汉网页设计界面优化原则四、细致入微 俗话说细节决定成败,一个网站的界面就是一个个小像素块组成的,做网站的美化要尽量细致到每一个小细节,不要觉得一个点一个图片的小角不重要。其实不然,一个人穿的邋里邋遢就可以看出这人性格如何了。一个人非常漂亮就是嘴角戴着一粒米,这严重影响自己的形象。网站也是一样的你不注意界面的小细节访客就有理由认为你这网站内容不怎么样!

用delphi设计图书管理系统

《数据库技术与应用》 大作业 题目:数据库应用系统的设计和实现 适用专业: 指导老师: 班级: 姓名: 学号: 中南大学信息科学与工程学院 2010 年1月

图书是人类文明的见证,随着高科技的发展各式各样图书越来越多,图书馆和书店的管理也越来越复杂。如今图书管理系统是一 个书店或一个图书馆的必备系统。一个安全可靠并且对于用户比较实用的图书管理系统来说变得尤其重要。 本次设计设计了一个在DELPHI平台基于SQL Server 2000开发出的图书管理系统。在系统的设计上面实现了该系统的交互式界面。 从系统的需求分析、系统设计、系统实现入手,详细阐述了一个 C/S 结构的图书管理信息系统主要功能的实现过程。每一阶段均给 出了相应的理论依据和实现内容,并介绍了系统实现部分的主要算法。整个系统的设计与开发严格按照软件工程思想进行,从需求分析到系统设计和实现、从原型系统设计到迭代完善,本图书管理系统涵盖了六个主要的子系统:图书资料管理、读者资料管理、借书 操作、还书操作、删除、修改和查询处理,提高了工作的准确率和效率。 本图书管理信息系统是利用计算机管理信息处理的迅速、准确、可靠且具有强大存储能力的突出特点,全面提高图书馆的管理水平 和工作效率,并以及时、完整的业务经营资料,为图书馆的及时转换提供一定的支持。

关键词:数据库,SQL server2000,Delphi 7,图书管理系统 1.1 课题研究现状分析 在现金信息化发达的社会,图书的发行量与日俱增。因此需要对书籍资源、读者资源、借书信息、还书信息进行管理,及时了解各个环节中信息的变更,有利用管理效率的提高。传统的图书馆需要制作有署名与对应编号的书卡,由读者按分类查找再交由图书管理员来处理借书工作,还书也要人工翻阅大量的记录,这样使得工作量大并及其繁琐,效率变得低下。建立网上电子图书管理系统的目的是实现无纸化图书管理,减轻管理员的工作量,方便读者查阅所需的图书,还可以利用网络实现提醒读者还书的功能。管理员还可以对各种图书进行分析统计,对过时、损坏的图书进行删除。达到降低成本提高工作效率的目标。 1.1.1本领域内已开展的研究工作 1. 理论研究基础 (1)数据库设计方法的完整化、多样化,又有多学科的综合性。 (2)数据库设计步骤的规范化和细致化。 (3)数据库技术不断的更新,并不断增加新的技术,兼容性范围也逐渐扩大。2. 技术层面的支持 SQL Server的普遍应用,并得到的用户的支持,与Windows操作系统的完全兼容性也决定了它在今天仍然有着庞大的使用群体。SQL Server2000作为后台数据库与前台开发软件Visual Basic、C#、Visual C++、Delphi等都能够无缝连接。 1.1.2已经取得的研究成果 (1)开发出了一套系统的数据库理论,安全性、完整性、并发性、恢复性都有完整的概述。 (2)随着Internet的迅猛发展,数据库在各个领域作为后台存储得到了广泛的 支持。 (3)完善的数据库管理并与前台开发软件的结合使用开发了一系列优秀的图书管理系统,在商业、经济等方面得到了广泛的应用。

java中界面的美化

JAVA软件界面美化 JAVA软件界面美化 使用过JAVA软件的人,很多人会对JAVA软件界面的美观不满意,尽管JAVA Swing 推出了JAVA Look And Feel 机制,但这些JAVA可更换机制的外观目前数量实在太有现(网络上可供下载使用的目前大概有30个),开发、定制也不是很容易,难以满足用户快速多变的个性化需求。(据我所知国人当中目前基本没有开发JAVA Look And Feel 的,前段时间本人使用了 SkinLookAndFeel这个皮肤化的JAVA Look And Feel ,l以为日子会好过,不过最终我失望了:(),毕竟同时是专家级的JAVA程序员又是美术大师的人太少了! 总之,Java Look And Feel 虽然好,但开发不易,难以个性化,根本上来说还是没有代码和视图分离。最理想的状态是什么?应该美术设计师设计图形,程序员开发程序,各不相关,互不牵扯,那才是完美的结果。SkinLookAndFee 在某种程度上其实已经做到,但它在代码的机制上实在不怎么样,可移植性差,皮肤配置不容易。。。等等。(哎,本人刚开始对她是很期望了,不过还是验证了“期望大失望大”这句话) 不过SUN就是这么牛X,其JAVA 5.0已经给了我一个很好的答案,使用Synth吧, Custom UIs are a breeze with the newest Swing look and feel,让你不用写JAVA代码也可以轻松创建漂亮的JAVA界面。 还等什么,让我们开始Synth时尚之旅行,让你的JAVA软件外观更漂亮吧!注意:本文假定你是个已经入门的JAVA开发者,有基本的JAVA GUI开发经历.如果你现在什么都不懂,也想体验Synth,那就留言吧,我会帮你的.:)。 本文的开发环境是Eclipse3.1+JDK5.0,请记得:如果想使用Syth,那么你必须使用jdk5.0。首先,让我们美化一个基本JDK组件:按钮(JButton)的外观。 1、在Eclipse开发环境中,建立一个JAVA工程,添加一个一个名为MyButton.java类 2、MyButton.java类的代码如下: package demo.synth; import java.awt.FlowLayout; import javax.swing.JButton; import javax.swing.JFrame; public class MyButton { JFrame frame = new JFrame("Test Buttons"); JButton jButton = new JButton("JButton"); // 按钮 public MyButton() { frame.setLayout(new FlowLayout()); frame.getContentPane().add(jButton); } public void show() { frame.pack(); frame.show(); } public static void main(String[] args) { MyButton tb = new MyButton(); tb.show(); } } 该类可直接运行,运行后效果如下图:

Delphi文件操作

Delphi文件操作 变量的数据保存于内存中,随程序运行的结束而结束,若要使程序下次运行时能重复使用或给其他程序员使用,必须保存在文件中,Delphi存取文件的方式有4种,即传统的PASCAL方式、windows API文件句柄方式、VCL文件流方式、使用类方法方式。使用类方法方式比较简单,其他三种方式一般的步骤为: (1) 声明文件类型变量; (2) 给文件类型变量指定文件名; (3) 通过文件类型变量打开并且读写文件,必要时进行文件定位; (4) 关闭文件。 1、PASCAL方式访问文件 文件是由相同数据类型的数据元素组成的序列,文件可以分为三种类型:文本文件,类型文件,无类型文件。文本文件中每个数据元素就是一个字符,占有一个字节,并以回车换行符(#13#10)表示每行的结束;类型文件中每个数据元素的数据类型可以是整数、实型记录型等;无类型文件中每个数据元素是一个字节的二进制数。 文件和数组在形式上有些类似,但实质上有诸多不同,主要表现为以下三个方面:(1)数组的元素个数一般是固定的,而文件的长度一般是不定的、随即的; (2)数组元素总是放于内存中,而文件往往存于外存中; (3)数组以“数组名[下标]”的形式访问数组中的任意一个元素,而文件则需要通过文件变量来访问。 1)类型文件 例一、Button1按钮将记录数组XS[0..1]写入文件…Stu.dat?,Button2将…Stu.dat?读到记录变量X1,X2,然后用消息框输出。 TYPE Stu = Record Xh:integer; Xm:string[20]; END; Procedure TForm1.Buttonclick(Sender:TObject);//记录数组写入文件 Const xs:array[0..1] of Stu=((Xh:=405;xm:='张三'),(xh:=406,xm:='李四')); Var F:File of Stu; begin AssignFile(F,'Stu.dat');//关联文件 ReWrite(F);//打开方式(写) Write(F,xs[0],xs[1]);//将数组写到文件 CloseFile(F); end; procedure TForm1.Button2Click(Sender: TObject); Var F:File of Stu; x1,x2:Stu; begin AssignFile(F,'Stu.dat');

delphi可视化编程讲稿

第三章D e l p h i的窗体与组件 教学要求: 掌握窗体、编辑类组件、按钮类控件、列表类控件、分组类组件、时钟组件、菜单组件、工具栏组件和工具按钮、多选项卡的的属性、方法与事件,学会使用这些组件设计应用程序的界面。 掌握ShowMessage、ShowMessageFmt、MassageDlg、MassageDlgPos、InputBox、InputQuery对话框函数与对话框过程的特点,并能熟练应用。熟悉公共对话框控件组件的属性,方法、事件及应用。 掌握创建新窗体的两种不同的方法及其应用。 掌握windows的模式与非模式窗体的概念及应用方法。 掌握焦点的含义,与焦点相关的属性,应用焦点设计程序的方法。 了解CreateMessageDialog函数的定义与用法、speedbutton和文件有关的控件的属性、方法与事件。

从本章开始,将介绍Delphi 编程的一些基本方法。通过这一部分的学习,可以了解开发Windows 环境下应用程序的一些关键技术,并可以方便、快捷地开发一般的应用程序。 为了简化编程工作,Delphi 提供了许多功能强大的函数和类。其中很重要的一部分就是组件类。本章将重点介绍常见组件及其编程应用。 现在深入普及的Windows操作系统中,方便快捷的人机交互界面主要是通过窗体和对话框实现的。在Delphi中,这些窗体和对话框就是程序设计阶段的窗体,Delphi的可视化设计工作就是在窗体中进行的。 通常,窗体中会有文字输入、滚动条、复选框、单选框、按钮等一系列组件,通过这些直观易懂的组件,可以方便的实现多种多样的功能。在Delphi中,这些运行期间出现在窗体和对话框中的组件称为可视组件。在窗体中,还可以放置一些运行期间非可视的组件,对应其它的TComponent子类。这些不可视组件集中地实现了一些特殊的功能。比如,时钟控制等功能。 ●TComponent组件类,所有的组件都是由这个类派生来的。 ●TControl子类(可视组件)可分为两类:窗体组件和图 形组件。

总结Java方法(函数)传值和传引用的问题

总结Java方法(函数)传值和传引用的问题 java方法中传值和传引用的问题是个基本问题,但是也有很多人一时弄不清。 (一)基本数据类型:传值,方法不会改变实参的值。 public class TestFun { public static void testInt(int i){ i=5; } public static void main(String[] args) { int a=0 ; TestFun.testInt(a); System.out.println("a="+a); } } 程序执行结果:a=0 。 (二)对象类型参数:传引用,方法体内改变形参引用,不会改变实参的引用,但有可能改变实参对象的属性值。 举两个例子: (1)方法体内改变形参引用,但不会改变实参引用,实参值不变。 public class TestFun2 { public static void testStr(String str){ str="hello";//型参指向字符串“hello” } public static void main(String[] args) { String s="1" ;

TestFun2.testStr(s); System.out.println("s="+s); //实参s引用没变,值也不变 } } 执行结果打印:s=1 (2)方法体内,通过引用改变了实际参数对象的内容,注意是“内容”,引用还是不变的。 import java.util.HashMap; import java.util.Map; public class TestFun3 { public static void testMap(Map map){ map.put("key2","value2");//通过引用,改变了实参的内容 } public static void main(String[] args) { Map map = new HashMap(); map.put("key1", "value1"); new TestFun3().testMap(map); System.out.println("map size:"+map.size()); //map内容变化了 } } 执行结果,打印:map size:2 。可见在方法testMap()内改变了实参的内容。 (3)第二个例子是拿map举例的,还有经常涉及的是 StringBuffer : public class TestFun4 {

ClientDataSet的用法(转) - CNQCJ 的Delphi 博客 - 博客园

ClientDataSet的用法(转)- CNQCJ 的Delphi 博客- 博 客园 ClientDataSet的用法(转)TClientDataSet控件继承自TDataSet,其数据存储文件格式扩展名为 .cds,是基于文件型数据存储和操作的控件。该控件封装了对数据进行操作处理的接口和功能,而本身并不依赖上述几种数据库驱动程序,基本上能满足单机"瘦"数据库应用程序的需要。 1.TClientDataSet的基本属性和方法介绍 1).FieldDefs: 字段定义列表属性 开发者可通过单击属性编辑器中该属性编辑按钮,或在该控件上单击右键选择弹出菜单中的"Fields Editor"菜单进行字段编辑。设置完此属性后,实际上就相当于定义了表的结构;如果想装入已有的数据表的结构和数据,可通过单击右键选择弹出菜单中的"Assign Local Data"菜单,从弹出对话框中选取当前窗体中已与数据库连接好的数据集控件名 称即可(当前窗体中必须已放置好要套用的数据集控件并打开激活)。 使用注意: 对于自定义的字段名表,该属性编辑完后,该控件仍然无法打开。必须右键单击该控件,选择弹出菜单中的"Create DataSet"菜单,让该控件以上述编辑的字段列表为依据,创

建数据集后,才能够被激活打开和使用。否则,会出现类似"ClientDataSet1: Missing data provider or data packet."的错误(包括在运行期,运行期可调用该控件的CreateDataSet 方法,从而动态定义字段和表)。 2).FileName属性 说明:数据存储文件的名称。 因该控件是基于文件型的数据操作控件,因此,必须指定所操作的数据文件名称(默认扩展名称.cds),从而打开和激活该控件,进而进行数据编辑。 例1:利用此属性打开指定的.cds文件 var Path: string; begin Path := ExtractFilePath(Application.ExeName); //取得可执行文件路径 CDataSet1.FileName := Path + 'test.cds'; CDataSet1.Open; end; 3).CreateDataSet方法 说明:该方法以FieldDefs中的字段名表为结构建立数据集,常用来进行动态定义表。 例2:动态创建一具有姓名和年龄两个字段的数据集。

VC之美化界面篇

VC之美化界面篇 作者:白乔 链接:https://www.sodocs.net/doc/ca4532107.html,/1046595482643.html 本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础: 1.大致了解MFC框架的基本运作原理; 2.熟悉Windows消息机制,熟悉MFC的消息映射和反射机制; 3.熟悉OOP理论和技术; 本文根据笔者多年的开发经验,并结合简单的例子一一展开,希望对读者有所帮助。 1 美化界面之开题篇 相信使用过《金山毒霸》、《瑞星杀毒》软件的读者应该还记得它们的精美界面: 图1 瑞星杀毒软件的精美界面 程序的功能如何如何强大是一回事,它的用户界面则是另一回事。千万不要忽视程序的用户界面,因为它是给用户最初最直接的印象,丑陋的界面、不友好的风格肯定会影响用户对软件程序的使用。 “受之以鱼,不若授之以渔”,本教程并不会向你推荐《瑞星杀毒软件》精美界面的具体实现,而只是向你推荐一些常用的美化方法。

2 美化界面之基础篇 美化界面需要先熟悉Windows下的绘图操作,并明白Windows的幕后绘图操作,才能有的放矢,知道哪些可以使用,知道哪些可以避免…… 2.1Windows下的绘图操作 熟悉DOS的读者可能就知道:DOS下面的图形操作很方便,进入图形模式,整个屏幕就是你的了,你希望在哪画个点,那个地方就会出现一个点,红的、或者黄的,随你的便。你也可以花点时间画个按钮,画个你自己的菜单,等等…… Windows本身就是图形界面,所以Windows下面的绘图操作功能更丰富、简单。要了解Windows下的绘图操作,要实现Windows界面的美化,就必须了解MFC封装的设备环境类和图形对象类。 2.1.1设备环境类 Windows下的绘图操作说到底就是DC操作。DC(Device Context设备环境)对象是一个抽象的作图环境,可能是对应屏幕,也可能是对应打印机或其它。这个环境是设备无关的,所以你在对不同的设备输出时只需要使用不同的设备环境就行了,而作图方式可以完全不变。这也就是Windows的设备无关性。 MFC的CDC类封装了Windows API 中大部分的画图函数。CDC的常见操作函数包括: Drawing-Attribute Functions:绘图属性操作,如:设置透明模式 Mapping Functions:映射操作 Coordinate Functions:坐标操作 Clipping Functions:剪切操作 Line-Output Functions:画线操作 Simple Drawing Functions:简单绘图操作,如:绘制矩形框 Ellipse and Polygon Functions:椭圆/多边形操作 Text Functions:文字输出操作 Printer Escape Functions:打印操作 Scrolling Functions:滚动操作 *Bitmap Functions:位图操作 *Region Functions:区域操作 *Font Functions:字体操作 *Color and Color Palette Functions:颜色/调色板操作 其中,标注*项会用到相应的图形对象类,参见2.1.2内容。 2.1.2图形对象类 设备环境不足以包含绘图功能所需的所有绘图特征,除了设备环境外, Windows还有

相关主题