📄 rl_qjtz_unit.~pas
字号:
unit rl_qjtz_Unit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, CalcExpress, Grids, DBGridEh, DB, DBTables, ExtCtrls,
ComCtrls, DBCtrls, DBGrids, StrUtils, Animate, GIFCtrl, PrnDbgeh;
type
Trl_qjtz = class(TForm)
StatusBar1: TStatusBar;
Panel1: TPanel;
Table1: TTable;
DataSource1: TDataSource;
CalcExpress1: TCalcExpress;
vars: TMemo;
edt_gongshi: TEdit;
cb_gjzd: 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;
tb_gzzk: TTable;
Button13: TButton;
Label3: TLabel;
Panel2: TPanel;
tb_qj: TTable;
DataSource2: TDataSource;
DBGridEh1: TDBGridEh;
db_vars: TDBMemo;
Splitter1: TSplitter;
Splitter2: TSplitter;
Panel4: TPanel;
Label1: TLabel;
cb_dw: TComboBox;
Label2: TLabel;
cb_fc: TComboBox;
edt_min: TEdit;
edt_max: TEdit;
Label6: TLabel;
Label7: TLabel;
Button14: TButton;
DBGrid1: TDBGrid;
Label9: TLabel;
Label10: TLabel;
edt_xs: TEdit;
values: TMemo;
edt_mc: TEdit;
Label11: TLabel;
Button2: TButton;
Label12: TLabel;
cb_gjzd1: TComboBox;
RxGIFAnimator1: TRxGIFAnimator;
Button26: TButton;
p1: TPrintDBGridEh;
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 edt_minKeyPress(Sender: TObject; var Key: Char);
procedure edt_maxKeyPress(Sender: TObject; var Key: Char);
procedure Button10Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button26Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
rl_qjtz: Trl_qjtz;
implementation
{$R *.dfm}
procedure Trl_qjtz.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;
cb_gjzd1.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']);
cb_gjzd1.Items.Add(table1['gzdm'] + ' ' + table1['xsmc']);
table1.Next;
end;
cb_gjzd.ItemIndex := -1;
cb_gjzd1.ItemIndex := -1;
cb_dw.ItemIndex := -1;
end;
procedure Trl_qjtz.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_qjtz.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_qjtz.cb_gjzdChange(Sender: TObject);
begin
label5.Caption := cb_gjzd.Text + ' =';
vars.Lines.Clear;
panel3.Visible := true;
end;
procedure Trl_qjtz.Button15Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '0';
edt_xs.Text := edt_xs.Text + '0';
end;
procedure Trl_qjtz.Button16Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '1';
edt_xs.Text := edt_xs.Text + '1';
end;
procedure Trl_qjtz.Button17Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '2';
edt_xs.Text := edt_xs.Text + '2';
end;
procedure Trl_qjtz.Button18Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '3';
edt_xs.Text := edt_xs.Text + '3';
end;
procedure Trl_qjtz.Button19Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '4';
edt_xs.Text := edt_xs.Text + '4';
end;
procedure Trl_qjtz.Button20Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '5';
edt_xs.Text := edt_xs.Text + '5';
end;
procedure Trl_qjtz.Button21Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '6';
edt_xs.Text := edt_xs.Text + '6';
end;
procedure Trl_qjtz.Button22Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '7';
edt_xs.Text := edt_xs.Text + '7';
end;
procedure Trl_qjtz.Button23Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '8';
edt_xs.Text := edt_xs.Text + '8';
end;
procedure Trl_qjtz.Button24Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '9';
edt_xs.Text := edt_xs.Text + '9';
end;
procedure Trl_qjtz.Button25Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '.';
edt_xs.Text := edt_xs.Text + '.';
end;
procedure Trl_qjtz.Button3Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '+';
edt_xs.Text := edt_xs.Text + '+';
end;
procedure Trl_qjtz.Button4Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '-';
edt_xs.Text := edt_xs.Text + '-';
end;
procedure Trl_qjtz.Button5Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '*';
edt_xs.Text := edt_xs.Text + '*';
end;
procedure Trl_qjtz.Button6Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '/';
edt_xs.Text := edt_xs.Text + '/';
end;
procedure Trl_qjtz.Button7Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + '(';
edt_xs.Text := edt_xs.Text + '(';
end;
procedure Trl_qjtz.Button8Click(Sender: TObject);
begin
edt_gongshi.Text := edt_gongshi.Text + ')';
edt_xs.Text := edt_xs.Text + ')';
end;
procedure Trl_qjtz.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_qjtz.Button1Click(Sender: TObject);
begin
if (trim(edt_min.Text) = '') or (trim(edt_max.Text) = '') or (trim(cb_gjzd.Text) = '') or (trim(edt_gongshi.Text) = '') then
begin
Application.MessageBox('添加的数据有的为空', '重新选择', MB_ICONWARNING);
exit;
end
else
begin
tb_qj.Append;
tb_qj['gzdm'] := trim(copy(cb_gjzd.text, 1, 3));
tb_qj['min_x'] := strtofloat(edt_min.Text);
tb_qj['max_x'] := strtofloat(edt_max.Text);
tb_qj['gongshi'] := edt_gongshi.Text;
tb_qj['xsmc'] := edt_mc.Text;
db_vars.Lines.AddStrings(vars.Lines);
tb_qj.Post;
end;
end;
procedure Trl_qjtz.Button13Click(Sender: TObject);
begin
close;
end;
procedure Trl_qjtz.Button2Click(Sender: TObject);
var args: array[0..100] of extended;
i, qj_chazhao: integer;
qj_gongshi: string;
begin
if (cb_dw.Text = '') or (cb_fc.text = '') or (cb_gjzd1.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
qj_chazhao := 0;
vars.Lines.Clear;
tb_qj.First;
with tb_qj do
while not eof do
begin
if (tb_qj['gzdm'] = trim(copy(cb_gjzd1.Text, 1, 3))) and (tb_gzzk[trim(copy(cb_gjzd1.Text, 1, 3))] >= tb_qj['min_x']) and (tb_gzzk[trim(copy(cb_gjzd1.Text, 1, 3))] <= tb_qj['max_x']) then
begin
qj_chazhao := 1;
vars.Lines.AddStrings(db_vars.Lines);
qj_gongshi := tb_qj['gongshi'];
end;
next;
end;
if qj_chazhao = 0 then
begin
showmessage('输入的区间变量数据有误或区间公式设置有误,请返回查找!');
vars.Lines.Clear;
end
else
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
CalcExpress1.Formula := qj_gongshi;
CalcExpress1.Variables := Vars.Lines;
for i := 0 to Values.Lines.Count - 1 do
args[i] := StrToFloat(Values.Lines[i]);
tb_gzzk.Edit;
tb_gzzk[trim(copy(cb_gjzd1.Text, 1, 3))] := round(CalcExpress1.calc(args) * 100) / 100;
end
else
MessageDlg('Variables and Variable values lists should have the same lines quantity.', mtInformation, [mbOk], 0);
end;
end;
next;
end;
tb_gzzk.close;
Application.MessageBox('调整完毕!如果此字段的数据影响薪资结果,请重新录入并计算', '重新选择', MB_ICONWARNING);
end;
end;
procedure Trl_qjtz.edt_minKeyPress(Sender: TObject; var Key: Char);
begin
case Key of
#08, '-', '0'..'9': ;
'.': if AnsiContainsText(edt_min.Text, '.') then
Key := #0; {如果已经输入了小数点,则取消}
else {其他键一律视为无效}
Key := #0;
end;
end;
procedure Trl_qjtz.edt_maxKeyPress(Sender: TObject; var Key: Char);
begin
case Key of
#08, '-', '0'..'9': ;
'.': if AnsiContainsText(edt_max.Text, '.') then
Key := #0; {如果已经输入了小数点,则取消}
else {其他键一律视为无效}
Key := #0;
end;
end;
procedure Trl_qjtz.Button10Click(Sender: TObject);
begin
edt_gongshi.Text := '';
edt_xs.Text := '';
end;
procedure Trl_qjtz.Button9Click(Sender: TObject);
var
i: integer;
biaozhi_zd: integer;
begin
biaozhi_zd := 0;
if table1.RecNo < 30 then
begin
Application.MessageBox('字段a1到a30不能做为计算变量!', '重新选择', 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_qjtz.Button14Click(Sender: TObject);
begin
if tb_qj.RecordCount > 0 then
tb_qj.Delete; ;
end;
procedure Trl_qjtz.Button26Click(Sender: TObject);
begin
p1.Preview;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -