📄 u_conductitem.pas
字号:
unit U_ConductItem;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
HGrids, HDBGrids, TB97Tlbr, TB97Ctls, TB97, DBTables, Db, Menus;
type
TCompRecord = record
Code: integer;
Name: string;
end;
TFm_ConductItem = class(TForm)
DDS: TDataSource;
Dock: TDock97;
Tb97_Func: TToolbar97;
TbBtn_Edit: TToolbarButton97;
TbBtn_Add: TToolbarButton97;
TbBtn_Delete: TToolbarButton97;
TbSep01: TToolbarSep97;
TbBtn_Help: TToolbarButton97;
TbBtn_Exit: TToolbarButton97;
Grid: THDBGrid;
DQuery: TQuery;
DUpSQL: TUpdateSQL;
PPM: TPopupMenu;
PM_Add: TMenuItem;
PM_Edit: TMenuItem;
PM_Delete: TMenuItem;
PM_Z01: TMenuItem;
PM_Help: TMenuItem;
PM_Exit: TMenuItem;
TbBtn_Save: TToolbarButton97;
TbSep02: TToolbarSep97;
N1: TMenuItem;
PM_Save: TMenuItem;
DQueryI_PJDHAO: TIntegerField;
DQuerySI_ZBIAO: TSmallintField;
DQueryS_PJNRONG: TStringField;
TbBtn_Print: TToolbarButton97;
TbSp01: TToolbarSep97;
PM_Print: TMenuItem;
PM_Z03: TMenuItem;
procedure TbBtn_ExitClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TbBtn_AddClick(Sender: TObject);
procedure TbBtn_DeleteClick(Sender: TObject);
procedure TbBtn_HelpClick(Sender: TObject);
procedure DQueryBeforePost(DataSet: TDataSet);
procedure DQueryAfterPost(DataSet: TDataSet);
procedure TbBtn_EditClick(Sender: TObject);
procedure TbBtn_SaveClick(Sender: TObject);
procedure DQuerySI_ZBIAOGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure DQuerySI_ZBIAOSetText(Sender: TField; const Text: String);
procedure GridDblClick(Sender: TObject);
procedure GridKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure TbBtn_PrintClick(Sender: TObject);
private
public
AComp: array of TCompRecord;
end;
var
Fm_ConductItem: TFm_ConductItem;
procedure Show_ConductItem;
implementation
uses U_Main, U_GlobalProc, U_GlobalVar, U_DM, U_Print;
{$R *.DFM}
procedure Show_ConductItem;
var
i: integer;
SQuery: TQuery;
begin
for i := Fm_Main.MDIChildCount - 1 downto 0 do
begin
if (Fm_Main.MDIChildren[i].Name <> 'Fm_Wizard') and
(Fm_Main.MDIChildren[i].Name <> 'Fm_ConductItem') then
Fm_Main.MDIChildren[i].Close;
end;
if not Assigned(Fm_ConductItem) then
begin
Fm_ConductItem := TFm_ConductItem.Create(Application);
with Fm_ConductItem do
begin
SQuery := TQuery.Create(Application);
with SQuery do
try
DataBaseName := SysDBase;
SQL.Text := 'SELECT * FROM dict3 WHERE tablename = ''PXBXZB'' ' +
'AND fieldname = ''SI_ZBIAO'' ORDER BY fieldcode';
Open;
i := 1;
while not Eof do
begin
SetLength(AComp, i);
AComp[i-1].Code := FieldByName('FieldCode').AsInteger;
AComp[i-1].Name := FieldByName('FieldValue').AsString;
Grid.Columns[1].PickList.Add(AComp[i-1].Name);
Inc(i);
Next;
end;
finally
Close;
Free;
end;
DQuery.Open;
if DQuery.IsEmpty then
begin
Grid.Options := Grid.Options - [tgEditing];
TbBtn_Edit.Enabled := False;
TbBtn_Delete.Enabled := False;
PM_Edit.Enabled := False;
PM_Delete.Enabled := False;
end;
RefreshGridStyle(Grid);
end;
end;
with Fm_ConductItem do
begin
if WindowState <> wsMaximized then
WindowState := wsMaximized;
Show;
SetFocus;
end;
end;
procedure TFm_ConductItem.TbBtn_ExitClick(Sender: TObject);
begin
Close;
end;
procedure TFm_ConductItem.FormClose(Sender: TObject;
var Action: TCloseAction);
var
i: integer;
begin
DQuery.Close;
Action := caFree;
for i := 0 to Length(aComp) - 1 do
aComp[i].Name := '';
SetLength(AComp, 0);
Fm_ConductItem := nil;
end;
procedure TFm_ConductItem.TbBtn_AddClick(Sender: TObject);
var
tmOrder: integer;
begin
tmOrder := 1;
try
with DQuery do
begin
DisableControls;
First;
while not Eof do
begin
if tmOrder <> FieldByName('i_pjdhao').AsInteger then
Break;
Inc(tmOrder);
Next;
end;
if Eof then
Append
else
Insert;
FieldByName('i_pjdhao').AsInteger := tmOrder;
Grid.Options := Grid.Options + [tgEditing];
end;
finally
DQuery.EnableControls;
end;
end;
procedure TFm_ConductItem.TbBtn_DeleteClick(Sender: TObject);
begin
if not U_GlobalProc.Show_ConfirmMess('真的删除当前条目吗') then
Exit;
DQuery.Delete;
DQuery.ApplyUpdates;
if DQuery.IsEmpty then
begin
Grid.Options := Grid.Options - [tgEditing];
TbBtn_Edit.Enabled := False;
TbBtn_Delete.Enabled := False;
PM_Edit.Enabled := False;
PM_Delete.Enabled := False;
end;
end;
procedure TFm_ConductItem.TbBtn_HelpClick(Sender: TObject);
begin //
end;
procedure TFm_ConductItem.DQueryBeforePost(DataSet: TDataSet);
begin //
with DQuery do
if Trim(FieldByName('s_pjnrong').AsString) = '' then
begin
if (State = dsInsert) or ((State = dsEdit) and
(not U_GlobalProc.Show_ConfirmMess(
'词条内容被修改为空值,是否存盘?'))) then
begin
Cancel;
if IsEmpty then
Grid.Options := Grid.Options - [tgEditing];
Abort;
end;
end;
end;
procedure TFm_ConductItem.DQueryAfterPost(DataSet: TDataSet);
begin
if not DQuery.IsEmpty then
begin
TbBtn_Edit.Enabled := True;
TbBtn_Delete.Enabled := True;
PM_Edit.Enabled := True;
PM_Delete.Enabled := True;
end else
Grid.Options := Grid.Options - [tgEditing];
DQuery.ApplyUpdates;
end;
procedure TFm_ConductItem.TbBtn_EditClick(Sender: TObject);
begin
Grid.Col := 2;
DQuery.Edit;
end;
procedure TFm_ConductItem.TbBtn_SaveClick(Sender: TObject);
begin //
if DQuery.State in [dsEdit, dsInsert] then
DQuery.Post;
end;
procedure TFm_ConductItem.DQuerySI_ZBIAOGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
var
tmCode, i: integer;
begin//
tmCode := Sender.AsInteger;
for i := 0 to Length(aComp) - 1 do
begin
if tmCode = aComp[i].Code then
Text := aComp[i].Name;
end;
end;
procedure TFm_ConductItem.DQuerySI_ZBIAOSetText(Sender: TField;
const Text: String);
var
i: integer;
begin//
for i := 0 to Length(aComp) - 1 do
begin
if Text = aComp[i].Name then
Sender.AsInteger := aComp[i].Code ;
end;
end;
procedure TFm_ConductItem.GridDblClick(Sender: TObject);
var
tmI: integer;
begin
if Grid.Col = 2 then
DQuery.Edit;
if (DQuery.State in [dsEdit, dsInsert]) and
(Grid.Col = 2) then
begin
tmI := DQuery.FieldByName('SI_ZBIAO').AsInteger + 1;
if tmI > Length(AComp) then
tmI := 1;
DQuery.FieldByName('SI_ZBIAO').AsInteger := tmI;
end;
end;
procedure TFm_ConductItem.GridKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
tmI: integer;
begin
if (Key = VK_SPACE) and (Grid.Col = 2) then
DQuery.Edit;
if (DQuery.State in [dsEdit, dsInsert]) and
(Key = VK_SPACE) and (Grid.Col = 2) then
begin
tmI := DQuery.FieldByName('SI_ZBIAO').AsInteger + 1;
if tmI > Length(AComp) then
tmI := 1;
DQuery.FieldByName('SI_ZBIAO').AsInteger := tmI;
Key := 0;
end;
end;
procedure TFm_ConductItem.TbBtn_PrintClick(Sender: TObject);
begin
Show_Print(Grid);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -