📄 rl_sjtz_unit.~pa
字号:
unit rl_sjtz_Unit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, CalcExpress, Grids, DBGridEh, DB, DBTables, ExtCtrls,
ComCtrls, Animate, GIFCtrl, DBGrids;
type
Trl_sjtz = class(TForm)
StatusBar1: TStatusBar;
Panel1: TPanel;
Table1: TTable;
DataSource1: TDataSource;
CalcExpress1: TCalcExpress;
values: TMemo;
edt_gongshi: TEdit;
vars: TMemo;
cb_gjzd: TComboBox;
Label1: TLabel;
cb_dw: TComboBox;
Label2: TLabel;
cb_fc: TComboBox;
Label4: TLabel;
Label5: TLabel;
tb_dw: TTable;
tb_bz: TTable;
tb_bm: TTable;
Panel3: TPanel;
Button3: TButton;
Button7: TButton;
Button9: TButton;
Button4: TButton;
Button8: TButton;
Button12: TButton;
Button5: TButton;
Button11: TButton;
Button6: TButton;
Button10: TButton;
Button15: TButton;
Button16: TButton;
Button17: TButton;
Button18: TButton;
Button19: TButton;
Button20: TButton;
Button21: TButton;
Button22: TButton;
Button23: TButton;
Button24: TButton;
Button25: TButton;
Button1: TButton;
Button2: TButton;
tb_gzzk: TTable;
Button13: TButton;
Label3: TLabel;
RxGIFAnimator1: TRxGIFAnimator;
DBGrid1: TDBGrid;
edt_xs: TEdit;
Label6: TLabel;
procedure FormCreate(Sender: TObject);
procedure tb_dwAfterCancel(DataSet: TDataSet);
procedure cb_dwChange(Sender: TObject);
procedure cb_gjzdChange(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button16Click(Sender: TObject);
procedure Button17Click(Sender: TObject);
procedure Button18Click(Sender: TObject);
procedure Button19Click(Sender: TObject);
procedure Button20Click(Sender: TObject);
procedure Button21Click(Sender: TObject);
procedure Button22Click(Sender: TObject);
procedure Button23Click(Sender: TObject);
procedure Button24Click(Sender: TObject);
procedure Button25Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
rl_sjtz: Trl_sjtz;
implementation
{$R *.dfm}
procedure Trl_sjtz.FormCreate(Sender: TObject);
var
i: integer;
begin
tb_dw.Open;
tb_dw.First;
with tb_dw do
while not eof do
begin
cb_dw.Items.Add(tb_dw['dw']);
next;
end;
tb_dw.close;
cb_gjzd.Items.Clear;
table1.First;
for i := 1 to 30 do
table1.Next;
with table1 do
while not eof do
begin
cb_gjzd.Items.Add(table1['gzdm'] + ' ' + table1['xsmc']);
table1.Next;
end;
cb_gjzd.ItemIndex := -1;
cb_dw.ItemIndex := -1;
end;
procedure Trl_sjtz.tb_dwAfterCancel(DataSet: TDataSet);
begin
cb_fc.Items.Clear;
tb_bm.Open;
tb_bm.First;
with tb_bm do
while not eof do
begin
if trim(cb_dw.Text) = trim(tb_bm['bmlb']) then
cb_fc.Items.Add(tb_bm['bmmc']);
next;
end;
tb_bm.close;
cb_fc.ItemIndex := -1;
cb_fc.Text := '';
end;
procedure Trl_sjtz.cb_dwChange(Sender: TObject);
begin
cb_fc.Items.Clear;
tb_bm.Open;
tb_bm.First;
with tb_bm do
while not eof do
begin
if trim(cb_dw.Text) = trim(tb_bm['bmlb']) then
cb_fc.Items.Add(tb_bm['bmmc']);
next;
end;
tb_bm.close;
cb_fc.ItemIndex := -1;
cb_fc.Text := '';
end;
procedure Trl_sjtz.cb_gjzdChange(Sender: TObject);
begin
label5.Caption := cb_gjzd.Text + ' =';
//edt_gongshi.Text := trim(copy(cb_gjzd.Text, 1, 3));
vars.Clear;
vars.Lines.Add(trim(copy(cb_gjzd.Text, 1, 3)));
values.Clear;
panel3.Visible := true;
end;
procedure Trl_sjtz.Button15Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '0';
edt_xs.Text := edt_xs.Text + '0';
end;
procedure Trl_sjtz.Button16Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '1';
edt_xs.Text := edt_xs.Text + '1';
end;
procedure Trl_sjtz.Button17Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '2';
edt_xs.Text := edt_xs.Text + '2';
end;
procedure Trl_sjtz.Button18Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '3';
edt_xs.Text := edt_xs.Text + '3';
end;
procedure Trl_sjtz.Button19Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '4';
edt_xs.Text := edt_xs.Text + '4';
end;
procedure Trl_sjtz.Button20Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '5';
edt_xs.Text := edt_xs.Text + '5';
end;
procedure Trl_sjtz.Button21Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '6';
edt_xs.Text := edt_xs.Text + '6';
end;
procedure Trl_sjtz.Button22Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '7';
edt_xs.Text := edt_xs.Text + '7';
end;
procedure Trl_sjtz.Button23Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '8';
edt_xs.Text := edt_xs.Text + '8';
end;
procedure Trl_sjtz.Button24Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '9';
edt_xs.Text := edt_xs.Text + '9';
end;
procedure Trl_sjtz.Button25Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '.';
edt_xs.Text := edt_xs.Text + '.';
end;
procedure Trl_sjtz.Button3Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '+';
edt_xs.Text := edt_xs.Text + '+';
end;
procedure Trl_sjtz.Button4Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '-';
edt_xs.Text := edt_xs.Text + '-';
end;
procedure Trl_sjtz.Button5Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '*';
edt_xs.Text := edt_xs.Text + '*';
end;
procedure Trl_sjtz.Button6Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '/';
edt_xs.Text := edt_xs.Text + '/';
end;
procedure Trl_sjtz.Button7Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '(';
edt_xs.Text := edt_xs.Text + '(';
end;
procedure Trl_sjtz.Button8Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + ')';
edt_xs.Text := edt_xs.Text + ')';
end;
procedure Trl_sjtz.Button11Click(Sender: TObject);
begin
if strlen(pchar(edt_gongshi.Text)) > 0 then
begin
edt_gongshi.Text := copy(edt_gongshi.Text, 1, strlen(pchar(edt_gongshi.Text)) - 1);
end;
end;
procedure Trl_sjtz.Button1Click(Sender: TObject);
begin
if (cb_dw.Text = '') or (cb_fc.text = '') or (cb_gjzd.Text = '') then
begin
Application.MessageBox('请选择单位 部门或要清空的字段!', '重新选择', MB_ICONWARNING);
exit;
end
else
begin
tb_gzzk.Open;
tb_gzzk.First;
with tb_gzzk do
while not eof do
begin
if (tb_gzzk['a2'] = cb_dw.Text) and (tb_gzzk['a3'] = cb_fc.Text) then
begin
tb_gzzk.Edit;
tb_gzzk[trim(copy(cb_gjzd.Text, 1, 3))] := null;
tb_gzzk.Post;
end;
next;
end;
Application.MessageBox('该字段已经全部清空!如果此字段的数据影响薪资结果,请重新录入并计算', '重新选择', MB_ICONWARNING);
end;
end;
procedure Trl_sjtz.Button13Click(Sender: TObject);
begin
close;
end;
procedure Trl_sjtz.Button2Click(Sender: TObject);
var args: array[0..100] of extended;
i: integer;
begin
if (cb_dw.Text = '') or (cb_fc.text = '') or (cb_gjzd.Text = '') then
begin
Application.MessageBox('请选择单位 部门或要调整的字段!', '重新选择', MB_ICONWARNING);
exit;
end
else
begin
tb_gzzk.Open;
tb_gzzk.First;
with tb_gzzk do
while not eof do
begin
if (tb_gzzk['a2'] = cb_dw.Text) and (tb_gzzk['a3'] = cb_fc.Text) then
begin
Values.Lines.Clear;
for i := 0 to Vars.Lines.Count - 1 do
begin
if tb_gzzk[Vars.Lines.Strings[i]] = null then
Values.Lines.Add('0')
else
Values.Lines.Add(floattostr(tb_gzzk[Vars.Lines.Strings[i]]));
end;
//
if (Vars.Lines.Count = Values.Lines.Count) then
begin
//set expression to calculate
CalcExpress1.Formula := edt_gongshi.Text;
// set used variables list
CalcExpress1.Variables := Vars.Lines;
// prepare arguments
// SetLength(args,Values.Lines.Count);
for i := 0 to Values.Lines.Count - 1 do
args[i] := StrToFloat(Values.Lines[i]);
// calculate expression
tb_gzzk.Edit;
if round(CalcExpress1.calc(args) * 100) / 100 = 0 then
tb_gzzk[trim(copy(cb_gjzd.Text, 1, 3))] := null
else
tb_gzzk[trim(copy(cb_gjzd.Text, 1, 3))] := round(CalcExpress1.calc(args) * 100) / 100;
tb_gzzk.Post;
end
else
MessageDlg('Variables and Variable values lists should have the same lines quantity.', mtInformation, [mbOk], 0);
//
end;
next;
end;
tb_gzzk.close;
Application.MessageBox('调整完毕!如果此字段的数据影响薪资结果,请重新录入并计算', '重新选择', MB_ICONWARNING);
end;
end;
procedure Trl_sjtz.Button9Click(Sender: TObject);
var
i: integer;
biaozhi_zd: integer;
begin
biaozhi_zd := 0;
if table1.RecNo < 30 then
begin
Application.MessageBox('字段a1到a5不能做为计算变量!', '重新选择', MB_ICONWARNING);
exit;
end
else
edt_gongshi.Text := edt_gongshi.Text + table1['gzdm'];
edt_xs.Text := edt_xs.Text + table1['xsmc'];
if vars.Lines.Count = 0 then
begin
vars.Lines.Clear;
vars.Lines.Add(table1['gzdm']);
end
else
begin
for i := 0 to vars.Lines.Count do
begin
if uppercase(vars.Lines.Strings[i]) = uppercase(table1['gzdm']) then
biaozhi_zd := 1;
end;
if biaozhi_zd = 0 then
vars.Lines.Add(table1['gzdm']);
end;
end;
procedure Trl_sjtz.Button10Click(Sender: TObject);
begin
vars.Lines.clear;
edt_gongshi.Text := '';
edt_xs.Text := '';
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -