首页 > 代码库 > 使用 IntraWeb (11) - 基本控件之 TIWButton

使用 IntraWeb (11) - 基本控件之 TIWButton


所在单元及继承链:
IWCompButton.TIWButton < TIWCustomControl < TIWBaseHTMLControl < TIWBaseControl < TIWVCLBaseControl < TControl < TComponent < TPersistent < TObject

主要成员:
property ButtonType: TIWButtonType  //!, 示例中详述
property HotKey: string             //热键; 譬如: HotKey = ‘j‘, 那么热键就是: Alt+J
property Confirmation: string       //指定此信息后, 将弹出问询窗; 只有确认后才会执行 OnClick; 这非常方便, 也很有创意
property DoSubmitValidation: Boolean  //是否在提交时验证其他...
property ExtraTagParams: TStringList  //添加 Html Tag; 不要用于修改 Html Tag
property FriendlyName: string         //呈现给用户的名称
property ScriptEvents: TIWScriptEvents  //客户端的 js 事件脚本
property WebColor: TIWColor           //没看出和 Color 的区别
property WebFont: TIWFont             //没看出和 Font 的区别
property Css: string     //引用在样式表中定义的类; 譬如在样式表定义有 .MyClass1, 这里就可以设置 Css := ‘MyClass1‘;
property StyleRenderOptions: TIWStyleRenderOptions  //指定哪些类别的样式设置可用于最终的呈现; 因为一些属性可能会和样式表有冲突
property Caption: TCaption  //标题
property Text: TCaption     //在该控件中, Text 和 Caption 没有区别

property OnClick: TNotifyEvent        //与 ScriptEvents 中的 onclick 不同, 这会使整个页面提交, 就像 Submit 按钮一样
property OnAsyncClick: TIWAsyncEvent  //异步 Click; 难得见到这么简单的 AJAX 的实现
property OnHTMLTag: TIWOnHTMLTag      //事件发生在呈现 Html Tag 时; 可借机修改那些 Tag

function RenderHTML(AContext: TIWCompContext): TIWHTMLTag  //类似的还有 RenderStyle 等, 这应该是在继承控件时使用的; 现在可以使用 OnHTMLTag
function GetSubmitParam: string   //?
function OwnerForm: TIWBaseForm   //所属窗体; 譬如获取 IWButton1.OwnerForm.Name 的结果是 IWForm1


ButtonType 属性:
//在 Html 中的按钮有三种 Type: button、 submit、 reset, 分别表示: 一般按钮、提交按钮、重置按钮
//该属性的本意就是这个, 但现在它不起作用
//它默认是 button, 是否是指定为 submit 也不重要, TIWButton.OnClick 会自动提交; 但 reset 还是有用的

//在作者没有修正前, 可以先通过它的 OnHTMLTag 事件设置:
procedure TIWForm1.IWButton1HTMLTag(ASender: TObject; ATag: TIWHTMLTag); //可能需手动 uses IWHTMLTag
begin
  ATag.Params.Values[‘type‘] := ‘reset‘;
end;

{能接受重置的其他输入控件必须和重置按钮在同一 Region 内, 或都不在 Region 内}


DoSubmitValidation、FriendlyName 属性:
//在空窗体上放 IWEdit1、IWButton1, 写代码如下:
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
  IWEdit1.Required := True;          //指定为必填字段
  IWEdit1.FriendlyName := ‘姓名字段‘; //在验证提示时将使用这个名称
//  IWButton1.DoSubmitValidation := False; //TIWButton.DoSubmitValidation 默认是 True; 如果指定为 False, 就不会执行验证了
end;

procedure TIWForm1.IWButton1Click(Sender: TObject);
begin
//只是测试提交, 这里不需要有代码
end;

//测试: 运行后, 清空 IWEdit1, 点击按钮, 将会弹出验证提示.


ExtraTagParams 属性:
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
  IWButton1.ExtraTagParams.Add(‘style = color: red‘);
end;


Css 属性:
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
  ExtraHeader.Add(‘<style>‘);
  ExtraHeader.Add(‘.MyClass1 {color: blue;}‘);
  ExtraHeader.Add(‘</style>‘);

  IWButton1.Css := ‘MyClass1‘;
end;