📄 bbrelations.pas
字号:
unit BbRelations;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, ExtCtrls, ImgList, ComCtrls, ToolWin, StdCtrls,
Buttons, Spin, CELLLib_TLB, OleCtrls;
type
TBbRelation = class(TForm)
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ImageList1: TImageList;
ImageList2: TImageList;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
ToolButton12: TToolButton;
ToolButton13: TToolButton;
Panel1: TPanel;
CboBb: TComboBox;
ToolButton16: TToolButton;
Label1: TLabel;
Label2: TLabel;
SpinEdit1: TSpinEdit;
Label3: TLabel;
Edit1: TEdit;
ComboBox1: TComboBox;
Label4: TLabel;
Edit2: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Cell1: TCell;
DBGrid1: TDBGrid;
procedure ToolButton13Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure ToolButton6Click(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure EnableControl(const Value:Boolean; const isadd:Boolean=false);
function fValidFormula(const cStr:String):Boolean;
procedure ToolButton3Click(Sender: TObject);
procedure CellExecuteUserFunc(Sender: TObject;
const name: WideString; rettype, paranum: Smallint;
var paratype: Integer; var funcResult: OleVariant);
procedure BitBtn1Click(Sender: TObject);
procedure ComboboxChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
// tasknumber: String;
FormulaOK: Boolean;
end;
var
BbRelation: TBbRelation;
implementation
{$R *.dfm}
uses DataModule,UserFace;
procedure TBbRelation.ComboboxChange(Sender: TObject);
var
bbn:String;
begin
bbn:= Copy(CboBb.Text,1,2);
DM.pQryRelation(Bbn);
EnableControl(False,False);
if Dm.cds_SD.RecordCount =0 then
begin
ToolButton2.Enabled := False;
ToolButton3.Enabled := False;
ToolButton8.Enabled := False;
ToolButton9.Enabled := False;
end
else
begin
ToolButton2.Enabled := True;
ToolButton3.Enabled := True;
ToolButton8.Enabled := True;
ToolButton9.Enabled := True;
end;
end;
procedure TBbRelation.ToolButton13Click(Sender: TObject);
begin
Close;
end;
procedure TBbRelation.FormCreate(Sender: TObject);
var
bbnum, bbname: String;
i,iIndex: integer;
begin
cell1.DoLogin('北京金天鹏软件科技有限公司',363,'00FD18FF080193035CFE09FF9908');
LoadCellRelation(Cell1);
i:=0;
iIndex := -1;
BbNum:=trim(DM.cds_LR.fieldbyname('bbbh').AsString);
BbName:=trim(DM.cds_LR.fieldbyname('bbmc').AsString);
DM.cds_SC.Data:= DM.cds_LR.Data;
with DM.cds_SC do
begin
first;
while not eof do
begin
CboBb.Items.Add(fieldbyname('bbbh').AsString+'|'+trim(fieldbyname('bbmc').AsString));
if BbNum = fieldbyname('bbbh').AsString then
iIndex := i;
next;
inc(i);
end;
end;
CboBb.ItemIndex := iIndex;
//ToolButton15.Click;
CboBb.OnChange(self);
Resize;
end;
procedure TBbRelation.FormResize(Sender: TObject);
begin
DBGrid1.Columns[1].Width := trunc((ClientWidth-40-DBGrid1.Columns[0].Width-DBGrid1.Columns[2].Width)/2);
DBGrid1.Columns[3].Width := DBGrid1.Columns[1].Width;
end;
procedure TBbRelation.EnableControl(const Value: Boolean; const isadd:Boolean=false);
var
i: smallint;
begin
for i:=0 to Panel1.ControlCount-1 do
Panel1.Controls[i].Enabled := Value;
if (not isadd) and value then
SpinEdit1.Enabled := False;
DBGrid1.Enabled := not Value;
CboBb.Enabled := not Value;
ToolButton5.Enabled := Value;
ToolButton6.Enabled := Value;
ToolButton8.Enabled := not Value;
ToolButton9.Enabled := not Value;
end;
procedure TBbRelation.ToolButton1Click(Sender: TObject);
begin
Dm.cds_SD.Last;
SpinEdit1.Value := DM.cds_SD.FieldByName('relationno').AsInteger +1;
EnableControl(True,True);
SpinEdit1.SetFocus;
end;
procedure TBbRelation.ToolButton2Click(Sender: TObject);
var
cra:string;
i: smallint;
begin
EnableControl(True,False);
with Dm.cds_SD do
begin
SpinEdit1.Value := FieldByName('relationno').AsInteger;
Edit1.Text := FieldByName('bbrelationl').AsString;
Edit2.Text := FieldByName('bbrelationr').AsString;
cra := trim(FieldByName('bbrelation').AsString);
combobox1.ItemIndex := -1;
for i:=0 to Combobox1.Items.Count do
begin
if Combobox1.Items.Strings[i] = cra then
begin
Combobox1.ItemIndex := i;
break;
end;
end;
end;
Edit1.SetFocus;
end;
procedure TBbRelation.ToolButton6Click(Sender: TObject);
begin
with Dm.cds_SD do
begin
SpinEdit1.Value := FieldByName('relationno').AsInteger;
Edit1.Text := FieldByName('bbrelationl').AsString;
Edit2.Text := FieldByName('bbrelationr').AsString;
Combobox1.Text := FieldByName('bbrelation').AsString;
end;
EnableControl(False,False);
end;
procedure TBbRelation.ToolButton5Click(Sender: TObject);
var
// iNo,ret: Integer;
iNo: Integer;
cRelation,cRelationL,cRelationR,BbNum: String;
begin
iNo := SpinEdit1.Value ;
cRelationL := Trim(Edit1.Text);
cRelationR := Trim(Edit2.Text);
cRelation := Trim(Combobox1.Text);
BbNum:= Copy(CboBb.Text,1,2);
if SpinEdit1.Enabled then
begin
Dm.cds_SD.First;
if Dm.cds_SD.Locate('relationno',iNo,[]) then
begin
showmessage('编号重复,请更换!');
SpinEdit1.SetFocus;
exit;
end;
end;
if not fValidFormula(cRelationL) then
begin
showmessage('公式左所设置的公式非法!');
Edit1.SetFocus;
Exit;
end;
if not fValidFormula(cRelationR) then
begin
showmessage('公式右所设置的公式非法!');
Edit2.SetFocus;
Exit;
end;
if cRelation='' then
begin
showmessage('请选择公式的关系');
Combobox1.SetFocus;
Exit;
end;
if DM.fSpRelationSave(BbNum,iNo,cRelationL,cRelation,cRelationR)=0 then
begin
EnableControl(False,False);
Dm.pQryRelation(BbNum);
while not DM.cds_SD.Eof do
begin
if Dm.cds_SD.FieldByName('relationno').AsInteger = iNo then
break;
Dm.cds_SD.Next;
end;
if Dm.cds_SD.RecordCount =0 then
begin
ToolButton2.Enabled := False;
ToolButton3.Enabled := False;
ToolButton8.Enabled := False;
ToolButton9.Enabled := False;
end
else
begin
ToolButton2.Enabled := True;
ToolButton3.Enabled := True;
ToolButton8.Enabled := True;
ToolButton9.Enabled := True;
end;
showmessage('存盘成功!');
end
else
showmessage('存盘失败!');
end;
function TBbRelation.fValidFormula(const cStr: String): Boolean;
var
Ret: smallint;
Resu: OleVariant;
begin
LoadCellRelation(Cell1);
ret := 0;
resu :=0;
result := Cell1.DoCalculateExpr(cStr,ret,resu)
end;
procedure TBbRelation.ToolButton3Click(Sender: TObject);
var
iNo: Integer;
BbNum: String;
begin
iNo := Dm.cds_SD.FieldByName('relationno').AsInteger;
if messagedlg('是否要删除“' + InttoStr(iNo)+'号勾稽公式?',
mtcustom, [mbyes, mbno], 0) = mrYes then
begin
BbNum:= Copy(CboBb.Text,1,6);
if Dm.fSpRelationdel(BbNum,iNo) =0 then
begin
if Dm.cds_SD.RecordCount =0 then
begin
ToolButton2.Enabled := False;
ToolButton3.Enabled := False;
ToolButton8.Enabled := False;
ToolButton9.Enabled := False;
end
else
begin
ToolButton2.Enabled := True;
ToolButton3.Enabled := True;
ToolButton8.Enabled := True;
ToolButton9.Enabled := True;
end;
ComboboxChange(self);
showmessage('删除成功!');
end
else
showmessage('删除失败!');
end;
end;
procedure TBbRelation.CellExecuteUserFunc(Sender: TObject;
const name: WideString; rettype, paranum: Smallint;
var paratype: Integer; var funcResult: OleVariant);
begin
if (UpperCase(name)='GJGET') or (UpperCase(name)='GJGETD') or
(UpperCase(name)='GJSUMH') or (UpperCase(name)='GJSUMV') then
begin
FormulaOk := True;
funcresult := 0;
end
else
begin
FormulaOk := False;
end;
end;
procedure TBbRelation.BitBtn1Click(Sender: TObject);
var
cFormula: OleVariant;
begin
cFormula := '';
if Sender = BitBtn1 then
cFormula := trim(Edit1.Text)
else
cFormula := trim(Edit2.Text);
if cFormula <>'' then
Cell1.DoSetFormula(1,1,cformula);
Cell1.Visible := True;
cell1.DoInputFormula(1,1);
Cell1.Visible := False;
if Cell1.IsFormulaCell(1,1) then
begin
Cell1.DoGetFormula(1,1,cFormula);
if Sender = BitBtn1 then
Edit1.Text := cFormula
else
Edit2.Text := cFormula;
Cell1.DoDelFormula(1,1);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -