📄 gld500_01.pas.svn-base
字号:
unit Gld500_01;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
BAS100_01, ImgList, ComCtrls, ToolWin, ExtCtrls, Grids, DBGrids,
Wwdbigrd, Wwdbgrid, sncCurrency, StdCtrls, wwdbdatetimepicker, Db,
dxTL, dxDBCtrl, dxDBGrid, dxCntner, sncDBCurrency, DBTables,
dxDBTLCl, dxGrClms, dxExEdtr, ADODB;
type
TGld500_01Form = class(TForm)
CoolBar1: TCoolBar;
ToolBar2: TToolBar;
tlbFirst: TToolButton;
tlbPrior: TToolButton;
tlbNext: TToolButton;
tlbLast: TToolButton;
ToolButton1: TToolButton;
tlbInsert: TToolButton;
tlbDelete: TToolButton;
ToolButton2: TToolButton;
tlbSave: TToolButton;
tlbCancel: TToolButton;
ToolButton3: TToolButton;
tlbSearch: TToolButton;
tlbPrint: TToolButton;
tlbCheck: TToolButton;
ToolButton4: TToolButton;
tlbExit: TToolButton;
Label6: TLabel;
wwDBDateTimePicker1: TwwDBDateTimePicker;
Label1: TLabel;
Label3: TLabel;
Edit1: TEdit;
DataSource1: TDataSource;
Label2: TLabel;
Label5: TLabel;
Label7: TLabel;
sncDBCurrencyEdit1: TsncDBCurrencyEdit;
Panel1: TPanel;
Panel2: TPanel;
Edit3: TEdit;
tlbCurr: TToolButton;
ToolButton6: TToolButton;
DBGrid1: TdxDBGrid;
DBGrid1G500_001: TdxDBGridMaskColumn;
DBGrid1G500_002: TdxDBGridMaskColumn;
DBGrid1G500_006: TdxDBGridMaskColumn;
DBGrid1G500_007: TdxDBGridMaskColumn;
DBGrid1G500_008: TdxDBGridMaskColumn;
DBGrid1G500_009: TdxDBGridMaskColumn;
Shape1: TShape;
Shape2: TShape;
Shape3: TShape;
Shape4: TShape;
DBGrid1G500_003: TdxDBGridButtonColumn;
DBGrid1G500_004: TdxDBGridButtonColumn;
DBGrid1G500_005: TdxDBGridButtonColumn;
sncCurrencyEdit1: TsncCurrencyEdit;
sncCurrencyEdit2: TsncCurrencyEdit;
ADOQuery1: TADOQuery;
ADOQuery2: TADOQuery;
ADODataSet1: TADODataSet;
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBGrid1ColEnter(Sender: TObject);
procedure DBGrid1ColExit(Sender: TObject);
procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
procedure sncDBCurrencyEdit1Enter(Sender: TObject);
procedure sncDBCurrencyEdit1Exit(Sender: TObject);
procedure sncDBCurrencyEdit1MoveOut(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure tlbFirstClick(Sender: TObject);
procedure tlbPriorClick(Sender: TObject);
procedure tlbNextClick(Sender: TObject);
procedure tlbLastClick(Sender: TObject);
procedure tlbInsertClick(Sender: TObject);
procedure tlbDeleteClick(Sender: TObject);
procedure tlbSaveClick(Sender: TObject);
procedure tlbCancelClick(Sender: TObject);
procedure tlbSearchClick(Sender: TObject);
procedure tlbPrintClick(Sender: TObject);
procedure tlbCurrClick(Sender: TObject);
procedure tlbCheckClick(Sender: TObject);
procedure tlbExitClick(Sender: TObject);
procedure DBGrid1CustomDraw(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxDBTreeListColumn;
const AText: String; AFont: TFont; var AColor: TColor; ASelected,
AFocused: Boolean; var ADone: Boolean);
procedure DBGrid1G500_003ButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
procedure DBGrid1G500_004ButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
procedure DBGrid1G500_005ButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
procedure ClientDataSet1AfterPost(DataSet: TDataSet);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure sncDBCurrencyEdit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
function CheckCurrencyField(FieldName: String): Boolean;
procedure SetHighLightColor;
procedure SetNormalColor;
{ Private declarations }
public
{ Public declarations }
end;
var
Gld500_01Form: TGld500_01Form;
implementation
uses SYSDATA, CommFun, Gld120_01, Gld100_01;
{$R *.DFM}
function TGld500_01Form.CheckCurrencyField(FieldName: String): Boolean;
const
CurrencyFieldSet: array[0..2] of string=('G500_007', 'G500_008', 'G500_009');
var
I: Integer;
begin
Result := False;
for I:=0 to Length(CurrencyFieldSet)-1 do
begin
if (FieldName=CurrencyFieldSet[I]) then
begin
Result := True;
Break;
end;
end;
end;
procedure TGld500_01Form.SetHighLightColor;
begin
sncDBCurrencyEdit1.Color := clHighLight;
sncDBCurrencyEdit1.Font.Color := clwhite;
end;
procedure TGld500_01Form.SetNormalColor;
begin
sncDBCurrencyEdit1.Color := DBGrid1.Color;
sncDBCurrencyEdit1.Font.Color := DBGrid1.Font.Color;
end;
procedure TGld500_01Form.FormCreate(Sender: TObject);
begin
inherited;
wwDBDateTimePicker1.Date:=Date;
sncDBCurrencyEdit1.Color := DBGrid1.Color;
sncDBCurrencyEdit1.Font.Assign(DBGrid1.Font);
sncDBCurrencyEdit1.Tag := 0;
// ClientDataSet1.Open;
end;
procedure TGld500_01Form.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
// ClientDataSet1.Close;
end;
procedure TGld500_01Form.DBGrid1ColEnter(Sender: TObject);
begin
inherited;
if CheckCurrencyField(DBGrid1.FocusedField.FieldName) then
begin
sncDBCurrencyEdit1.DataField := DBGrid1.FocusedField.FieldName;
sncDBCurrencyEdit1.Tag := 1;
end;
end;
procedure TGld500_01Form.DBGrid1ColExit(Sender: TObject);
begin
inherited;
if CheckCurrencyField(DBGrid1.FocusedField.FieldName) then
begin
sncDBCurrencyEdit1.Visible := False;
sncDBCurrencyEdit1.Tag := 0;
end;
end;
procedure TGld500_01Form.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if (key<>chr(9)) and (key<>#13) and CheckCurrencyField(DBGrid1.FocusedField.FieldName) then
begin
sncDBCurrencyEdit1.SetFocus;
SendMessage(sncDBCurrencyEdit1.Handle, WM_Char, WORD(Key), 0);
end;
end;
procedure TGld500_01Form.sncDBCurrencyEdit1Enter(Sender: TObject);
begin
inherited;
SetNormalColor;
end;
procedure TGld500_01Form.sncDBCurrencyEdit1Exit(Sender: TObject);
begin
inherited;
sncDBCurrencyEdit1.Visible := False;
sncDBCurrencyEdit1.Tag := 0;
SetHighLightColor;
end;
procedure TGld500_01Form.sncDBCurrencyEdit1MoveOut(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
inherited;
case Key of
VK_UP,VK_DOWN,VK_LEFT,VK_RIGHT:
begin
DBGrid1.SetFocus;
SendMessage(DBGrid1.Handle, WM_KEYDOWN, WORD(Key), 0);
end;
end;
end;
procedure TGld500_01Form.tlbFirstClick(Sender: TObject);
begin
inherited;
//最前
end;
procedure TGld500_01Form.tlbPriorClick(Sender: TObject);
begin
inherited;
//上移
end;
procedure TGld500_01Form.tlbNextClick(Sender: TObject);
begin
inherited;
//下移
end;
procedure TGld500_01Form.tlbLastClick(Sender: TObject);
begin
inherited;
//最后
end;
procedure TGld500_01Form.tlbInsertClick(Sender: TObject);
begin
inherited;
//新增
end;
procedure TGld500_01Form.tlbDeleteClick(Sender: TObject);
begin
inherited;
//删除
end;
procedure TGld500_01Form.tlbSaveClick(Sender: TObject);
begin
inherited;
//保存
end;
procedure TGld500_01Form.tlbCancelClick(Sender: TObject);
begin
inherited;
//取消
end;
procedure TGld500_01Form.tlbSearchClick(Sender: TObject);
begin
inherited;
//查找
end;
procedure TGld500_01Form.tlbPrintClick(Sender: TObject);
begin
inherited;
//打印
end;
procedure TGld500_01Form.tlbCurrClick(Sender: TObject);
begin
inherited;
//外币
if DBGrid1.Bands[1].Visible then
begin
tlbCurr.Down:=False;
DBGrid1.Bands[1].Visible:=False;
DBGrid1G500_004.Width:=220;
end else
begin
tlbCurr.Down:=True;
DBGrid1.Bands[1].Visible:=True;
DBGrid1G500_004.Width:=120;
end;
end;
procedure TGld500_01Form.tlbCheckClick(Sender: TObject);
begin
inherited;
//审核
end;
procedure TGld500_01Form.tlbExitClick(Sender: TObject);
begin
inherited;
//退出
Close;
end;
procedure TGld500_01Form.DBGrid1CustomDraw(Sender: TObject;
ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode;
AColumn: TdxDBTreeListColumn; const AText: String; AFont: TFont;
var AColor: TColor; ASelected, AFocused: Boolean; var ADone: Boolean);
var
OldColor, OldFontColor: TColor;
begin
inherited;
if CheckCurrencyField(AColumn.Field.FieldName) then
begin
ADone:=True;
if AFocused then
begin
sncDBCurrencyEdit1.DataField := DBGrid1.FocusedField.FieldName;
sncDBCurrencyEdit1.Tag := 1;
sncDBCurrencyEdit1.Left:=ARect.Left+DBGrid1.Left+1;
sncDBCurrencyEdit1.Top:=ARect.Top+DBGrid1.Top+1;
sncDBCurrencyEdit1.Width:=ARect.Right-ARect.Left;
sncDBCurrencyEdit1.Height:=ARect.Bottom-ARect.Top;
SetHighLightColor;
if (sncDBCurrencyEdit1.Tag=1) and not sncDBCurrencyEdit1.Visible then
begin
sncDBCurrencyEdit1.Visible := True;
sncDBCurrencyEdit1.BringToFront;
sncDBCurrencyEdit1.SetFocus;
end;
end else
begin
// sncDBCurrencyEdit1.Visible := False;
sncDBCurrencyEdit1.Tag := 0;
OldColor := sncDBCurrencyEdit1.Color;
OldFontColor := sncDBCurrencyEdit1.Font.Color;
SetNormalColor;
DrawCurrencyFrame(DBGrid1.Canvas, ARect, sncDBCurrencyEdit1, AColumn.Field.AsFloat);
sncDBCurrencyEdit1.Color := OldColor;
sncDBCurrencyEdit1.Font.Color := OldFontColor;
end;
end else
ADone:=False;
end;
procedure TGld500_01Form.DBGrid1G500_003ButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
begin
inherited;
//樀要
Gld120_01Form:=TGld120_01Form.Create(Application);
Gld120_01Form.ShowModal;
end;
procedure TGld500_01Form.DBGrid1G500_004ButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
begin
inherited;
//会计科目
Gld100_01Form:=TGld100_01Form.Create(Application);
Gld100_01Form.ShowModal;
end;
procedure TGld500_01Form.DBGrid1G500_005ButtonClick(Sender: TObject;
AbsoluteIndex: Integer);
begin
inherited;
//币别
ShowMsg('币别');
end;
procedure TGld500_01Form.ClientDataSet1AfterPost(DataSet: TDataSet);
begin
inherited;
// sncCurrencyEdit1.Value:=ClientDataSet1.Aggregates.Items[0].Value;
// sncCurrencyEdit2.Value:=ClientDataSet1.Aggregates.Items[1].Value;
end;
procedure TGld500_01Form.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ActiveControl is TdxDBGrid then Exit;
if Key in [vk_Return] then Perform(WM_NEXTDLGCTL, 0, 0);
// if Key in [vk_Return] then PostMessage(handle,wm_keydown,vk_tab,0);
end;
procedure TGld500_01Form.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key in [vk_Return] then
begin
if DBGrid1.Bands[1].Visible then
begin
case DBGrid1.FocusedColumn of
0:DBGrid1.FocusedColumn:=1; //摘要
1:DBGrid1.FocusedColumn:=2; //会计科目
2:DBGrid1.FocusedColumn:=3; //币别
3:DBGrid1.FocusedColumn:=6; //汇率
6:DBGrid1.FocusedColumn:=4; //外币金额
4:DBGrid1.FocusedColumn:=5; //借方金额
// 5:begin ClientDataSet1.Next; DBGrid1.FocusedColumn:=0; end; //贷方金额
end;
if not (DBGrid1.FocusedColumn in [4,5,6]) then
PostMessage(DBGrid1.Handle,wm_keydown,vk_F2,0);
DBGrid1.SetFocus;
end else
begin
case DBGrid1.FocusedColumn of
0:DBGrid1.FocusedColumn:=1; //摘要
1:DBGrid1.FocusedColumn:=2; //会计科目
2:DBGrid1.FocusedColumn:=3; //借方金额
// 3:begin ClientDataSet1.Next; DBGrid1.FocusedColumn:=0; end; //贷方金额
end;
if not (DBGrid1.FocusedColumn in [2,3]) then
PostMessage(DBGrid1.Handle,wm_keydown,vk_F2,0);
DBGrid1.SetFocus;
end;
end;
end;
procedure TGld500_01Form.sncDBCurrencyEdit1KeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if Key in [vk_Return] then
begin
PostMessage(DBGrid1.Handle,wm_keydown,key,0);
end;
end;
initialization
RegisterClass(TGld500_01Form);
finalization
UnRegisterClass(TGld500_01Form);
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -