📄 accountfrm.pas
字号:
unit AccountFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ChildFrm, Buttons, ExtCtrls, StdCtrls, DB, ADODB, Grids, DBGrids,
ComCtrls;
type
TAccountForm = class(TChildForm)
Panel2: TPanel;
Panel3: TPanel;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
ADOQuery1StudentCode: TWideStringField;
ADOQuery1StudentName: TWideStringField;
ADOQuery1AllMoney: TFloatField;
ADOQuery1OccurDate: TDateTimeField;
ADOQuery1ChargeMan: TWideStringField;
ADOQuery1MoneyClass: TWideStringField;
ADOQuery2: TADOQuery;
DataSource2: TDataSource;
ADOQuery2StudentCode: TWideStringField;
ADOQuery2studentName: TWideStringField;
ADOQuery2ClassCaption: TWideStringField;
ListBox1: TListBox;
ListBox2: TListBox;
ADOQuery1ID: TAutoIncField;
sbModify: TSpeedButton;
sbExit: TSpeedButton;
Splitter1: TSplitter;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
sbQuery: TSpeedButton;
SpeedButton6: TSpeedButton;
sbDelete: TSpeedButton;
sbSave: TSpeedButton;
sbCancel: TSpeedButton;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
SpeedButton5: TSpeedButton;
SpeedButton8: TSpeedButton;
pnlQuery: TPanel;
Panel4: TPanel;
Rg: TRadioGroup;
edtCode: TEdit;
edtName: TEdit;
DbdDate: TDateTimePicker;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure SpeedButton5Click(Sender: TObject);
procedure DBGrid2DblClick(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure sbModifyClick(Sender: TObject);
procedure SpeedButton8Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure sbExitClick(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure sbDeleteClick(Sender: TObject);
procedure sbSaveClick(Sender: TObject);
procedure sbCancelClick(Sender: TObject);
procedure sbQueryClick(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure RgClick(Sender: TObject);
private
{ Private declarations }
procedure CreateStuCodeItems;
procedure AppendRecordToAdo1(sCode,sName:string);
procedure EnableButtons(b:Boolean);
public
{ Public declarations }
end;
var
AccountForm: TAccountForm;
procedure CallAccountForm;
implementation
uses PublicFunc, MainDm, ClassSelectFrm;
{$R *.dfm}
procedure CallAccountForm;
begin
if AccountForm = nil then
AccountForm := TAccountForm.Create(Application);
AccountForm.ShowModal;
AccountForm.Free;
AccountForm := nil;
end;
procedure TAccountForm.SpeedButton5Click(Sender: TObject);
var
s1,ClassC,mc: string;
begin
inherited;
if GetBMH(ClassC,mc) then
Edit2.Text := MC;
if ClassC = '' then Exit;
s1 := 'select a.StudentCode,a.studentName,b.ClassCaption from '+
' student a,Monitor b where a.ClassCode=b.ClassCode';
with AdoQuery2 do
begin
Close;
Sql.Text := s1 + ' and b.ClassCode = ' + QuotedStr(ClassC) ;
try
Open;
except
end;
end;
end;
procedure TAccountForm.DBGrid2DblClick(Sender: TObject);
begin
inherited;
if not AdoQuery2.Active or (AdoQuery2.FieldByName('StudentCode').AsString = '') then Exit;
DbGrid1.ReadOnly := False;
AppendRecordToAdo1(AdoQuery2.FieldByName('StudentCode').AsString,AdoQuery2.FieldByName('StudentName').AsString);
end;
procedure TAccountForm.Edit1Change(Sender: TObject);
var
s,s1: string;
i: Integer;
begin
inherited;
if Edit1.Text = '' then Exit;
s := '''aaa'''+','+'''bbb''';
ListBox2.Items.Text := SearchByPYIndexStr(ListBox1.Items,Edit1.Text);
for i := 0 to ListBox2.Items.Count - 1 do
begin
s1 := ListBox2.Items.Strings[i];
s := s + ','+ QuotedStr(s1);
end;
// s := copy(s,2,Length(s)-1);
s1 := 'select a.StudentCode,a.studentName,b.ClassCaption from '+
' student a,Monitor b where a.ClassCode=b.ClassCode';
if s <> '' then
with AdoQuery2 do
begin
Close;
Sql.Text := s1+' and a.StudentName in ('+s+')';
try
Open;
except
Exit;
end;
end;
if AdoQuery2.RecordCount >=1 then
DbGrid2.Visible := True
else
DbGrid2.Visible := False;
end;
procedure TAccountForm.CreateStuCodeItems;
var
sName: string;
begin
ListBox1.Items.Clear;
with DmMain.QueryPublic do
begin
Close;
Sql.Text := 'select StudentName from student';
Open;
First;
while not eof do
begin
sName := FieldByName('StudentName').Asstring;
sName := StringReplace(sName,' ','',[rfReplaceAll]);
if sName <> '' then
ListBox1.Items.Add(sName);
Next;
end;
end;
end;
procedure TAccountForm.FormCreate(Sender: TObject);
begin
inherited;
CreateStuCodeItems;
AdoQuery1.Open;
DbGrid2.Visible := False;
EnableButtons(True);
DbGrid1.ReadOnly := True;
pnlQuery.Visible := False;
end;
procedure TAccountForm.sbModifyClick(Sender: TObject);
begin
inherited;
if AdoQuery1.IsEmpty then
begin
MessageBoxInfo('没有要删除的记录!');
Exit;
end;
EnableButtons(False);
AdoQuery1.Edit;
DbGrid1.ReadOnly := False;
end;
procedure TAccountForm.SpeedButton8Click(Sender: TObject);
begin
inherited;
if Edit2.Text = '' then
begin
MessageBoxInfo('请先选择一个班级!');
Exit;
end;
if MessageBoxQuery('您确认要对◆'+Edit2.Text+'◆整班操作吗,默认操作为续费,继续吗?')<>MrYes then Exit;
with AdoQuery2 do
begin
First;
while not eof do
begin
AppendRecordToAdo1(FieldByName('StudentCode').AsString,FieldByName('StudentName').AsString);
Next;
end;
First;
end;
DbGrid1.ReadOnly := False;
if AdoQuery2.RecordCount >=1 then
DbGrid2.Visible := True
else
DbGrid2.Visible := False;
end;
procedure TAccountForm.AppendRecordToAdo1(sCode,sName:string);
begin
AdoQuery1.Append;
AdoQuery1StudentCode.Value := sCode;
AdoQuery1StudentName.Value := sName;
AdoQuery1MoneyClass.Value := '续费';
AdoQuery1OccurDate.Value := Trunc(Date());
AdoQuery1.UpdateRecord;
end;
procedure TAccountForm.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
inherited;
if AdoQuery1.State in [DsEdit,DsInsert] then
try
AdoQuery1.Post;
except
end;
end;
procedure TAccountForm.sbExitClick(Sender: TObject);
begin
inherited;
Close;
end;
procedure TAccountForm.SpeedButton2Click(Sender: TObject);
begin
inherited;
DbGrid1.ReadOnly := False;
end;
procedure TAccountForm.Edit2Change(Sender: TObject);
begin
inherited;
if Edit2.Text <> '' then
SpeedButton8.Enabled := True
else
SpeedButton8.Enabled := False;
end;
procedure TAccountForm.sbDeleteClick(Sender: TObject);
begin
inherited;
if AdoQuery1.IsEmpty then
begin
MessageBoxInfo('没有要删除的记录!');
Exit;
end;
if MessageBoxQuery('您确认要删除此记录吗?')<>MrYes then Exit;
ADOQuery1.Delete;
end;
procedure TAccountForm.sbSaveClick(Sender: TObject);
begin
inherited;
try
AdoQuery1.Post;
except
end;
DbGrid1.ReadOnly := True;
EnableButtons(True);
end;
procedure TAccountForm.sbCancelClick(Sender: TObject);
begin
inherited;
AdoQuery1.Cancel;
DbGrid1.ReadOnly := True;
EnableButtons(True);
end;
procedure TAccountForm.EnableButtons(b: Boolean);
begin
sbQuery.Enabled := B;
sbDelete.Enabled := B;
sbModify.Enabled := B;
sbSave.Enabled := not B;
sbCancel.Enabled := not B;
sbExit.Enabled := B;
end;
procedure TAccountForm.sbQueryClick(Sender: TObject);
begin
inherited;
pnlQuery.Visible := True;
edtCode.Visible := True;
Rg.ItemIndex := 0;
edtName.Visible := False;
dbdDate.Visible := False;
end;
procedure TAccountForm.BitBtn1Click(Sender: TObject);
var
s: string;
begin
inherited;
s := '';
if rg.ItemIndex = 0 then
begin
if EdtCode.Text <> '' then
s := ' where StudentCode='+QuotedStr(EdtCode.Text);
end;
if rg.ItemIndex = 1 then
begin
if EdtName.Text <> '' then
s := ' where StudentName='+QuotedStr(EdtName.Text);
end;
if rg.ItemIndex = 2 then
begin
// s := ' where OccurDate='+QuotedStr(FormatDateTime('yyyymmdd',DbtDate.Date));
end;
if rg.ItemIndex = 3 then
s := ' where 1=1';
if s <> '' then
with AdoQuery1 do
begin
Close;
Sql.Text := 'select * from studentFee ' + s;
Open;
end;
pnlQuery.Visible := False;
end;
procedure TAccountForm.BitBtn2Click(Sender: TObject);
begin
inherited;
pnlQuery.Visible := False;
end;
procedure TAccountForm.RgClick(Sender: TObject);
begin
inherited;
if Rg.ItemIndex = 0 then
begin
edtCode.Visible := True;
edtName.Visible := False;
dbdDate.Visible := False;
end;
if Rg.ItemIndex = 1 then
begin
edtCode.Visible := False;
edtName.Visible := True;
dbdDate.Visible := False;
end;
if Rg.ItemIndex = 2 then
begin
edtCode.Visible := False;
edtName.Visible := False;
dbdDate.Visible := True;
end;
if Rg.ItemIndex = 3 then
begin
edtCode.Visible := False;
edtName.Visible := False;
dbdDate.Visible := False;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -