|

楼主 |
发表于 2010-1-7 13:45:47
|
显示全部楼层
用ToolButton做按钮,运行时变灰色,不能使用,如图
unit CKMLGL;
interface
uses
Business.System, Business.Model, Business.Forms,HJDAMLGL, Business.Data;
type
TCKMLGL = class(TForm)
FuncBroker: TFuncBroker;
InfoBrokerHJDAMLGL: TInfoBroker;
ControlBar: TControlBar;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
Panel1: TPanel;
GroupBox1: TGroupBox;
DataTreeView1: TDataTreeView;
Panel: TPanel;
DocViewWSDAGL_SJWG: TDocView;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
ImageList1: TImageList;
ImageList: TImageList;
ActionList: TActionList;
actNewRoot: TAction;
actNewChild: TAction;
actDelNode: TAction;
actDetailView: TAction;
DataSetBroker1: TDataSetBroker;
DataSetBrokertree: TDataSetBroker;
procedure BizFormShow(Sender: TObject);
procedure actNewRootExecute(Sender: TObject);
procedure actNewChildExecute(Sender: TObject);
procedure actDelNodeExecute(Sender: TObject);
procedure actDetailViewExecute(Sender: TObject);
private
{private declarations}
public
{public declarations}
Fid,Ffid,FGlyph: string;
procedure NewRec;
procedure ShowModal;
end;
implementation
procedure TCKMLGL.BizFormShow(Sender: TObject);
begin
DataSetBrokertree.DataSet.Open;
DataSetBroker1.DataSet.Open;
end;
procedure TCKMLGL.actNewRootExecute(Sender: TObject);
var
lfid,tmp,tmp1 :string;
lquery :Tquery;
Maxi :integer;
begin
if DataSetBrokertree.DataSet.FieldByName('FLSH').asstring = '000' then
begin
jsdialogs.ShowMsg('不能添加根目录','');
exit;
end;
lfid := DataSetBrokertree.DataSet.FieldByName('FLSH').asstring;
tmp := DataSetBrokertree.DataSet.FieldByName('FLSH').asstring;
lquery := Tquery.Create(self);
lquery.Connection := Tsqldataset(DataSetBroker1.dataset).Connection;
lquery.Close;
lquery.CommandText := ' select count(*) as A from DAFLB where lx = ''会计档案'' and flsh = ''' + tmp + ''' ';
lquery.Open;
Maxi := lquery.FieldByName('A').AsInteger;
lquery.Free;
if Maxi <= 8 then
begin
tmp1 := '00' + sysutils.IntToStr(Maxi+1); //tmp1是增加的lsh的后三位 ,因为9+1=10所以就是应该加'0'而不是'00';
end;
if 9 <= Maxi then
begin
if Maxi<= 98 then
tmp1 := '0' + sysutils.IntToStr(Maxi+1);
end;
if 99 <= Maxi then
begin
if Maxi<= 998 then
tmp1 := sysutils.IntToStr(Maxi+1);
end;
Fid := DataSetBrokertree.DataSet.FieldByName('LSH').asstring.Substring(0,length(DataSetBrokertree.DataSet.FieldByName('LSH').asstring)-3) + tmp1;
FFid := DataSetBrokertree.DataSet.FieldByName('FLSH').asstring;
FGlyph := DataSetBrokertree.DataSet.FieldByName('TBBM').asstring;
NewRec;
end;
procedure TCKMLGL.NewRec;
begin
DataSetBrokertree.DataSet.DisableControls;
DataSetBrokertree.DataSet.Edit;
DataSetBrokertree.DataSet.Insert;
DataSetBrokertree.DataSet.fieldbyname('LSH').asstring := Fid;
DataSetBrokertree.DataSet.fieldbyname('FLSH').asstring := FFid;
DataSetBrokertree.DataSet.fieldbyname('TBBM').asstring := FGlyph;
DataSetBrokertree.DataSet.fieldbyname('XSMC').asstring := '新建分类';
DataSetBrokertree.DataSet.fieldbyname('lx').asstring := '会计档案';
ShowModal;
DataSetBrokertree.DataSet.EnableControls;
end;
procedure TCKMLGL.ShowModal;
var
lForm: TTJMLCTCK;
lPYCapitals: string;
begin
lForm :=TTJMLCTCK.Create(self.Context);
if lForm.ShowModal = Business.Forms.Controls.mrOK then
begin
if DataSetBrokertree.Dataset.State in [TDatasetState.dsEdit, TDatasetState.dsInsert] then
begin
DataSetBrokertree.dataset.Post;
DataSetBrokertree.dataset.ApplyUpdates;
DataSetBroker1.DataSet.Refresh;
DataSetBrokertree.DataSet.Refresh;
end;
end
else DataSetBrokertree.dataset.Cancel;
lForm.Free;
end;
procedure TCKMLGL.actNewChildExecute(Sender: TObject);
var
lfid,tmp,tmp1 :string;
lquery :Tquery;
Maxi :integer;
begin
tmp := DataSetBrokertree.DataSet.FieldByName('LSH').asstring;
lquery := Tquery.Create(self);
lquery.Connection := Tsqldataset(DataSetBroker1.dataset).Connection;
lquery.Close;
lquery.CommandText := ' select count(*) as A from DAFLB where lx = ''会计档案'' and flsh = ''' + tmp + ''' ';
lquery.Open;
Maxi := lquery.FieldByName('A').AsInteger;
lquery.Free;
if Maxi <= 8 then
begin
tmp1 := '00' + sysutils.IntToStr(Maxi+1); //tmp1是增加的lsh的后三位 ,因为9+1=10所以就是应该加'0'而不是'00';
end;
if 9 <= Maxi then
begin
if Maxi<= 98 then
tmp1 := '0' + sysutils.IntToStr(Maxi+1);
end;
if 99 <= Maxi then
begin
if Maxi<= 998 then
tmp1 := sysutils.IntToStr(Maxi+1);
end;
if DataSetBrokertree.DataSet.FieldByName('LSH').asstring <> '0' then
Fid := DataSetBrokertree.DataSet.FieldByName('LSH').asstring + tmp1
else
Fid := tmp1;
FFid := DataSetBrokertree.DataSet.FieldByName('LSH').asstring;
FGlyph := sysutils.IntToStr(DataSetBrokertree.DataSet.FieldByName('TBBM').AsInteger + 1);
NewRec;
end;
procedure TCKMLGL.actDelNodeExecute(Sender: TObject);
begin
if not DataSetBrokertree.DataSet.IsEmpty then
begin
if jsdialogs.ConfirmBox('确定要删除此分类','删除分类',2) then
begin
DataSetBrokertree.DataSet.Delete;
DataSetBrokertree.DataSet.ApplyUpdates;
DataSetBroker1.DataSet.Refresh;
end;
end;
end;
procedure TCKMLGL.actDetailViewExecute(Sender: TObject);
begin
ShowModal;
end;
end.
|
|