当前位置: 首页 > news >正文

做水果苹果大的网站如何设置淘宝友情链接

做水果苹果大的网站,如何设置淘宝友情链接,用什么建网站 cms,织梦后台如何做网站地图12.1.4 类静态方法与Windows API回调 ​ 静态类方法没有隐藏的Self参数意味着静态类方法可以作为回调函数传递给操作系统(例如,在Windows上)。实际上,您可以声明一个具有stdcall调用约定的静态类方法,并将其用作直接的…
12.1.4 类静态方法与Windows API回调

​ 静态类方法没有隐藏的Self参数意味着静态类方法可以作为回调函数传递给操作系统(例如,在Windows上)。实际上,您可以声明一个具有stdcall调用约定的静态类方法,并将其用作直接的Windows API回调,就像我在StaticCallBack示例中的TimerCallBack方法中所做的那样:

type  TFormCallBack = class(TForm)  ListBox1: TListBox;  procedure FormCreate(Sender: TObject);  private  class var  NTimerCount: Integer;  public  procedure AddToList (const AMessage: string);  class procedure TimerCallBack(hwnd: THandle;  uMsg, idEvent, dwTime: Cardinal); static; stdcall;  end;

​ 类数据被用作回调计数器。OnCreate处理器通过将地址传递给静态类过程来调用SetTimer API:

procedure TFormCallBack.FormCreate(Sender: TObject);  
var  Callback: TFNTimerProc;  
begin  NTimerCount := 0;  Callback := TFNTimerProc(@TFormCallBack.TimerCallBack);  SetTimer(Handle, TIMERID, 1000, Callback);  
end;

注解:TFNTimeProc的参数是一个方法指针,这就是为什么方法的名称要以@开头或者通过使用Addr函数来获取方法地址。这是因为我们需要获取方法的地址,而不是执行方法。

​ 现在实际的回调函数增加了计时器并更新了窗体,通过引用相应的全局变量来指代它——这应该避免,但需要在演示中增加一些复杂性,因为类方法不能将窗体作为Self引用:

class procedure TFormCallBack.TimerCallBack(  hwnd: THandle; uMsg, idEvent, dwTime: Cardinal);  
begin  try  Inc(NTimerCount);  FormCallBack.AddToList(  IntToStr(NTimerCount) + ' at ' + TimeToStr(Now));  except on E: Exception do  Application.HandleException(nil);  end;  
end;

​ try-except块在那里是为了避免任何异常被发送回Windows——这是您必须对回调或DLL函数一致遵守的规则。

12.1.5 类属性

使用静态类方法的原因之一是实现类属性。什么是类属性?与标准属性一样,类属性是一个与读写机制关联的符号。与标准属性不同的是,类属性与类相关,并且必须使用类数据或静态类方法来实现。TBase 类(再次来自 ClassStatic 示例)用这两种方式中定义了两个类属性:

typeTBase = classprivateclass varFMyName: string;publicclass function GetMyName: string; static;class procedure SetMyName(Value: string); static;class property MyName: string read GetMyName write SetMyName;class property DirectName: string read FMyName write FMyName;end;

在这个例子中,TBase 类有两个类属性,一个是 MyName,它通过类方法 GetMyName 和 SetMyName 进行读写,另一个是 DirectName,它直接读写类变量 FMyName。

12.1.6 带有实例计数器的类

​ 类数据和类方法可用于保存类整体方面的信息。这种类型的信息的一个示例可以是该类创建的实例总数或当前存在的实例数。CountObj 示例演示了这种情景。该程序并不是非常有用,因为它只关注一个特定的问题。目标对象有一个简单的类,只存储一个数值:

typeTCountedObj = class(TObject)privateFValue: Integer;privateclass varFTotal: Integer;FCurrent: Integer;publicconstructor Create;destructor Destroy; override;property Value: Integer read FValue write FValue;publicclass function GetTotal: Integer;class function GetCurrent: Integer;end;

​ 每次创建对象时,程序都会递增两个计数器。每次销毁对象时,当前计数器都会减少:

constructor TCountedObj.Create(AOwner: TComponent);
begininherited Create;Inc(FTotal);Inc(FCurrent);
end;destructor TCountedObj.Destroy;
beginDec(FCurrent);inherited Destroy;
end;

​ 可以在不引用特定对象的情况下访问类信息。实际上,可能在某个时刻内存中没有对象:

class function TCountedObj.GetTotal: Integer;
beginResult := FTotal;
end;

​ 可以使用类似以下的代码显示当前状态:

Label1.Text := TCountedObj.GetCurrent.ToString + '/' + TCountedObj.GetTotal.ToString;

​ 在演示中,这段代码在一个定时器中执行的,它更新一个标签,因此它不需要引用任何特定的对象实例,也不是直接由任何手动操作触发的。示例中的按钮只是创建和释放一些对象,或者将一些对象保留在内存中(实际上,该程序存在一些潜在的内存泄漏)。

http://www.mmbaike.com/news/70836.html

相关文章:

  • 邵阳 网站开发 招聘百度云登录入口
  • 做3d效果的网站靠谱的代写平台
  • 东莞网站制作 东莞企业网站制作拉新十大推广app平台
  • 个人网站限制网络营销的特点
  • 域名和网站建站公司链接台州网站建设推广
  • 做阀门销售什么网站最好2022拉新推广赚钱的app
  • 工厂怎么找外贸公司seo推广优化方案
  • 成都网站建设外包什么是网站外链
  • 租号网站咋做我的百度账号登录
  • 做网站规避什么百度公司
  • 网站开发代码编辑器优化设计六年级下册语文答案
  • 企业网站用个人备案网站发稿平台
  • 标识设计公司网站seo官网
  • 潍坊网站建设wfxtseo可口可乐软文范例
  • 郴州哪里做网站大冶seo网站优化排名推荐
  • 阿里云快速备份网站网络营销常见术语
  • 直播视频采集卡宁波网站推广优化哪家正规
  • 天河做网站开发做百度推广一个月多少钱
  • thinkphp3.2 企业网站源码企业网站是什么
  • 无锡 学校网站建设怎么制作微信小程序
  • 自己电脑做网站模板第三方关键词优化排名
  • 自做跨境电商网站收款百度关键词首页排名
  • 给做网站建设的一些建议百度竞价登陆
  • 成都科技网站建设电话多少钱输入关键词进行搜索
  • 手机付费咨询网站建设优化网址
  • 白菜博主的返利网站怎么做公司网站推广方法
  • 阿里云网站主体变更怎么做seo实战密码
  • 网站查询功能 技术支持 中企动力2022最近十大的新闻热点
  • 网站内容建设 互联互通自己做网站需要什么条件
  • 动漫制作技术专业贵州seo培训