经过一个多星期努力,今天终于升星了,说明我的努力也得到大家认可,在此谢过大家
以后要学习JAVA了,大概少来这里,希望大家能记住我^_^
同时提一下意见,就是提问题时要注意问题小类,不要都往非技术区放,我扩充话题也都快到1000分了
下面我把碰到大家常问问题放上来,没怎么整理,都是一些简单的,相信大家看的懂
废话太多,希望看过都留言,拿出一半散给大家(共400,可用分长的太慢了吧,还好去年申请时有点积蓄)有一些是别人回答的,我没有测试
//Treeview加Checkbox
引用单元:uses Commctrl;
procedure SetComCtlStyle(Ctl: TWinControl; Value: Integer; UseStyle: Boolean);
var
Style: Integer;
begin
if Ctl.HandleAllocated then
begin
Style := GetWindowLong(Ctl.Handle, GWL_STYLE);
if not UseStyle then Style := Style and not Value
else Style := Style or Value;
SetWindowLong(Ctl.Handle, GWL_STYLE, Style);
end;
end;
调用:SetComCtlStyle(Treeview1, TVS_CHECKBOXES, True);安装这些包的方法很简单,只需点击菜单"component---->Install Packages...",
然后使用"ADD"选择dclsockets70.bpl(在Delphi目录的bin)的包就可以了DCOM客户端设置
在“运行”中输入“dcomcnfg”里面要选择与你有关的应用程序设置安全性的“无”和身份标识为“交互式用户”function A(b:string):string;
function A(const b:string):string;
function A(va b:string):string;
说明:
1.简单传值,运行对b进行操作赋值,函数体内改变的值对函数外没影响,退出函数后还是原来的值
2.b在函数中值不能被改变
3.传b地址,对b值改变影响所有b的调用值,退出函数后就变成新值参数设置
run/parameters里面的parameters设置参数存储过程参数设置一个方法
adostoredproc2.Close;
adostoredproc2.Parameters.Clear;
adostoredproc2.Parameters.CreateParameter('sname',ftString,pdInput,20,'ryan');
adostoredproc1.ExecProc;路径
tools\Environment Option=>Library=>library path拖动改变大小
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (SSCtrl in Shift) and (SSLeft in Shift) then
begin
ReleaseCapture;
Panel1.Perform(WM_Syscommand,SC_Size+2,0);
end;
end;书签
var Tb:TBookMark;
begin
with Query1 do begin
Tb:=GetBookMark;
Close; Open;
Try
GotoBookMark(Tb);
except
Last;
end;
end;
end;××××××××××××××××××××××××××××××××××
鼠标滚轮GRID
private
OldGridWnd: TWndMethod;
public
procedure NewGridWnd(var Message: TMessage);
end;
...procedure TfrmDgBase.FormCreate(Sender: TObject);
var I: integer;
begin
OldGridWnd := dgBase.WindowProc;
dgBase.WindowProc := NewGridWnd;
end;procedure TfrmDgBase.NewGridWnd(var Message: TMessage);
var
IsNeg: Boolean;
begin
if Message.Msg = WM_MOUSEWHEEL then
begin
IsNeg := Short(Message.WParamHi) < 0;
if IsNeg then
dgBase.DataSource.DataSet.MoveBy(1)
else
dgBase.DataSource.DataSet.MoveBy(-1)
end
else
OldGridWnd(Message);
end;
××××××××××××××××××××××××××××××××××××××××××××
olevariant转换
procedure TForm1.Button1Click(Sender: TObject);
var
a:olevariant;
b:_recordset;
begin
b := IUnKnown(a) as _recordset;
end;
在网上发现一个更为简单的反色方法,用Bitblt实现,代码如下:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
BMP : TBitmap;
begin
Bmp := TBitmap.Create;
try
Bmp.Width := Image1.Picture.Bitmap.Width;
Bmp.Height := Image1.Picture.Bitmap.Height;
Bitblt(Bmp.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, Image1.Picture.Bitmap.Canvas.Handle, 0, 0, NOTSRCCOPY);
Image1.Picture.Bitmap.Assign(Bmp);
finally
Bmp.Free;
end;
end;
把调用的外部程序的运行界面融入到自己的应用程序界面中来
思想:1、找到外部程序运行后的窗口句柄
2、重新设置应用程序窗口的parent handle
var
hwnd:thandle;
begin
hwnd:=findwindow(nil,'应用程序窗口标题');
if hwnd>0 then //找到
begin
windows.setparent(hwnd,self.handle);//重新设置parent为你的当前窗口
end;
end;替换doc内容
NewDocument := Word_ole.Documents.add(ExtractFilePath(Application.ExeName) + 'test.dot');
wApp:=newdocument.Application;
wApp.selection.find.text:='<%a1%>';
wApp.selection.find.replacement.text:='被替换的字符';
wApp.selection.find.execute(replace:=wdReplaceAll);avi转mejp
bbmpeg.dll动态调用DLL给你个例子:
type
TInStr = function(Source: PChar; Check: Char): Integer;stdcall;
//注意这里申明,类似你上面的testprocedure TfrmDryDll.Edit2KeyPress(Sender: TObject; var Key: Char);
var
order: Integer;
txt: PChar;
PFunc: TInStr;
Moudle: THandle;
ch: Char;
begin
ch := Key;
Moudle := Loadlibrary('c:\DryDll.dll');
if Moudle > 32 then
begin
Edit2.Text := '';
@Pfunc := GetProcAddress(Moudle, 'TestInStr');
txt := StrAlloc(80);
txt := StrPCopy(txt, Edit1.Text);
Order := TInstr(PFunc)(PChar(Edit1.Text), ch);
if Order = -1 then
Edit3.Text := '不包含这个字符!'
else
Edit3.Text := IntToStr(Order);
end;
Freelibrary(Moudle);
end;
ORACLE过程
CREATE OR REPLACE PROCEDURE GXKHDJ(GSDM VARCHAR2,
DHAO VARCHAR2)
AS
MRJB VARCHAR2(2);
CNT NUMBER;
BEGIN
ERRNUM:=0;
MSG:='开始';
...
COMMIT;
ERRNUM:=1;
MSG:='成功结束!';
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
ERRNUM:=-1;
MSG:='由于意外原因,失败!
'||SQLERRM;
END;
/
在鼠标按下时如下代码将实现一个窗口的拖动:
1
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
const SC_DRAGMOVE:longint=$f012;
begin
ReleaseCapture;
sendmessage(form1.Handle,wm_syscommand, SC_DRAGMOVE, 0);
end;2
procedure TForm1.Button1Click(Sender: TObject);
begin
MoveWindow(handle,10,10,height,width,true);
end;改变滚动条颜色
commctrl;procedure TForm1.Button1Click(Sender: TObject);
begin
InitializeFlatSB(memo1.handle);
end;输入控制
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not ( Key in ['0'..'9','.',#8]) then
Key := #0;
end;打开MP3等文件
uses
shellApi;这里是播放MP3,其他也类似
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(Handle,Pchar('OPEN'),Pchar('c:\Beyond.mp3'),nil,nil,SW_SHOWNORMAL);
end;
以后要学习JAVA了,大概少来这里,希望大家能记住我^_^
同时提一下意见,就是提问题时要注意问题小类,不要都往非技术区放,我扩充话题也都快到1000分了
下面我把碰到大家常问问题放上来,没怎么整理,都是一些简单的,相信大家看的懂
废话太多,希望看过都留言,拿出一半散给大家(共400,可用分长的太慢了吧,还好去年申请时有点积蓄)有一些是别人回答的,我没有测试
//Treeview加Checkbox
引用单元:uses Commctrl;
procedure SetComCtlStyle(Ctl: TWinControl; Value: Integer; UseStyle: Boolean);
var
Style: Integer;
begin
if Ctl.HandleAllocated then
begin
Style := GetWindowLong(Ctl.Handle, GWL_STYLE);
if not UseStyle then Style := Style and not Value
else Style := Style or Value;
SetWindowLong(Ctl.Handle, GWL_STYLE, Style);
end;
end;
调用:SetComCtlStyle(Treeview1, TVS_CHECKBOXES, True);安装这些包的方法很简单,只需点击菜单"component---->Install Packages...",
然后使用"ADD"选择dclsockets70.bpl(在Delphi目录的bin)的包就可以了DCOM客户端设置
在“运行”中输入“dcomcnfg”里面要选择与你有关的应用程序设置安全性的“无”和身份标识为“交互式用户”function A(b:string):string;
function A(const b:string):string;
function A(va b:string):string;
说明:
1.简单传值,运行对b进行操作赋值,函数体内改变的值对函数外没影响,退出函数后还是原来的值
2.b在函数中值不能被改变
3.传b地址,对b值改变影响所有b的调用值,退出函数后就变成新值参数设置
run/parameters里面的parameters设置参数存储过程参数设置一个方法
adostoredproc2.Close;
adostoredproc2.Parameters.Clear;
adostoredproc2.Parameters.CreateParameter('sname',ftString,pdInput,20,'ryan');
adostoredproc1.ExecProc;路径
tools\Environment Option=>Library=>library path拖动改变大小
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (SSCtrl in Shift) and (SSLeft in Shift) then
begin
ReleaseCapture;
Panel1.Perform(WM_Syscommand,SC_Size+2,0);
end;
end;书签
var Tb:TBookMark;
begin
with Query1 do begin
Tb:=GetBookMark;
Close; Open;
Try
GotoBookMark(Tb);
except
Last;
end;
end;
end;××××××××××××××××××××××××××××××××××
鼠标滚轮GRID
private
OldGridWnd: TWndMethod;
public
procedure NewGridWnd(var Message: TMessage);
end;
...procedure TfrmDgBase.FormCreate(Sender: TObject);
var I: integer;
begin
OldGridWnd := dgBase.WindowProc;
dgBase.WindowProc := NewGridWnd;
end;procedure TfrmDgBase.NewGridWnd(var Message: TMessage);
var
IsNeg: Boolean;
begin
if Message.Msg = WM_MOUSEWHEEL then
begin
IsNeg := Short(Message.WParamHi) < 0;
if IsNeg then
dgBase.DataSource.DataSet.MoveBy(1)
else
dgBase.DataSource.DataSet.MoveBy(-1)
end
else
OldGridWnd(Message);
end;
××××××××××××××××××××××××××××××××××××××××××××
olevariant转换
procedure TForm1.Button1Click(Sender: TObject);
var
a:olevariant;
b:_recordset;
begin
b := IUnKnown(a) as _recordset;
end;
在网上发现一个更为简单的反色方法,用Bitblt实现,代码如下:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
BMP : TBitmap;
begin
Bmp := TBitmap.Create;
try
Bmp.Width := Image1.Picture.Bitmap.Width;
Bmp.Height := Image1.Picture.Bitmap.Height;
Bitblt(Bmp.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, Image1.Picture.Bitmap.Canvas.Handle, 0, 0, NOTSRCCOPY);
Image1.Picture.Bitmap.Assign(Bmp);
finally
Bmp.Free;
end;
end;
把调用的外部程序的运行界面融入到自己的应用程序界面中来
思想:1、找到外部程序运行后的窗口句柄
2、重新设置应用程序窗口的parent handle
var
hwnd:thandle;
begin
hwnd:=findwindow(nil,'应用程序窗口标题');
if hwnd>0 then //找到
begin
windows.setparent(hwnd,self.handle);//重新设置parent为你的当前窗口
end;
end;替换doc内容
NewDocument := Word_ole.Documents.add(ExtractFilePath(Application.ExeName) + 'test.dot');
wApp:=newdocument.Application;
wApp.selection.find.text:='<%a1%>';
wApp.selection.find.replacement.text:='被替换的字符';
wApp.selection.find.execute(replace:=wdReplaceAll);avi转mejp
bbmpeg.dll动态调用DLL给你个例子:
type
TInStr = function(Source: PChar; Check: Char): Integer;stdcall;
//注意这里申明,类似你上面的testprocedure TfrmDryDll.Edit2KeyPress(Sender: TObject; var Key: Char);
var
order: Integer;
txt: PChar;
PFunc: TInStr;
Moudle: THandle;
ch: Char;
begin
ch := Key;
Moudle := Loadlibrary('c:\DryDll.dll');
if Moudle > 32 then
begin
Edit2.Text := '';
@Pfunc := GetProcAddress(Moudle, 'TestInStr');
txt := StrAlloc(80);
txt := StrPCopy(txt, Edit1.Text);
Order := TInstr(PFunc)(PChar(Edit1.Text), ch);
if Order = -1 then
Edit3.Text := '不包含这个字符!'
else
Edit3.Text := IntToStr(Order);
end;
Freelibrary(Moudle);
end;
ORACLE过程
CREATE OR REPLACE PROCEDURE GXKHDJ(GSDM VARCHAR2,
DHAO VARCHAR2)
AS
MRJB VARCHAR2(2);
CNT NUMBER;
BEGIN
ERRNUM:=0;
MSG:='开始';
...
COMMIT;
ERRNUM:=1;
MSG:='成功结束!';
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
ERRNUM:=-1;
MSG:='由于意外原因,失败!
'||SQLERRM;
END;
/
在鼠标按下时如下代码将实现一个窗口的拖动:
1
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
const SC_DRAGMOVE:longint=$f012;
begin
ReleaseCapture;
sendmessage(form1.Handle,wm_syscommand, SC_DRAGMOVE, 0);
end;2
procedure TForm1.Button1Click(Sender: TObject);
begin
MoveWindow(handle,10,10,height,width,true);
end;改变滚动条颜色
commctrl;procedure TForm1.Button1Click(Sender: TObject);
begin
InitializeFlatSB(memo1.handle);
end;输入控制
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not ( Key in ['0'..'9','.',#8]) then
Key := #0;
end;打开MP3等文件
uses
shellApi;这里是播放MP3,其他也类似
procedure TForm1.Button1Click(Sender: TObject);
begin
ShellExecute(Handle,Pchar('OPEN'),Pchar('c:\Beyond.mp3'),nil,nil,SW_SHOWNORMAL);
end;
解决方案 »
- 请问API函数GetComputerName在Delphi中怎么用,那两个参数对应的Delphi类型是什么,怎么用,怎么我经常报告错误呢,急着用,请各位高手剁
- 帮帮小弟吧,我想在程序中获得另一个程序的窗口中的richedit中的text内容,现在我知道了这个窗口的句柄,要怎样才能得到那个richedit的句
- 帮忙,一条SQL语句问题!解决后马上给分
- 如何把XML文件中的内容读到ListView中去?
- delphi怎么连db文件?
- 关于treeview得简单问题
- web调用ocx
- Active的问题........
- 如何监控网站是否已登录?
- d6开发指南什么时候出呀??前三十五个进来的都有分,呵呵~~~
- progressbar 移动 最小化 // 问题请教
- 高分求助tabcontrol问题,好几天了,一解决马上给分
赞一个
结帖时通知版主加入FAQ/精华