Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBClient, StdCtrls, DBCtrls, Mask,UDM, Grids, DBGrids, ComCtrls,
Buttons; type TFmExample = class(TForm) StateDS: TDataSource; FrmCaptionLab: TLabel; DBGrid2: TDBGrid; procedure FormCreate(Sender: TObject);procedure DBComboBox1Enter(Sender: TObject);
procedure ComboBox1Enter(Sender: TObject);procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure StateDSStateChange(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormActivate(Sender: TObject); function ChangeEnableTrue:variant; //将 Tag=86控件的设为可用 function ChangeEnableFalse:variant; //将 Tag=86控件的设为不可用 private { Private declarations } public { Public declarations } end; var FmExample: TFmExample; implementation uses USellMain; {$R *.dfm}procedure TFmExample.FormClose(Sender: TObject; var Action: TCloseAction);
begin //关闭窗体 ,释放内存 Action:=caFree; //清空状态栏显示 USellMain.MainFm.StatusBar1.Panels.Items[1].Text:=''; end;procedure TFmExample.FormCreate(Sender: TObject);
begin end;procedure TFmExample.FormKeyPress(Sender: TObject; var Key: Char);
//在窗体中用 Enter键代替Tab键切换 begin if key=#13then //判断是回车按执行键 if not(ActiveControl is TDbgrid) Then //不是在 TDbgrid控件内 Begin key:=#0; perform(WM_NEXTDLGCTL,0,0); //移动到下一个控件 end else if(ActiveControl is TDbgrid)Then //是在 TDbgrid控件内 begin With TDbgrid(ActiveControl)Do if Selectedindex<(FieldCount-1) then Selectedindex:=Selectedindex+1 //移动到下一字段 else Selectedindex:=0; end; end;procedure TFmExample.StateDSStateChange(Sender: TObject); //显示数据集状态
var sDateState:string;
begin case StateDS.State of dsInactive: begin sDateState:='未激活 '; self.ChangeEnableFalse; end; dsBrowse: begin sDateState:='浏览 '; self.ChangeEnableFalse; end; dsEdit: begin sDateState:='修改 '; self.ChangeEnableTrue; end; dsInsert: begin sDateState:='添加新记录 '; self.ChangeEnableTrue; end else begin sDateState:='其他状态 '; self.ChangeEnableFalse; end; end; self.Caption:=FrmCaptionLab.Caption+'——'+sDateState; end;procedure TFmExample.FormActivate(Sender: TObject);
begin //将提示信息显示在状态栏上 USellMain.MainFm.StatusBar1.Panels.Items[1].Text:=self.Hint; end;function TFmExample.ChangeEnableTrue:variant; //将Tag=86控件的设为可用
var I:integer; begin for I:=0 to ControlCount-1 do beginif Controls[I].Tag=86 then Controls[I].Enabled:=True;
end; end;function TFmExample.ChangeEnableFalse:variant; //将Tag=86控件的设为不可用
var I:integer; begin for I:=0 to ControlCount-1 do beginif Controls[I].Tag=86 then Controls[I].Enabled:=False;
end; end; end.使用的时候在Flie->New->Other 然后找到这个模板窗体(Delphi7在名称和工程同名的选项卡中,Delphi2006是在inheritable items 中),然后建立的窗体就会继承这个窗体的特性。日后只要修改这个模板窗体,那么所有继承自这个窗体的子窗体都会被修改。
