- 博客(60)
- 资源 (3)
- 收藏
- 关注
原创 如何截获Tab键及如何检测Shift等键状态的方法
1.因为Tab属于控件的控制快捷键 所以不能再OnKeyUp及OnKeyDown中截获 ,那么如何截获Tab键?想截获Tab的方法有以下几种:(1).再窗口的OnShutCut中可以截获到tab键等控制快捷键, Msg.CharCode即为截获到的按键的键值. procedure TFrmHWYDLR_Six.FormShortCut(var Msg: TWMKey; var
2012-05-17 16:15:25 4369
转载 MSSQL与Delphi类型对照一览表 【转】
例:Case DBGrid1.DataSource.DataSet.Fields.FieldByName(字段名).DataType offtBCD: //对应MSSql数据库的decimal、money、numeric、smallmoney类型 end;//其它的请看下面TFieldType is a set of values that parallel the dat
2012-02-19 13:26:11 3470
转载 sql命令备份/恢复数据库
简单命令:备份:BACKUP DATABASE test TO DISK='d:\04-08-07bak.bak'恢复:RESTORE DATABASE test from disk='d:\04-08-07bak.bak' with NORECOVERY利用
2011-09-20 15:56:31 676
原创 windows
1.$00000000到$003FFFFF的内存空间,Windows 9X用此部分内存来维持同MS-Dos和16位Windows的兼容性,应用程序一般不需要对此区域进行操作。2.$00400000到$7FFFFFFF的内存空间, 这是进程的私有内存空间,其他的进程不能通过普通
2011-08-18 11:00:54 445
原创 Application.Terminate 和 ExitProcess
Application.Terminate 只是呼叫 PostQuitMessage 這個 Windows API表明程式準備要結束而已, 它並不會立即中止整個程式, 也不會強迫終止若有其他程序還在運行, 則程式很可能會發生如你描述的那種情形Application.Termina
2011-07-18 09:19:21 2291
转载 dbgrid 缓冲显示(缓冲行为20)
ADOConnection1 连接数据库 ADOQuery1 执行查询 connection 为 ADOConnection1 DataSetProvider1得到adoquery1查
2011-07-05 09:10:18 426
转载 sysobjects.Xtype
SQL Server数据库的一切信息都保存在它的系统表格里。 在大多数情况下,对你最有用的两个列是Sysobjects.name和Sysobjects.xtype。前面一个用来列出待考察对象的名字,而后一个用来定义对象的类型 sysobjects 在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。只有在 tempdb 内,每个临时对象才在该表中占一行。 列名 数据类
2011-06-28 14:29:00 2013
原创 SQL Server字符串处理函数大全
SQL Server字符串处理函数大全 select语句中只能使用sql函数对字段进行操作(链接sql server),select 字段1 from 表1 where 字段1.IndexOf("云")=1;这条语句不对的原因是indexof()函数不是sql函数,改成sql对应的函数就可以了。left()是sql函数。select 字段1 from 表1 where charinde
2011-06-28 14:24:00 603
原创 Windowsx小技巧[收集中...]
1.如何在Windows XP 中向“发送到”菜单添加菜单项? 开始->运行->SendTo->将快捷方式拖拽到2.
2011-06-09 17:01:00 355
原创 SQL 补课
判断TableName中是否存在名为ColName的列select name from syscolumns where id = (select id from sysobjects where name=TableName ) and name = ColName;0行 不存在1行 存在 判断TableName表中是否存在主键Select Name f
2011-06-08 16:27:00 370
原创 常用技巧
问:如何让del+CTRL+ALT看不见程序运行?答:为了让程序用ALT+DEL+CTRL看不见,在implementation后添加声明:function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external 'KERNEL32.DLL';再在上面的窗口Create事件加上一句:RegisterServiceProcess(GetCurrentProcessID, 1);//隐藏也可以使用下面的函数
2011-05-24 16:43:00 2144
原创 模拟按键函数Keybd_event
<br />Keybd_event<br />共有四个参数,第一个为按键的虚拟键值,如回车键为vk_return, tab键为vk_tab。第二个参数为扫描码,一般不用设置,用0代替就行。第三个参数为选项标志,如果为keydown则置0即可,如果为keyup则设成“KEYEVENTF_KEYUP”(2),第四个参数一般也是置0即可。用如下代码即可实现模拟按下i键,其中的$49表示i键的虚拟键值:<br />keybd_event($49,0,0,0); <br />keybd_event($49,0,KEY
2011-05-24 16:40:00 943
原创 Windows下组件拖动实现(Panel为例)
<br />Panel的MouseDown事件//移动就写上ReleaseCapture;SendMessage(Panel1.Handle,wm_SysCommand,$F012,0);//改变大小就写上ReleaseCapture;SendMessage(Panel1.Handle,wm_SysCommand,$F008,0);<br /><br />
2011-05-24 16:33:00 500
原创 添加资源文件(Cursor为例)
新建Txt文本文件输入cur1 CURSOR FileName //或者 cur1, CURSOR, FileName保存为.rc文件Project -> add to project(Shift+F11)->选择RC文件(文件类型选择*.RC)->Build-OK 编译成功后出现.res资源文件调用时可以使用语句Screen.Cursors[1] := LoadCursor(HInstance, 'cur1');
2011-05-20 08:39:00 1578 1
原创 重温基础, 巩固记忆(一)
<br />关键字:图中粗体字Unit、interface、uses、type、class、private、public、end、var、implementation<br />等即为关键字。<br />保留字:所谓保留字可以理解为Delphi 系统自定义的,留给Delphi 系统自身使用的识别字。<br />Windows、Messages、SysUtils、Classes、Graphics、Controls、Forms、Dialogs 等就是保留字。<br />自定义识别字:,所谓自定义识别字就是用户自
2011-05-14 14:30:00 559
原创 重温基础,巩固记忆(二)
<br />RichEdit1.ScrollBars 选择滚动条,ssNone[无],ssHorizontal[只有水平],ssVertical[只有垂直],ssBoth[同时有水平和垂直]<br />RichEdit1.SelStart RichEdit1.SelLength 选中文本的起始位置和长度<br />RichEdit1.SelText 选中的文本<br />FindDialog.FindText 保存查找内容字符串<br />FindDialog.Options 设置全字匹配、区分大小
2011-05-14 14:30:00 495
原创 主窗口及登录窗口的生成顺序
<br />自动生成FrmMain窗体<br /> Application.CreateForm(TFrmMain, FrmMain);<br />并在其Create事件中创建FrmLogin<br /> <br />procedure TFrmMain.FormCreate(Sender: TObject);begin Application.ShowMainForm := False; FrmLogin := TFrmLogin.Create(Self); if FrmLogin
2011-05-05 15:21:00 450
原创 05.05
<br />unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;constWM_ME=WM_USER+100; //自定义消息;typeTForm1 = class(TForm) Button1: TButton;procedure Button1Click(Sender: TObj
2011-05-05 15:14:00 377
原创 获取所有顶层窗口的句柄,类名及标题数组
<br />分别应用了EnumWindows,GetClassName,GetWindowText三个API<br /> <br />unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton;
2011-04-22 10:00:00 2208
原创 将TEdit设置为右对齐
SetWindowLong(Edit1.Handle,GWL_STYLE,GetWindowLong(Edit1.Handle,GWL_STYLE) or Es_right);
2011-04-12 16:11:00 1235
原创 delphi中Message消息的使用方法
unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;constWM_ME=WM_USER+100; //自定义消息;typeTForm1 = class(TForm) Button1: TButton;procedure Button1Click(Sender: TObject);//第一种消息处理方式; 只能处理常量消息
2011-04-06 09:05:00 4735
原创 通过DLL加载的窗口最小化或切换后会消失 的解决办法
<br />在DLL调用的时候要传入Application <br />例:<br />procedure CreateForm(vApp:TApplication);begin Application.handle:= vapp.handle; Frm_1:= TFrm_TJJSQ.Create(Application); Frm_1.Showmodal;end;{创建窗口前要设置application.handle. 可以将handle或整个application传
2011-04-01 16:34:00 996
原创 获取当前的输入法状态
1.调用 GetKeyboardLayout 获取输入法的 HKL后, 在注册表中查找输入法名称(以记事本为例)hWnd = WinGetHandle("classname=Notepad")<br />KeyStr=GetKeyboardLayout($hWnd)<br />KeyName=RegRead("HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Keyboard Layouts/" & $KeyStr, "Layout Text")<br
2011-04-01 15:41:00 10062
原创 托盘图标相关
核心内容是 Shell_32.Dll 中的Shell_NotifyIcon函数.Shell_NotifyIcon函数,向任务栏的状态栏发送一个消息函数原型 BOOL Shell_NotifyIcon( DWORD dwMessage, PNOTIFYICONDATA lpdata (即Delphi中的TNotifyIconData的地址) );参数: dwMessage为输入参数,传递发送的消息,表明要执行的操作。可选的值如下: NIM_ADD 向托盘区域添加一个图标。此时第二个参数lpdat
2011-03-21 11:34:00 479
原创 下拉菜单美化的相关事件
OnAdvancedDrawItem(Sender: TObject; ACanvas: TCanvas;ARect: TRect; State: TOwnerDrawState): 菜单背景绘制:ACanvas背景画布; ARect:菜单大小区域;State:当前菜单的各种状态 TOwnerDrawState = set of (odSelected, odGrayed, odDisabled, odChecked, odFocused, odDefault, odHotLight, odIna
2011-03-21 09:58:00 607
原创 Form中组件的遍历
for i:=0 to Self.ComponentCount -1 do Begin if Self.Components[i] is TButton then (Self.Components[i] as TButton).Caption := 'Component :Button; end; for i:=0 to Self.ControlCount -1 do Begin if Self.Controls[i] is TButton th
2011-03-19 09:54:00 578
原创 线程相关
<br />继承于TThread抽象类。TThread直接继承于Tobject,不可实例化。<br />线程的FreeOnTerminate属性为True时, 线程终止后自动销毁释放相应堆栈;为False时,当应用程序退出时自动释放。<br />
2011-03-19 09:51:00 444
原创 delphi中Create参数区别
默认分类 2009-08-05 14:59:31 阅读265 评论0 字号:大中小 delphi中我们创建一个VCL控件时,有多种参数:From.create(参数)参数有以下几种:Application:你的控件的父级是主程序,所以他的级别最高.Self:你的控件的父级是当前窗口,他关闭你也关闭.Sender:你的控件的父级是当前对象.Handle:你的控件的父级是此句柄.Nil:无定义.生成的独立窗体需代码释放。 一般说来,Delphi类的构造方法在TComponent前是不用重载的,而T
2011-03-15 09:45:00 5912
原创 DLL精要
链接方式<br />DLL中以下面的格式声明导出函数<br />exports<br /> FunctionName Index 15 Name MyName, //Index XX 省略时编号由编译器自动生成, Name XXX 声明别名,也可省略<br /> <br />1. 隐式链接<br /> procedure MyName; external'XXX.DLL'; // 声明后即可在代码中调用MyName函数;<br /> <br />2. 显示链接<br />LibHa
2011-03-11 13:13:00 514
原创 向Excel中导出长位数字时Excel会自动将其转化为类似于1.34E+13的格式,如何将其保存为文本?(如身份证)
1. 在数字前加一个单引号(注:Delphi中''''表示一个单引号,例:''a''表示'a'.);2. 导出数据前加上 Sheet1.Range[ 'b1 ', 'b100 '].NumberFormat:= '@ '; 附: 下面列出常用的一些格式:1) 文本:vnd.ms-excel.numberformat:@2) 日期:vnd.ms-excel.numberfor
2011-03-10 13:20:00 4468
原创 限制窗口的最大尺寸和最小尺寸
<br />1. 控制窗口的大小,使得窗口控制在某一大小中,实现原理是截获Windows系统消息WM_GETMINMAXINFO,<br />(1)、 在Form窗体私有声明部分加上以下一行声明<br /> procedure WMGetMinMaxInfo(var msg:tmessage);message WM_GETMINMAXINFO;<br />(2)、过程中加入代码如下:<br />procedure TForm1.WMGetMinMaxInfo(var msg: tmessag
2011-03-08 10:13:00 2465
原创 ini,txt保存Listbox或ComboBox的问题
<br />1. 可以直接读TXT//保存listbox里面的项到'ListText.txt'文件ListBox1.Items.SaveToFile(ExtractFilePath(Application.ExeName)+'ListText.txt');//将'ListText.txt'文件里面的内容读入listbox ListBox1.Items.LoadFromFile(ExtractFilePath(Application.ExeName)+'ListText.txt')2.i
2011-02-14 15:58:00 1654 3
原创 OnClose和OnDestroy
<br />OnClose():消息响应函数,响应WM_CLOSE消息,当"关闭"按钮被单击的时候(而不是我们眼睛所见的对话框从屏幕上消失时),该函数被调用,用户在响应OnOk()或者OnCancel()函数之后,不会发送WM_CLOSE消息<br />OnDestroy():消息响应函数,响应WM_DESTROY消息,当一个窗口即将被销毁时,被发送<br />在单视图程序中,根据<<深入浅出MFC>>所讲,程序退出时执行的操作顺序为<br />(1)用户点击退出按钮,发送了WM_CLOSE消息<br />
2011-02-11 12:06:00 473
原创 2011.02.11
ExtractFilePath()功能:返回完整文件名中的路径paramstr[0]功能: 返回可执行文件的路径paramstr 作用是把接收到的命令行参数分离出来比如命令行:c:/temp/MyApp.exe /test /save那么:paramstr[0] = 'c:/temp/MyApp.exe'paramstr[1] = '/test'paramstr[2] = '/save'
2011-02-11 12:05:00 323
原创 MessageBox
<br />MessageBox(Handle, PAnsichar, String, MB_OK);<br /> <br />Handle 窗口句柄 NULL时默认为桌面窗口<br />PAnsichar 消息框的正文<br />String 消息框的标题<br />MB_OK 按钮信息<br /> <br />经常出现String与PAnsichar无法兼容的错误, 这时只需强制转换即可 PAnsiChar(Char);<br /> <br /><br />MessageDlg函数 该函数的定义格式如下
2011-02-10 17:04:00 601
原创 Winsock五种的I/O模型
<br />Winsock五种的I/O模型上(转)2009-03-03 21:02Winsock 的I/O操作:<br /><br />1、 两种I/O模式 <br />阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字 默认为阻塞模式。可以通过多线程技术进行处理。 <br />非阻塞模式:执行I/O操作时,Winsock函数会返回并交出控制权。这种模式使用 起来比较复杂,因为函数在没有运行完成就进行返回,会不断地返回 WSAEWOULDBLOCK错误。但功能强大。<br
2011-02-10 16:33:00 1577
原创 堆栈
<br />Heap:堆,Heap上分配的内存,系统不释放,哪怕程序退出,那一块内存还是在那里<br />Stack:栈或堆栈,Stack上分配的内存系统自动释放<br /><br />以下摘自 <<Essential Pascal>> <br /> <br /> Delphi 用堆的形式来给对象,字符串,动态数组,分配内存;那些有特殊用途的动态存储空间(用GetMem获取)也是用堆实现的。 <br /> <br /> Delphi 用
2011-01-26 12:23:00 339
原创 Windows纸牌链接库Cards.dll的用法
Cards.dll主要函数的用法:cdtInit proc lpdwCardWidth:DWORD,lpdwCardHeight:DWORDlpdwCardWidth 返回扑克的宽度lpdwCardHeight 返回扑克的高度cdtDraw proc hDC:DWORD,dwX:DWORD, dwY:DWORD,cd:DWORD, md:DWORD,rgbBkgnd:DWORDcdtDrawExt proc hDC:DWORD,dwX:DWORD, dwY:DWORD,dwd
2011-01-26 12:22:00 2485
原创 2011.1.17
1.Tlist的复制(将list中的内容复制给list2)?list3.Assign(List1,Operater,List2);将List1与list2经过Operater操作后赋给list3.Operater的主要参数有laCopy ,其他见帮助.2.将局部变量指针p赋给list1(即list1.add(p))后,free(p)会导致list1.items[i]的内容为零(即初始化).原因: free(p)不仅将p的内容释放,并且将p指向地址中的内容释放。改为FreeAndNil即可。
2011-01-18 12:18:00 386
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人