?? u_studentsearch.pas
字號:
unit U_StudentSearch;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
HGrids, HDBGrids, TB97Tlbr, TB97Ctls, TB97, DBTables, Db, Menus,
ComCtrls, ExtCtrls, ImgList;
type
TFm_StudentSearch = class(TForm)
MDS: TDataSource;
Dock: TDock97;
Tb97_Func: TToolbar97;
TbBtn_Code: TToolbarButton97;
TbBtn_Name: TToolbarButton97;
TbBtn_Help: TToolbarButton97;
TbBtn_Exit: TToolbarButton97;
TbSep02: TToolbarSep97;
MQuery: TQuery;
MUpSQL: TUpdateSQL;
PPM: TPopupMenu;
PM_Name: TMenuItem;
PM_Code: TMenuItem;
PM_Z01: TMenuItem;
PM_Table: TMenuItem;
PM_Help: TMenuItem;
PM_Exit: TMenuItem;
PM_Z02: TMenuItem;
MTrView: TTreeView;
Spl_Main: TSplitter;
Pnl_DAn: TPanel;
MGrid: THDBGrid;
Spl_Fu: TSplitter;
TbCtrl_Detail: TTabControl;
TbBtn_Table: TToolbarButton97;
ToolbarSep971: TToolbarSep97;
DtQuery: TQuery;
DtDS: TDataSource;
DtGrid: THDBGrid;
ImageList: TImageList;
MQueryS_XHAO: TStringField;
MQueryS_XMING: TStringField;
MQuerySI_XBIE: TSmallintField;
MQuerySI_MZU: TSmallintField;
MQueryD_CSRQI: TDateField;
MQueryS_ZPWJIAN: TStringField;
MQueryS_JGUAN: TStringField;
MQueryS_XXZZHI: TStringField;
MQueryS_LXFSHI: TStringField;
MQueryD_RDSJIAN: TDateField;
MQueryD_RTSJIAN: TDateField;
MQueryD_RXSJIAN: TDateField;
MQueryS_BYXXIAO: TStringField;
MQueryS_BJHAO: TStringField;
TbBtn_Result: TToolbarButton97;
PM_Result: TMenuItem;
TbBtn_Print: TToolbarButton97;
TbSp01: TToolbarSep97;
PM_Print: TMenuItem;
PM_Z03: TMenuItem;
procedure TbBtn_ExitClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Spl_MainCanResize(Sender: TObject; var NewSize: Integer;
var Accept: Boolean);
procedure Spl_FuCanResize(Sender: TObject; var NewSize: Integer;
var Accept: Boolean);
procedure MTrViewGetImageIndex(Sender: TObject; Node: TTreeNode);
procedure MTrViewGetSelectedIndex(Sender: TObject; Node: TTreeNode);
procedure MTrViewChange(Sender: TObject; Node: TTreeNode);
procedure MQuerySI_XBIEGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
procedure MQuerySI_XBIESetText(Sender: TField; const Text: string);
procedure TbCtrl_DetailChange(Sender: TObject);
procedure QueryGetText(Sender: TField; var Text: String; DisplayText: Boolean);
procedure QuerySetText(Sender: TField; const Text: string);
procedure MQueryAfterScroll(DataSet: TDataSet);
procedure TbBtn_TableClick(Sender: TObject);
procedure TbBtn_HelpClick(Sender: TObject);
procedure MQueryAfterOpen(DataSet: TDataSet);
procedure TbBtn_NameClick(Sender: TObject);
procedure MQueryD_CSRQIGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
procedure TbBtn_PrintClick(Sender: TObject);
private
public
end;
var
Fm_StudentSearch: TFm_StudentSearch;
procedure Show_StudentSearch;
implementation
uses U_Main, U_GlobalProc, U_GlobalVar, U_DM, U_SingleSearch, U_Print;
{$R *.DFM}
procedure Show_StudentSearch;
var
i: integer;
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_StudentSearch') then
Fm_Main.MDIChildren[i].Close;
end;
if not Assigned(Fm_StudentSearch) then
begin
Fm_StudentSearch := TFm_StudentSearch.Create(Application);
with Fm_StudentSearch do
begin
MQuery.Open;
ReSetGridColumns(MGrid, 'XSJBXX',
MQuerySI_XBIEGetText, MQuerySI_XBIESetText);
RefreshGridStyle(MGrid);
RefreshGridStyle(DtGrid);
MakeGradeTree(MTrView, 1, True);
MTrView.Items[0].Selected := True;
TbCtrl_Detail.TabIndex := 0;
TbCtrl_DetailChange(nil);
end;
end;
with Fm_StudentSearch do
begin
if WindowState <> wsMaximized then
WindowState := wsMaximized;
Show;
SetFocus;
end;
end;
procedure TFm_StudentSearch.TbBtn_ExitClick(Sender: TObject);
begin
Close;
end;
procedure TFm_StudentSearch.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
MQuery.Close;
Action := caFree;
Fm_StudentSearch := nil;
end;
procedure TFm_StudentSearch.Spl_MainCanResize(Sender: TObject;
var NewSize: Integer; var Accept: Boolean);
begin
if NewSize < 8 then
Accept := False;
end;
procedure TFm_StudentSearch.Spl_FuCanResize(Sender: TObject;
var NewSize: Integer; var Accept: Boolean);
begin
if NewSize < 8 then
Accept := False;
end;
procedure TFm_StudentSearch.MTrViewGetImageIndex(Sender: TObject;
Node: TTreeNode);
begin //
if Node.HasChildren then
begin
if Node.Expanded then
Node.ImageIndex := 2
else
Node.ImageIndex := 1;
end
else
begin
if Node.Level = 0 then
Node.ImageIndex := 1
else
Node.ImageIndex := 0;
end;
end;
procedure TFm_StudentSearch.MTrViewGetSelectedIndex(Sender: TObject;
Node: TTreeNode);
begin
if Node.HasChildren then
begin
if Node.Expanded then
Node.SelectedIndex := 5
else
Node.SelectedIndex := 4;
end
else
begin
if Node.Level = 0 then
Node.SelectedIndex := 4
else
Node.SelectedIndex := 3;
end;
end;
procedure TFm_StudentSearch.MTrViewChange(Sender: TObject;
Node: TTreeNode);
var
tmS: string;
begin
with MQuery do
try
DisableControls;
Close;
SQL.Text := 'SELECT * FROM xsjbxx';
if (Integer(Node.Data) > 0) then
begin
if (Integer(Node.Data) < 9999) then
begin // 年級
tmS := S_SchoolCode + IntToStr(Integer(Node.Data)) + '%';
SQL.Text := SQL.Text + 'WHERE s_xhao LIKE ''' + tmS + '''';
end
else
begin // 班級
tmS := IntFormatStr(Integer(Node.Data), 9);
SQL.Text := SQL.Text + 'WHERE s_bjhao = ''' + tmS + '''';
end;
end;
Open;
if IsEmpty then
MQueryAfterScroll(nil);
if (Integer(Node.Data) = 1) and (w_curTerm = 1) and
(not MQuery.IsEmpty) then
begin
TbBtn_Table.Enabled := True;
PM_Table.Enabled := True;
TbBtn_Result.Enabled := True;
PM_Result.Enabled := True;
end
else
begin
TbBtn_Table.Enabled := False;
PM_Table.Enabled := False;
TbBtn_Result.Enabled := False;
PM_Result.Enabled := False;
end;
finally
EnableControls;
end;
end;
procedure TFm_StudentSearch.MQuerySI_XBIEGetText(Sender: TField;
var Text: string; DisplayText: Boolean);
var
aList: TStrings;
i: integer;
begin
aList := nil;
for i := 0 to MGrid.Columns.Count - 1 do
begin
if MGrid.Columns[i].FieldName = Sender.FieldName then
begin
aList := MGrid.Columns[i].PickList;
Break;
end;
end;
if Assigned(aList) then
begin
for i := 0 to aList.Count - 1 do
if Sender.AsInteger = Integer(aList.Objects[i]) then
begin
Text := aList.Strings[i];
break;
end;
end;
end;
procedure TFm_StudentSearch.MQuerySI_XBIESetText(Sender: TField;
const Text: string);
var
aList: TStrings;
i: integer;
begin
aList := nil;
for i := 0 to MGrid.Columns.Count - 1 do
begin
if MGrid.Columns[i].FieldName = Sender.FieldName then
begin
aList := MGrid.Columns[i].PickList;
Break;
end;
end;
if Assigned(aList) then
begin
for i := 0 to aList.Count - 1 do
if Text = aList.Strings[i] then
begin
Sender.AsInteger := Integer(aList.Objects[i]);
break;
end;
end;
end;
procedure TFm_StudentSearch.TbCtrl_DetailChange(Sender: TObject);
Label RepeatHere;
var
DataSetName, StdCode: string;
aQuery: TQuery;
aColumn: THColumn;
tmSQL, tmColName, tmStrName, tmValueName: string;
begin //
StdCode := Trim(MQuery.FieldByName('s_xhao').AsString);
case TbCtrl_Detail.TabIndex of
0: DataSetName := 'XSJTCY';
1: DataSetName := 'XSRXCJ';
2: DataSetName := 'XSXJBH';
3: DataSetName := 'XSJCQK';
4: DataSetName := 'XSKQTJ';
5: DataSetName := 'XSPXBX';
6: DataSetName := 'XSSTZK';
7: DataSetName := 'XSGXFZ';
8: DataSetName := 'XSCJHD';
9: DataSetName := 'XSQMPY';
10: DataSetName := 'XSYBPJ';
11: DataSetName := 'XSSZFQK';
end;
with DtQuery do
try
DisableControls;
Close;
SQL.Text := 'SELECT * FROM ' + DataSetName + ' WHERE s_xhao = ''' +
StdCode + '''';
Open;
RefreshGridColumns(DtGrid, DataSetName, QueryGetText, QuerySetText);
tmSQL := '';
case TbCtrl_Detail.TabIndex of
1:
begin
tmSQL := 'SELECT * FROM xsrxkm WHERE s_kmhao LIKE ''' +
IntFormatStr(W_CurYear, 2) + '%''';
tmColName := 's_kmhao';
tmStrName := 's_rxkmu';
tmValueName := 's_kmhao';
end;
5:
begin
tmSQL := 'SELECT * FROM pxbxzb';
tmColName := 'i_pjdhao';
tmStrName := 's_pjnrong';
tmValueName := 'i_pjdhao';
end;
7:
begin
tmSQL := 'SELECT * FROM gxfznr';
tmColName := 'i_pjdhao';
tmStrName := 's_pjnrong';
tmValueName := 'i_pjdhao';
end;
9:
begin
tmSQL := 'SELECT * FROM pyctnr';
tmColName := 'i_pydhao';
tmStrName := 's_pynr';
tmValueName := 'i_pydhao';
end;
10:
begin
tmSQL := 'SELECT * FROM kc';
tmColName := 's_bqjhkmu';
tmStrName := 's_kcmcheng';
tmValueName := 's_kcdhao';
end;
end;
if tmSQL <> '' then
begin
aQuery := TQuery.Create(Application);
with aQuery do
try
DataBaseName := DataDBase;
RepeatHere:
SQL.Text := tmSQL;
Open;
aColumn := DtGrid.FindFirstColumn(tmColName);
if Assigned(aColumn) then
begin
while not Eof do
begin
aColumn.PickList.AddObject(FieldByName(tmStrName).AsString,
Pointer(FieldByName(tmValueName).AsInteger));
Next;
end;
aColumn.Alignment := taLeftJustify;
aColumn.Field.OnGetText := QueryGetText;
aColumn.Field.OnSetText := QuerySetText;
if (TbCtrl_Detail.TabIndex = 10) and
(tmColName = 's_bqjhkmu') then
begin
tmSQL := 'SELECT * FROM kc';
tmColName := 's_jbjdkmu';
tmStrName := 's_kcmcheng';
tmValueName := 's_kcdhao';
Close;
Goto RepeatHere;
end;
end;
Close;
finally
Close;
Free;
end;
end;
finally
while ControlsDisabled do
EnableControls;
end;
end;
procedure TFm_StudentSearch.QueryGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
DataSetGetText(DtGrid, Sender, Text, DisplayText);
end;
procedure TFm_StudentSearch.QuerySetText(Sender: TField;
const Text: string);
begin
DataSetSetText(DtGrid, Sender, Text);
end;
procedure TFm_StudentSearch.MQueryAfterScroll(DataSet: TDataSet);
var
DataSetName, StdCode: string;
begin //
//TbCtrl_DetailChange(nil);
StdCode := Trim(MQuery.FieldByName('s_xhao').AsString);
case TbCtrl_Detail.TabIndex of
0: DataSetName := 'XSJTCY';
1: DataSetName := 'XSRXCJ';
2: DataSetName := 'XSXJBH';
3: DataSetName := 'XSJCQK';
4: DataSetName := 'XSKQTJ';
5: DataSetName := 'XSPXBX';
6: DataSetName := 'XSSTZK';
7: DataSetName := 'XSGXFZ';
8: DataSetName := 'XSCJHD';
9: DataSetName := 'XSQMPY';
10: DataSetName := 'XSYBPJ';
11: DataSetName := 'XSSZFQK';
end;
with DtQuery do
try
DisableControls;
Close;
SQL.Text := 'SELECT * FROM ' + DataSetName + ' WHERE s_xhao = ''' +
StdCode + '''';
Open;
RefreshDataSetField(DtGrid, QueryGetText, QuerySetText);
finally
while ControlsDisabled do
EnableControls;
end;
end;
procedure TFm_StudentSearch.TbBtn_TableClick(Sender: TObject);
begin //
end;
procedure TFm_StudentSearch.TbBtn_HelpClick(Sender: TObject);
begin //
end;
procedure TFm_StudentSearch.MQueryAfterOpen(DataSet: TDataSet);
begin
if MQuery.IsEmpty then
begin
TbBtn_Code.Enabled := False;
TbBtn_Table.Enabled := False;
PM_Code.Enabled := False;
PM_Table.Enabled := False;
end
else
begin
TbBtn_Code.Enabled := True;
TbBtn_Table.Enabled := True;
PM_Code.Enabled := True;
PM_Table.Enabled := True;
end;
end;
procedure TFm_StudentSearch.TbBtn_NameClick(Sender: TObject);
var
pName: string;
pBlur: Boolean;
aMode: integer;
begin
MTrView.OnChange := nil;
MTrView.Selected := MTrView.Items[0];
MTrView.OnChange := MTrViewChange;
if Sender = TbBtn_Name then
aMode := 1
else
aMode := 2;
if U_SingleSearch.Show_SingleSearch(pName, pBlur, aMode) then
begin
with MQuery do
try
DisableControls;
Close;
SQL.Text := 'SELECT * FROM xsjbxx';
if aMode = 1 then
begin
if pBlur then
SQL.Add('WHERE s_xming LIKE ''%' + pName + '%'' ORDER BY s_xming')
else
SQL.Add('WHERE s_xming = ''' + pName + '%''');
end else
SQL.Add('WHERE s_xhao = ''' + pName + '%''');
Open;
if IsEmpty then
MQueryAfterScroll(nil);
if (not MQuery.IsEmpty) then
begin
TbBtn_Table.Enabled := True;
PM_Table.Enabled := True;
TbBtn_Result.Enabled := True;
PM_Result.Enabled := True;
end
else
begin
TbBtn_Table.Enabled := False;
PM_Table.Enabled := False;
TbBtn_Result.Enabled := False;
PM_Result.Enabled := False;
end;
finally
EnableControls;
end;
end;
end;
procedure TFm_StudentSearch.MQueryD_CSRQIGetText(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
if Sender.AsFloat < 10959 then
Text := ''
else
Text := FormatDateTime('ddddd', Sender.AsDateTime);
end;
procedure TFm_StudentSearch.TbBtn_PrintClick(Sender: TObject);
begin//
Show_Print(MGrid);
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -