📄 di_dbdictionery.pas
字号:
unit DI_DBDictionery;
{
代码单元名称:通用数据登录工具数据字典窗口
从属软件:大连资金清算中心打码机管理信息系统
开发单位:大连理工大学计算机技术研究所软件工程研究室
作者:王树润
时间:2001,1,30
}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, DBCtrls, ComCtrls, ToolWin, Grids, DBGrids, stdctrls, ImgList, db,
inifiles, ADODB;
type
TDI_DfmDBDictionery = class(TForm)
DBGrid1: TDBGrid;
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
CloseToolButton: TToolButton;
ConfirmToolButton: TToolButton;
ToolButton3: TToolButton;
ImageList1: TImageList;
DBNavigator1: TDBNavigator;
ToolBar2: TToolBar;
FindToolButton: TToolButton;
ToolButton2: TToolButton;
FindEdit: TEdit;
ReplaceToolButton: TToolButton;
ToolBar4: TToolBar;
ToolButton4: TToolButton;
ToolBar3: TToolBar;
ToolButton1: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
BeforReplaceEdit: TEdit;
AfterReplaceEdit: TEdit;
procedure FormShow(Sender: TObject);
procedure CloseToolButtonClick(Sender: TObject);
procedure ConfirmToolButtonClick(Sender: TObject);
procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FindToolButtonClick(Sender: TObject);
procedure FindEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormShortCut(var Msg: TWMKey; var Handled: Boolean);
procedure ReplaceToolButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
DictionaryTableName: string;
DBGrid: TDBGrid;
DBEdit: TDBEdit;
IdentifyString: string;
constructor Create(Owner: TComponent; ADictionaryTableName: string; ADBGrid:
TDBGrid; ADBEdit: TDBEdit; AIdentifyString: string); overload;
end;
implementation
uses DI_DataModul1, PublicUnit;
{$R *.DFM}
//构造函数======================================================================
constructor TDI_DfmDBDictionery.Create(Owner: TComponent; ADictionaryTableName:
string; ADBGrid: TDBGrid; ADBEdit: TDBEdit; AIdentifyString: string);
begin
inherited Create(Owner);
DictionaryTableName := ADictionaryTableName;
DBGrid := ADBGrid;
DBEdit := ADBEdit;
IdentifyString := AIdentifyString;
end;
//窗体==========================================================================
procedure TDI_DfmDBDictionery.FormShow(Sender: TObject);
begin
BeforReplaceEdit.Enabled := False;
AfterReplaceEdit.Enabled := False;
ToolButton4.Enabled := False;
ToolButton1.Enabled := False;
RefreshDBDictionery(DictionaryTableName);
with DI_DfmDataModule1.DictioneryADOQuery do
begin
Close;
Sql.Clear;
Sql.Add('Select * From ' + DictionaryTableName + ' Order by ID');
try
Open;
except
ShowMessage('error');
Exit;
end;
end;
DI_DfmDataModule1.DictioneryADOQuery.FieldByName('ID').DisplayLabel :=
'记录简写';
DI_DfmDataModule1.DictioneryADOQuery.FieldByName('DICTIONARY').DisplayLabel :=
'记录内容';
DBGrid1.DataSource := DI_DfmDataModule1.DictioneryDataSource;
DBNavigator1.DataSource := DI_DfmDataModule1.DictioneryDataSource;
DBGrid1.Columns.Add;
DBGrid1.Columns[0].Field :=
DI_DfmDataModule1.DictioneryADOQuery.FieldByName('ID');
DBGrid1.Columns[0].Title.Caption :=
Trim(DI_DfmDataModule1.DictioneryADOQuery.FieldByName('ID').DisplayLabel);
DBGrid1.Columns[0].Title.AlignMent := taCenter;
DBGrid1.Columns.Add;
DBGrid1.Columns[1].Field :=
DI_DfmDataModule1.DictioneryADOQuery.FieldByName('DICTIONARY');
DBGrid1.Columns[1].Title.Caption :=
Trim(DI_DfmDataModule1.DictioneryADOQuery.FieldByName('DICTIONARY').DisplayLabel);
DBGrid1.Columns[1].Title.AlignMent := taCenter;
if (DI_DfmDataModule1.DictioneryADOQuery.FieldByName('DICTIONARY').DataType in
[ftString, ftWideString]) then
begin
BeforReplaceEdit.Enabled := True;
AfterReplaceEdit.Enabled := True;
ToolButton4.Enabled := True;
ToolButton1.Enabled := True;
end;
end;
//关闭==========================================================================
procedure TDI_DfmDBDictionery.CloseToolButtonClick(Sender: TObject);
begin
DI_DfmDataModule1.DictioneryADOQuery.Close;
Close;
end;
//输入按钮======================================================================
procedure TDI_DfmDBDictionery.ConfirmToolButtonClick(Sender: TObject);
begin
if IdentifyString = 'DBGrid' then
begin
DBGrid.SelectedField.AsVariant :=
DI_DfmDataModule1.DictioneryADOQuery.FieldByName('DICTIONARY').AsVariant;
end
else if IdentifyString = 'DBEdit' then
begin
DBEdit.Field.AsVariant :=
DI_DfmDataModule1.DictioneryADOQuery.FieldByName('DICTIONARY').AsVariant;
end;
DI_DfmDataModule1.DictioneryADOQuery.Close;
Close;
end;
//替换库中已有内容==============================================================
procedure TDI_DfmDBDictionery.ReplaceToolButtonClick(Sender: TObject);
var
CurrentRecordNumber: integer;
DictionaryExist: Boolean;
begin
if Trim(BeforReplaceEdit.Text) = '' then
Exit;
if Trim(AfterReplaceEdit.Text) = '' then
Exit;
DictionaryExist := False;
//替换字典中的内容=====================================
DI_DfmDataModule1.DictioneryADOQuery.DisableControls;
CurrentRecordNumber := DI_DfmDataModule1.DictioneryADOQuery.RecNo;
DI_DfmDataModule1.DictioneryADOQuery.First;
while not DI_DfmDataModule1.DictioneryADOQuery.Eof do
begin
DI_DfmDataModule1.DictioneryADOQuery.Edit;
if
(Trim(DI_DfmDataModule1.DictioneryADOQuery.FieldByName('DICTIONARY').AsString) = Trim(BeforReplaceEdit.Text)) then
begin
DI_DfmDataModule1.DictioneryADOQuery.FieldByName('DICTIONARY').AsString :=
AfterReplaceEdit.Text;
DictionaryExist := True;
end;
DI_DfmDataModule1.DictioneryADOQuery.Post;
DI_DfmDataModule1.DictioneryADOQuery.Next;
end;
DI_DfmDataModule1.DictioneryADOQuery.First;
while DI_DfmDataModule1.DictioneryADOQuery.RecNo <> CurrentRecordNumber do
DI_DfmDataModule1.DictioneryADOQuery.Next;
DI_DfmDataModule1.DictioneryADOQuery.EnableControls;
//替换库中的内容=========================================
if DictionaryExist = True then
begin
DI_DfmDataModule1.TTableADOQuery.DisableControls;
CurrentRecordNumber := DI_DfmDataModule1.TTableADOQuery.RecNo;
DI_DfmDataModule1.TTableADOQuery.First;
while not DI_DfmDataModule1.TTableADOQuery.Eof do
begin
DI_DfmDataModule1.TTableADOQuery.Edit;
if IdentifyString = 'DBGrid' then
if
(Trim(DI_DfmDataModule1.TTableADOQuery.FieldByName(DBGrid.SelectedField.FieldName).AsString) = Trim(BeforReplaceEdit.Text)) then
DI_DfmDataModule1.TTableADOQuery.FieldByName(DBGrid.SelectedField.FieldName).AsString := AfterReplaceEdit.Text
else if IdentifyString = 'DBEdit' then
if
Trim(DI_DfmDataModule1.TTableADOQuery.FieldByName(DBEdit.Field.FieldName).AsString) = Trim(BeforReplaceEdit.Text) then
DI_DfmDataModule1.TTableADOQuery.FieldByName(DBEdit.Field.FieldName).AsString := AfterReplaceEdit.Text;
DI_DfmDataModule1.TTableADOQuery.Post;
DI_DfmDataModule1.TTableADOQuery.Next;
end;
DI_DfmDataModule1.TTableADOQuery.First;
while DI_DfmDataModule1.TTableADOQuery.RecNo <> CurrentRecordNumber do
DI_DfmDataModule1.TTableADOQuery.Next;
DI_DfmDataModule1.TTableADOQuery.EnableControls;
end;
//共有部分====================================
DI_DfmDataModule1.DictioneryADOQuery.Close;
Close;
end;
//回车换行======================================================================
procedure TDI_DfmDBDictionery.DBGrid1KeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if Key = VK_RETURN then
begin
if dbgrid1.SelectedIndex = dbgrid1.Columns.Count - 1 then
begin
dbgrid1.SelectedIndex := 0;
if dbgrid1.DataSource.DataSet <> nil then
with dbgrid1.DataSource.DataSet do
begin
Next;
if EOF and CanModify then
Append;
end;
end
else
dbgrid1.SelectedIndex := dbgrid1.SelectedIndex + 1;
end;
end;
//定位按钮======================================================================
procedure TDI_DfmDBDictionery.FindToolButtonClick(Sender: TObject);
begin
if Trim(FindEdit.Text) = '' then
Exit;
if not DI_DfmDataModule1.DictioneryADOQuery.Locate('ID', '' +
Trim(FindEdit.Text) + '', []) then
Exit;
end;
//回车定位======================================================================
procedure TDI_DfmDBDictionery.FindEditKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
if Key = VK_RETURN then
FindToolButtonClick(nil);
end;
//快捷键========================================================================
procedure TDI_DfmDBDictionery.FormShortCut(var Msg: TWMKey;
var Handled: Boolean);
begin
if msg.CharCode = VK_F1 then
ConfirmToolButtonClick(nil);
if msg.CharCode = VK_ESCAPE then
CloseToolButtonClick(nil);
if msg.CharCode = VK_F2 then
ReplaceToolButtonClick(nil);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -