请先看描述:
我想实现这样的效果,执行一个函数之前,把鼠标指针变忙碌,执行完这个函数之后,鼠标指针变普通。伪代码:
procedure ExecProc(函数A);
begin
Screen.Cursor := crHourGlass;
try
这里执行函数A;
finally
Screen.Cursor := crDefault;
end;
end;函数A的定义事先是不知道的,也就是函数A可以是任意的函数。
我想实现这样的效果,执行一个函数之前,把鼠标指针变忙碌,执行完这个函数之后,鼠标指针变普通。伪代码:
procedure ExecProc(函数A);
begin
Screen.Cursor := crHourGlass;
try
这里执行函数A;
finally
Screen.Cursor := crDefault;
end;
end;函数A的定义事先是不知道的,也就是函数A可以是任意的函数。
解决方案 »
- 包安装DevExpress--ExpressLayoutControl的问题?
- 如何将指针中的数据转换成string型?急!谢谢大家!!!
- 请问如何在DELPHI数据库中调用其它程序!!
- excel操作
- 简单问题,请大家帮忙
- 求助
- delphi7 通过IdHTTP1.Post 取得一个UTF8 的字符串,如何把他还原成中文(急)
- richedit中段落的问题??
- Data Filed not permitted on open DataSet是什么错误呢?
- 我在TIMAGE控件中绘制电路元件图时,选中一个元件后,如何检测是否按下了del键?
- ========奇怪的SQL语句======
- 呵呵, 很有意思,大家来试试看。
var
CommandProc: function(id: interger): Integer of object;
begin
TMethod(CommandProc).Code := TMyObj.MethodAddress(CommandName);
if Assigned(TMethod(CommandProc).Code) then Result := CommandProc(id); //注意参数
end;
声明:
TCalObj = class
private published
function MgeUps(s: string): string;
function Stulz(s: string): string;
function JBus(s: string): string;
function Syris(s: string): string;
function TOP9500(s: string): string;
function Lovato(s: string): string;
function ImvSitePro(s: string): string;
function Led204MB(s: string): string;
function JBC116(s: string): string;
....
end;
function TCalObj.MgeUps(s: string): string;
begin
Result := s + crc16(s);
end;function ExecuteRoutine(Obj: TObject; Name: string; Param: string): string;
var
PMethod: TMethod;
AProcedure: TFunciton;
begin
result := '-1';
PMethod.Data := Pointer(Obj);
PMethod.Code := Obj.MethodAddress(Name);
if Assigned(PMethod.Code) then
begin
AProcedure := TFunciton(PMethod);
result := AProcedure(Param);
end;
end;
调用:
procedure TComTest.sbtnCalCrcClick(Sender: TObject);
var
CalObj: TCalObj;
begin
CalObj := TCalObj.Create;
edtDest.Text := ExecuteRoutine(CalObj, 函数名, 参数);
FreeAndNil(CalObj);
end;