📄 ss_xxjs.pas
字号:
{*******************************************************}
{ }
{ 信息接收情况 }
{ }
{ 中软金马公司版权所有。2002.12前 }
{ }
{ 编制:中软金马邮资票品项目开发组 }
{ }
{ }
{*******************************************************}
(*
本模块在省级系统管理模块里面调用。
*)
unit SS_XXJS;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, DBCtrls, ComCtrls, Grids, DBGrids, ExtCtrls, RXDBCtrl,
RXCtrls, Db, DBTables, FieldComboBox, Menus, Mask, ToolEdit;
type
TFrm_XXJS = class(TForm)
pnl_Body: TPanel;
pnl_Title: TPanel;
lbl_Title: TRxLabel;
DWMC: TLabel;
pnl_ShowType: TPanel;
lbl_From_Date: TLabel;
rb_To_Date: TLabel;
rb_Sort_Date: TRadioButton;
rb_Sort_Info: TRadioButton;
pnl_ShowType2: TPanel;
rb_Show_See: TRadioButton;
rb_NoShow_See: TRadioButton;
rxdbg_Info: TRxDBGrid;
dbg_MXInfo: TDBGrid;
qry_Info: TQuery;
ds_Info: TDataSource;
fcb_Info: TFieldComboBox;
qry_Tmp: TQuery;
qry_MXInfo: TQuery;
ds_MXInfo: TDataSource;
upSQL_MXInfo: TUpdateSQL;
pnl_Bottom: TPanel;
bbtn_AllDel: TBitBtn;
bbtn_Del: TBitBtn;
bbtn_Set_AllRead: TBitBtn;
bbtn_Set_Read: TBitBtn;
bbtn_Close: TBitBtn;
pm_Info: TPopupMenu;
pmi_main: TMenuItem;
pmi_Line: TMenuItem;
pmi_MX: TMenuItem;
bbtn_Set_UnRead: TBitBtn;
bbtn_Set_AllUnRead: TBitBtn;
dtp_From_Date: TDateEdit;
dtp_To_Date: TDateEdit;
lbl_Main: TLabel;
lbl_MX: TLabel;
pnl_Insert_Bottom: TPanel;
dbm_SFNR: TDBMemo;
procedure rb_Sort_DateClick(Sender: TObject);
procedure rb_Sort_InfoClick(Sender: TObject);
procedure qry_InfoAfterScroll(DataSet: TDataSet);
procedure Info_Change(Sender: TObject);
procedure rxdbg_InfoDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure dbg_MXInfoDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure bbtn_MX_Set_ReadClick(Sender: TObject);
procedure bbtn_MX_Set_AllReadClick(Sender: TObject);
procedure bbtn_MX_DelClick(Sender: TObject);
procedure pmi_mainClick(Sender: TObject);
procedure pmi_MXClick(Sender: TObject);
procedure bbtn_AllDelClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure bbtn_Set_UnReadClick(Sender: TObject);
procedure bbtn_Set_AllUnReadClick(Sender: TObject);
procedure pmi_Main_SetReadClick(Sender: TObject);
procedure pmi_Main_SetAllReadClick(Sender: TObject);
procedure pmi_Main_SetUnReadClick(Sender: TObject);
procedure pmi_Main_SetAllUnReadClick(Sender: TObject);
procedure pmi_Main_DelClick(Sender: TObject);
procedure pmi_Main_DelAllClick(Sender: TObject);
procedure pmi_MX_SetReadClick(Sender: TObject);
procedure pmi_MX_SetAllReadClick(Sender: TObject);
procedure pmi_MX_SetUnReadClick(Sender: TObject);
procedure pmi_MX_SetAllUnReadClick(Sender: TObject);
procedure pmi_MX_DelClick(Sender: TObject);
procedure pmi_MX_DelAllClick(Sender: TObject);
procedure dtp_From_DateAcceptDate(Sender: TObject;
var ADate: TDateTime; var Action: Boolean);
procedure dtp_From_DateExit(Sender: TObject);
procedure dtp_To_DateExit(Sender: TObject);
procedure dtp_To_DateAcceptDate(Sender: TObject; var ADate: TDateTime;
var Action: Boolean); {显示要查找的信息}
private
{ Private declarations }
procedure Get_Info;
procedure Create_Info; {产生显示的信息}
function Get_Server_Date: string; {取得服务器系统时间}
procedure Set_Read; {将主表中一条记录标记为已读}
procedure Set_AllRead; {将主表中全部当前记录标记为已读}
procedure Set_UnRead; {设置主表中的一条数据为未读}
procedure Set_AllUnRead; {设置主表中的所有数据为未读}
procedure Del; {删除主表记录}
procedure Del_All; {删除所有主表记录}
function Get_SQL_Part: string; {取得SQL的后半部分}
procedure SetMX_Read; {设置明细内容已读}
procedure SetMX_ALLRead; {设置明细所有为已读}
procedure SetMX_UnRead; {设置从表当前数据为未读}
procedure SetMX_AllUnRead; {设置从表所有数据为未读}
procedure DelMX; {删除当前明细记录}
procedure DelMX_All; {删除当前所有明细记录}
public
{ Public declarations }
end;
var
Frm_XXJS: TFrm_XXJS;
procedure Show_SS_XXJS;
implementation
{$R *.DFM}
uses datas,Pub;
{省级信息接收模块,主要功能是对信息收发情况提示主表(TG_XXSFQKTSZB)、信息收发情况提示明细表(TG_XXSFQKTSMXB)、
状态代码表(TG_ZTDMB)进行简单的修改、删除操作。
涉及数据库表:
信息收发情况提示主表(TG_XXSFQKTSZB)
信息收发情况提示明细表(TG_XXSFQKTSMXB)
状态代码表(TG_ZTDMB)
石玉琢 2001.09.24}
var
Do_What: Integer; {进行什么操作,0:设为已读;1:全部设为已读;2:设为未读;3:全部设为未读;4:删除;5:全部删除} {}
{显示信息接收情况}
procedure Show_SS_XXJS;
begin
with TFrm_XXJS.Create(Application) do
try
ShowModal;
finally
Free;
end;
end;
{-------------------------------------------------------------------------------}
procedure TFrm_XXJS.FormCreate(Sender: TObject);
var
l_Date: TDateTime;
begin
DWMC.Caption := '使用单位:' + VG_UnitName;
qry_Info.Filter := 'GHZT = ''0''';
qry_MXInfo.Filter := 'GHZT = ''0''';
l_Date := StrToDate(Get_Server_Date);
dtp_From_Date.Date := l_Date;
dtp_To_Date.Date := l_Date;
Get_Server_Date;
Create_Info;
Get_Info;
end;
{-------------------------------------------------------------------------------}
{取得服务器系统时间}
function TFrm_XXJS.Get_Server_Date: string;
begin
with qry_Tmp do
begin
Close;
SQL.Text := 'Select sysDate From Dual';
Open;
Result := FormatDateTime('yyyy-mm-dd', FieldByName('sysDate').AsDateTime);
end;
end;
{-------------------------------------------------------------------------------}
{按照日期显示}
procedure TFrm_XXJS.rb_Sort_DateClick(Sender: TObject);
begin
dtp_From_Date.Enabled := True;
dtp_To_Date.Enabled := True;
fcb_Info.Enabled := False;
Get_Info;
end;
{-------------------------------------------------------------------------------}
{按照信息显示}
procedure TFrm_XXJS.rb_Sort_InfoClick(Sender: TObject);
begin
dtp_From_Date.Enabled := False;
dtp_To_Date.Enabled := False;
fcb_Info.Enabled := True;
Get_Info;
end;
{-------------------------------------------------------------------------------}
{时间选择改变}
procedure TFrm_XXJS.dtp_From_DateAcceptDate(Sender: TObject;
var ADate: TDateTime; var Action: Boolean);
begin
Info_Change(Sender);
end;
procedure TFrm_XXJS.dtp_To_DateAcceptDate(Sender: TObject;
var ADate: TDateTime; var Action: Boolean);
begin
Info_Change(Sender);
end;
procedure TFrm_XXJS.dtp_From_DateExit(Sender: TObject);
begin
try
StrToDate(dtp_From_Date.Text);
except
CHQMsgBox('请输入合法日期!');
dtp_From_Date.SetFocus;
Exit;
end;
Info_Change(Sender);
end;
procedure TFrm_XXJS.dtp_To_DateExit(Sender: TObject);
begin
try
StrToDate(dtp_To_Date.Text);
except
CHQMsgBox('请输入合法日期!');
dtp_To_Date.SetFocus;
Exit;
end;
Info_Change(Sender);
end;
{-------------------------------------------------------------------------------}
{显示要查找的信息}
procedure TFrm_XXJS.Info_Change(Sender: TObject);
begin
Get_Info; {根据需求得到要查找的信息}
end;
{-------------------------------------------------------------------------------}
{根据需求得到要查找的信息}
procedure TFrm_XXJS.Get_Info;
var
SQLString: string;
begin
SQLString := 'Select XXDM,SFRQ,XXMC,GHZT From TG_XXSFQKTSZB where FSJSBJ=''0''';
if rb_Sort_Date.Checked = True then
{按日期显示}
SQLString := SQLString + ' and SFRQ>=''' + FormatDateTime('yyyy-mm-dd', dtp_From_Date.Date) +
''' and SFRQ<=''' + FormatDateTime('yyyy-mm-dd', dtp_To_Date.Date) + ''''
else
{按信息显示}
SQLString := SQLString + ' and XXDM=''' + fcb_Info.FieldString + '''';
{是否只显示未勾核信息}
if rb_NoShow_See.Checked = True then
begin
SQLString := SQLString + ' and GHZT = ''0''';
qry_Info.Filtered := True;
qry_MXInfo.Filtered := True;
end
else
begin
qry_Info.Filtered := False;
qry_MXInfo.Filtered := False;
end;
with qry_Info do
begin
Close;
SQL.Text := SQLString + ' order by XXDM';
Open;
end;
qry_InfoAfterScroll(nil);
end;
{-------------------------------------------------------------------------------}
{绘制已勾核和未勾核信息,分两种情况显示}
procedure TFrm_XXJS.rxdbg_InfoDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if qry_Info.FieldByName('GHZT').AsString = '1' then
if (gdSelected in State) and (rxdbg_Info.Focused = True) then
rxdbg_Info.Canvas.Font.Color := clWhite
else
rxdbg_Info.Canvas.Font.Color := clTeal; //$00A56E3A;
rxdbg_Info.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
{-------------------------------------------------------------------------------}
{绘制已勾核和未勾核信息,分两种情况显示}
procedure TFrm_XXJS.dbg_MXInfoDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if qry_MXInfo.FieldByName('GHZT').AsString = '1' then
if (gdSelected in State) and (dbg_MXInfo.Focused = True) then
dbg_MXInfo.Canvas.Font.Color := clWhite
else //if gdFocused in State then
dbg_MXInfo.Canvas.Font.Color := clTeal; //$00A56E3A;
dbg_MXInfo.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
{-------------------------------------------------------------------------------}
{产生显示的信息}
procedure TFrm_XXJS.Create_Info;
begin
fcb_Info.ClearAll;
with qry_Tmp do
begin
Close;
SQL.Text := 'Select distinct XXDM,XXMC from TG_XXSFQKTSZB where FSJSBJ=''0''';
Open;
while not Eof do
begin
fcb_Info.Items.Add(FieldByName('XXMC').AsString);
fcb_Info.FieldItems.Add(FieldByName('XXDM').AsString);
Next;
end;
end;
end;
{-------------------------------------------------------------------------------}
{主表记录滚动,刷新子表记录}
procedure TFrm_XXJS.qry_InfoAfterScroll(DataSet: TDataSet);
var
l_XXDM, l_SFRQ: string;
SQLString: string;
begin
l_XXDM := qry_Info.FieldByName('XXDM').AsString;
l_SFRQ := qry_Info.FieldByName('SFRQ').AsString;
SQLString := 'Select a.XXDM,a.SFRQ,a.XH,a.SFSJ,b.XGMC,a.SFNR,a.GHZT From TG_XXSFQKTSMXB a,TG_ZTDMB b '#13#10 +
'where b.ZT(+)=a.XGZT and FSJSBJ=''0'' ' +
' and XXDM=''' + l_XXDM + ''' and SFRQ=''' + l_SFRQ + '''';
{是否只显示为勾核信息}
if rb_NoShow_See.Checked = True then
SQLString := SQLString + ' and GHZT = ''0''';
with qry_MXInfo do
begin
Close;
SQL.Text := SQLString + ' order by XH';
Open;
end;
end;
{-------------------------------------------------------------------------------}
{设置明细内容已读}
procedure TFrm_XXJS.SetMX_Read;
begin
{更新当前的记录,设置为已读}
with qry_MXInfo do
begin
Edit;
FieldByName('GHZT').AsString := '1';
ApplyUpdates;
end;
{查找数据库,看是否存在未读记录,如果不存在,则更新主表勾核标志}
with qry_Tmp do
begin
Close;
SQL.Text := 'Select * From TG_XXSFQKTSMXB where GHZT=''0'''#13#10 +
' and XXDM =''' + qry_Info.FieldByName('XXDM').AsString +
''' and SFRQ=''' + qry_Info.FieldByName('SFRQ').AsString + '''';
Open;
if IsEmpty = True then
with qry_Info do
begin
Edit;
FieldByName('GHZT').AsString := '1';
ApplyUpdates;
end;
end;
end;
{-------------------------------------------------------------------------------}
{设置明细所有为已读}
procedure TFrm_XXJS.SetMX_ALLRead;
var
l_XXDM, l_SFRQ: string;
l_XH: Integer;
begin
l_XXDM := qry_Info.FieldByName('XXDM').AsString;
l_SFRQ := qry_Info.FieldByName('SFRQ').AsString;
{更新数据库中从表}
with qry_Tmp do
begin
Close;
SQL.Text := 'Update TG_XXSFQKTSMXB Set GHZT=''1'' where FSJSBJ=''0'' and XXDM=''' + l_XXDM + ''' and SFRQ=''' + l_SFRQ + '''';
ExecSQL;
end;
{更新主表}
with qry_Info do
begin
Edit;
FieldByName('GHZT').AsString := '1';
ApplyUpdates;
end;
{刷新从表}
l_XH := qry_MXInfo.FieldByName('XH').AsInteger;
qry_InfoAfterScroll(nil);
qry_MXInfo.Locate('XH', l_XH, []);
end;
{-------------------------------------------------------------------------------}
{设置从表当前数据为未读}
procedure TFrm_XXJS.SetMX_UnRead;
begin
{更新当前的记录,设置为未读}
with qry_MXInfo do
begin
Edit;
FieldByName('GHZT').AsString := '0';
ApplyUpdates;
end;
{从表中有一条数据设置为未读,就需要将主表中数据设置为未读}
with qry_Info do
begin
Edit;
FieldByName('GHZT').AsString := '0';
ApplyUpdates;
end;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -