分享

delphi中当月第一天最后一天的函数等函数

 山不转水转转 2014-03-05
delphi中当月第一天最后一天的函数 [转贴 2009-6-30 16:43:17]
我顶 字号:
//获取任务栏尺寸

procedure GetMonthDay(const ADate: TDateTime;
var AMonthFirst, AMonthLast: TDateTime);
var
Year, Month, Day: Word;
begin
DecodeDate(ADate, Year, Month, Day);
AMonthFirst := EncodeDate(Year, Month, 1);
if Month + 1 > 12 then
AMonthLast := EncodeDate(Year + 1, 1, 1)
- 1
else
AMonthLast := EncodeDate(Year, Month + 1,
1) - 1
end;


procedure GetMonthDay(const ADate: TDateTime;
var AMonthFirst, AMonthLast: TDateTime);
var
Year, Month, Day: Word;
begin
DecodeDate(ADate, Year, Month, Day);
AMonthFirst := EncodeDate(Year, Month, 1);
AMonthLast := EncodeDate(Year, Inc(Month), 1)
- 1
end;




//修改指定路径下的文件只读属性

function PathSetAttr(sFilePath: string): Boolean;

var

SearchRec: TSearchRec;

begin

Result := False;

if Copy(sFilePath, Length(sFilePath) - 1, Length(sFilePath))
<> ’\’ then

sFilePath := sFilePath + ’\’;

if DirectoryExists(sFilePath) then

begin

if FindFirst(sFilePath+’*.*’, faAnyFile, SearchRec) = 0
then

begin

FileSetAttr(SearchRec.Name, 32);

while FindNext(SearchRec) = 0 do

FileSetAttr(SearchRec.Name, 32);

end;

Result := True;

end;

end;





//为控件加边框

procedure WMNCPaint(var Msg: TWMNCPaint); message WM_NCPAINT;



procedure TForm1.WMNCPaint(var Msg: TWMNCPaint);

var

dc: hDC;

Pen: hPen;

OldPen: hPen;

OldBrush: hBrush;

begin

inherited;

dc := GetWindowDC(Handle);

msg.Result := 1;

Pen := CreatePen(PS_SOLID, 1, RGB(255, 0, 0));

OldPen := SelectObject(dc, Pen);

OldBrush := SelectObject(dc, GetStockObject(NULL_BRUSH));

Rectangle(dc, 0, 0, Self.Width, Self.Height);

SelectObject(dc, OldBrush);

SelectObject(dc, OldPen);

DeleteObject(Pen);

ReleaseDC(Handle, Canvas.Handle);

end;





//制作透明窗体

procedure CreateParams(var Params: TCreateParams); override;
//重载 CreateParams 过程的实现



procedure TForm1.CreateParams(var Params: TCreateParams);

begin

//先继承原来的 CreateParams 过程

inherited;

//然后修改 Param.ExStyle 的值,使窗体具有透明效果

Params.ExStyle := Params.ExStyle or WS_EX_TRANSPARENT;

end;



procedure TForm1.FormCreate(Sender: TObject);

begin

inherited;

//将画布的笔刷样式改成 bsClear 以及时清除窗体原来的内容,这样
窗体就有透明效果

Canvas.Brush.Style := bsClear;

end;





//Memo 组件的光标定位

procedure TForm1.Memo1MouseDown(Sender: TObject; Button:
TMouseButton;

Shift: TShiftState; X, Y: Integer);

var

Lpos, Cpos, Linelength: integer;

begin

Lpos := SendMessage(Memo1.Handle, EM_LineFromChar,
Memo1.SelStart, 0);

Cpos := SendMessage(Memo1.Handle, EM_LineIndex, Lpos, 0);

LineLength := SendMessage(Memo1.Handle, EM_LineLength, Cpos,
0);

Cpos := Memo1.SelStart - Cpos;

Label1.Caption := IntToStr(Lpos);

Label2.Caption := IntToStr(Cpos);

Label3.Caption := IntToStr(LineLength);

end;



//点击客户区也能拖动窗口

procedure WmNCHitTest(var Msg: TWMNCHitTest); message
WM_NCHitTest;



procedure TForm1.WmNCHitTest(var Msg: TWMNCHitTest);

begin

DefaultHandler(Msg);

if Msg.Result = HTClient then

Msg.Result := HTCaption;

end;





//自定义Memo控件的边界

procedure TForm1.Button1Click(Sender: TObject);

var

Rect: TRect;

begin

SendMessage(Memo1.Handle, EM_GETRECT, 0, LongInt(@Rect));

Rect.Left := 20;

Rect.Top := 20;

Rect.Right := Rect.Right - 19;

Rect.Bottom := Rect.Bottom - 19;

SendMessage(Memo1.Handle, EM_SETRECT, 0, LongInt(@Rect));

Memo1.Refresh;

end;





//在系统菜单上添加自定义菜单项

procedure WMSysCommand(var Msg: TWMSysCommand); message
WM_SYSCOMMAND;



const

idMyFunc = $f200;



procedure TForm1.FormCreate(Sender: TObject);

begin

AppendMenu(GetSystemMenu(Handle, False), MF_STRING, idMyFunc,
’我的系统菜单项’);

end;



procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);

begin

inherited;

if Msg.CmdType and $FFF0 = idMyFunc then

ShowMessage(’我的系统菜单项’);

end;









COOLBAR内嵌TOOLBAR,但是TOOLBAR的按钮偏上的解决办法:把COOLBAR
的COOLBAND的BORDERSTYLE设为SINGLE。

另外,如果想把主菜单弄到TOOLBAR里面,只要把TOOLBAR的MENU设为主
菜单名,并把主菜单的AUTOMERGE设为TRUE即可。

------------------------------------



listbox从文件中读取列表的操作

ListBox1.Items.LoadFromFile(ExtractFilePath
(Application.ExeName)+’aaa.txt’);

ListBox1.Items.Add(Edit1.Text); //添加了一个项目

ListBox1.Items.SaveToFile(ExtractFilePath(Application.ExeName)
+’aaa.txt’);



删除项目ListBox1.Items.Delete(listbox1.itemindex);



------------------------------------



判断窗体是否已经打开

if frmPriceInput <> nil then ....

注意:有时窗体虽然已经关闭,但没完全释放,最好在该窗体关闭的
CLOSE事件里加入 frmPrintInput = nil;

------------------------------------

关闭MDI子窗口的方法

在子窗口的OnClose事件处理过程中加入如下代码

Action := caFree;



Delphi为一个Form的关闭行为指定了四种方式,分别是:



caNone -- 禁止Form被关闭

caHide -- Form不被关闭,但是被隐藏。被隐藏的Form仍然可以被程序
访问。

caFree -- Form被关闭,并且释放其占用的资源。

caMinimize -- Form被最小化而不是被关闭,这是MDI子窗口的默认关
闭行为。

------------------------------------

系统配置文件 *.INI 的操作

头部要引用IniFiles

1、声明变量

Inifile:TiniFile;

2、指明路径

IniFile := TIniFile.Create(ExtractFilePath
(Application.ExeName)+’option.ini’);

3、读取变量,注意变量有类型之分readstring,readinteger...等

titleBMPfile:=IniFile.ReadString
(’TitleImage’,’FileName’,’’); //IniFile.ReadString(’组
名’,’变量’,’默认值’)

IniFile.ReadInteger

IniFile.ReadBool

4、写入或修改变量

IniFile.WriteString(’标题’,’变量1’,’值’);



5、用完后释放

IniFile.Free;



------------------------------------

动态读取图象

Image1.Picture.LoadFromFile(titleBMPFile);

------------------------------------

fastreport自定义函数的用法

1、先在普通工程窗体上定义好函数

2、在frreport控件的userfunction中写入

if ansicomparetext( ’My_StrToRMB’ , Name ) = 0 then

val:=My_StrToRMB(frparser.Calc(p1));

//MY_STRTORMB是函数名

//如果定义多个函数,就多来几个IF即可。

在报表设计视图中就可以调用这个函数了。



------------------------------------

数组是这样定义的

sbh:array [0..9999999,0..1] of string;

------------------------------------

treeview的用法

//先定义项目序数和节点

n: Integer;

Node: TTreeNode;



Node := Tree1.Selected;

if (Node = nil) or (Node.StateIndex = -1) then Exit;//一般可以
把不作反应的列的stateindex定为-1

n := Node.StateIndex;

------------------------------------

Fields[] 通过索引返回字段,要自己选择返回的类型!

FieldByName() 通过名字返回字段,要自己选择返回的类型!

Fieldvalues[] 通过名字返回字段的值,自动化类型!

------------------------------------

调用外部程序方法

用ShellExecute,在USES段加入SHELLAPI,使用时如:

ShellExecute(handle,’open’,’c:\myapp\myapp.exe’,’-
s’,’’,SW_SHOWNORMAL);

第一个参数为父窗口句柄;

第二个参数为打开方式(OPEN,PRINT两种);

第三个参数为执行文件全路径;

第四个参数为执行文件参数;

第五个参数为执行文件开始运行时的初始目录;

第六个参数为为执行文件运行方式
(SW_HIDE,SW_MAXIMIZE,SW_MINIMIZE,

SW_RESTORE,SW_SHOW,SW_SHOWDEFAULT,SW_SHOWMAXIMIZED,SW_SHOWMINI
MIZED,

SW_SHOWMINNOACTIVE,SW_SHOWNA,SW_SHOWNOACTIVATE,SW_SHOWNORMAL);

------------------------------------

判断文件是否存在

if not fileexists(’db2.mdb.bak’) then ...

------------------------------------

判断按键

if Key=#13 then //如果回车则。。。

------------------------------------

退出



关闭窗口 close;

关闭程序:Application.Terminate;

退出事件 exit;

------------------------------------

检测软件是否已在运行

if GetLastError = ERROR_ALREADY_EXISTS then...

------------------------------------

定义函数是这样写的

function IsReadOnly(b: Boolean; colors: Tcolor): Boolean;

------------------------------------

fastreport直接打印

FrReport1.PrepareReport; //初始化

FrReport1.PrintPreparedReport(’1’,1,True,frAll); //打印



预览FrReport1.showreport;

------------------------------------

找开浏览器,进入某站点。(或调用WINDOWS程序)



进入站点ShellExecute(Handle, PChar(’OPEN’), PChar
(’http://www./downloads/index.asp’), nil, nil,
SW_SHOWMAXIMIZED);

发送邮件ShellExecute(Handle, ’open’, PChar(’mailto:’ +
edtemail.Text + ’?subject=’), nil, nil, SW_SHOW);



------------------------------------

打开文件对话框

if OpenPictureDialog.Execute then





------------------------------------

调用帮助文件

Application.HelpFile := ’..\..\Help\eBars.hlp’;





------------------------------------

打开窗口

TForm1.Create(self).ShowModal;





------------------------------------

取得当前执行程序的路径

FPath := ExtractFilePath(Application.ExeName);



FileName := ExtractFilePath(ParamStr(0)) + ’\MDB\电子通讯
录.mdb’;



------------------------------------

当前路径

getcurrentdir





------------------------------------

判断当前鼠标处于某个位置(TAG)

case TComponent(Sender).Tag of

0: begin

...

lbBarBackgroud.Caption := sCustomImage;

end;

1: begin

...

lbBarBackgroud.Caption := sCustomImage;

end;

2: begin

...

lbBarBackgroud.Caption := sCustomImage;

end;

------------------------------------

数据库连接



1、建立一个adoconnection控件,命名为conn

2、建立一个adodataset控件,命名为ds



然后就可以用以下语句连接并执行SQL查询(本例是access的数据库,带
密码)。



conn.ConnectionString:=’Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=’+getcurrentdir+’\data\pn.mdb;Persist Security
Info=False;jet oledb:database password=80513’;

conn.Connected:=true;

ds.Active:=false;

ds.CommandText:=’select 拜访日期,拜访时间,拜访客户,拜访地点,
谈话内容 from khbf order by 拜访日期 desc’;

ds.Active:=true;

------------------------------------

ADODataSet1.State的用法

if ADODataSet1.State in [dsEdit,dsInsert] then

ADODataSet1.Post ;

------------------------------------

ADOQuery.open和ADOQuery.execSQL的区别

用于存贮时如insert 只能用execSQL

------------------------------------

------------------------------------

------------------------------------

------------------------------------

回车光标移到另一个输入框



if key=#13 then

cmb_name.SetFocus;



------------------------------------

播放声音

playsound(’c:\windows\media\start.wav’,0,SND_ASYNC);

------------------------------------

列表框listbox增加项目



cmb_name.Items.Add(adotable1.Fieldvalues[’账号’]);





------------------------------------

listview用法



ListView.Selected := ListView.Items[0];

ListView.Selected.Focused := True;

ListView.Selected.MakeVisible(False);

ListView.Selected.Index

ListView.Items.Count

ListView.Items.Delete(3) //删除第3个项目

ListView.Items.Add.Caption:=’dddddddd’; //增加一个项目



ListView.Items.BeginUpdate;

ListView.Items.EndUpdate

ListView.Canvas.Font.Color := clGrayText;

if ListView.Selected <> nil then。。。。。



//往listview添加项目

先定义

var itm: TListItem;

然后

listview.Items.Clear;

itm := listview.Items.Add;

itm.ImageIndex := 5;

itm.Caption := Msg.Subject;

itm.SubItems.Add(’aaaaa’);

itm.SubItems.Add(’ffffff’);

itm.SubItems.Add(’ffdfdfdf’);

itm.SubItems.Add(’oooo’);

------------------------------------

静态调用DLL的方法



有参数

procedure CreateSms(Text: Pchar);stdcall;External
’SmsLib.dll’;

无参数

procedure CreateSms;stdcall;External ’SmsLib.dll’;

------------------------------------

确定、取消对话框作用



if application.MessageBox(’真的退出?’,’提示’,mb_okcancel)
=idok then

application.Terminate; //Terminate是终止程序



showmessage(’请先选中要修改的班级’); //这个是简单的显示提
示框

messagebox(self.Handle ,’价格输入不合法!’,’提示’,MB_OK or
MB_ICONASTERISK);

------------------------------------

调用窗体的步骤



先引用该窗体的单元,然后建立窗体,最后显示出来。

例1:

use uxsgl;

Application.CreateForm(TFmXsgl, FmXsgl);

fmxsgl.ShowModal;



例2:

Frm_LendDetail:=TFrm_LendDetail.Create(self);

Try

Frm_LendDetail.ShowModal;

Finally

Frm_LendDetail.Free;

End;

------------------------------------

数据库查询



先建立数据源,然后添加一个TADOQUERY

adoquery1.SQL.Clear ;

adoquery1.Close;

adoquery1.SQL.Add(’select * from tkcb order by ckcb_kh’);

adoquery1.Open;



aaa=adoquery1.Fieldvalues[’ckcb_kc’]; //取出当前记录某字
段的值

adoquery1.Next; //下一记录

adoquery1.Close; //关闭查询



------------------------------------

判断键盘输入字符-chr(13)是回车



if key=chr(13) then

bitbtn1.SetFocus;

------------------------------------

时间格式



lblTime.Caption := FormatDateTime(’yyyymmdd hh:nn:ss’,Now);



------------------------------------

表数据的添加添加



dmd是数据模块 tbl_zgdb是表名

with dmd.tbl_zgdb do begin

Append;

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多