unit DBWindow;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MainWindow, Grids, DBGrids, DB, DBTables, StdCtrls;
type
TDBForm = class(TForm)
DBGrid1: TDBGrid;
DataSource1: TDataSource;
YearEdit: TEdit;
TermEdit: TEdit;
SchoolCBox: TComboBox;
FormCBox: TComboBox;
PupilCBox: TComboBox;
TextMsg: TMemo;
YearLbl: TLabel;
TermLbl: TLabel;
SchoolLbl: TLabel;
FormLbl: TLabel;
PupilLbl: TLabel;
HeaderLbl: TLabel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
procedure DBGrid1DrawDataCell1(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
procedure SchoolCBoxChange(Sender: TObject);
procedure FormCBoxChange(Sender: TObject);
procedure PupilCBoxChange(Sender: TObject);
procedure YearEditChange(Sender: TObject);
procedure TermEditChange(Sender: TObject);
procedure DBGrid1CellClick(Column: TColumn);
procedure FormCreate(Sender: TObject);
procedure DBGrid1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
DBForm: TDBForm;
implementation
{$R *.dfm}
procedure TDBForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
MainForm.ADOTable1.Active:=false;
MainForm.ADOConnection1.Close;
FormCBox.Enabled:=false;
PupilCBox.Enabled:=false;
//MainForm.ADOTable1.Close;
end;
procedure TDBForm.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
var
S: string;
begin
if Field is TMemoField then
with (Sender as TDBGrid).Canvas do
begin
S:= MainForm.ADOTable1.FieldValues['Текст сообщения'];
|
|
{ remove carriage returns & line feeds }
while Pos(#13, S) > 0 do S[Pos(#13, S)]:= ' ';
while Pos(#10, S) > 0 do S[Pos(#10, S)]:= ' ';
{ clear the cell }
FillRect(Rect);
{ fill cell with memo data }
TextOut(Rect.Left, Rect.Top, S);
end;
end;
procedure TDBForm.SchoolCBoxChange(Sender: TObject);
var
i:integer;
begin
FormCBox.Enabled:=true;
PupilCBox.Enabled:=false;
FormCBox.Clear;
for i:=0 to High(FormList[SchoolCBox.ItemIndex])do
DBForm.FormCBox.Items.Add(FormList[SchoolCBox.ItemIndex,i]);
end;
procedure TDBForm.FormCBoxChange(Sender: TObject);
begin
PupilCBox.Enabled:=true;
PupilCBox.Clear;
if FileExists(GetCurrentDir+'\DataBases\'+SchoolCBox.Items.Strings[SchoolCBox.ItemIndex]+'\'+FormCBox.Items.Strings[FormCBox.ItemIndex]+'\'+'DB_'+TermEdit.Text+'_'+YearEdit.Text+'.mdb')
then
begin
MainForm.ADOConnection1.Close;
MainForm.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+GetCurrentDir+'\DataBases\'+SchoolCBox.Items.Strings[SchoolCBox.ItemIndex]+'\'+FormCBox.Items.Strings[FormCBox.ItemIndex]+'\'+'DB_'+TermEdit.Text+'_'+YearEdit.Text+'.mdb;Persist Security Info=False';
MainForm.ADOTable1.TableName:='Ученики';
MainForm.ADOTable1.Open;
MainForm.ADOTable1.First;
While not MainForm.ADOTable1.Eof do
begin
PupilCBox.Items.Add(MainForm.ADOTable1.FieldValues['Фамилия']+' '+MainForm.ADOTable1.FieldValues['Имя']+' - '+MainForm.ADOTable1.FieldValues['Телефон']);
MainForm.ADOTable1.Next;
end;
MainForm.ADOTable1.Close;
end
else
begin
PupilCBox.Items.Add('Нет такой БД');
PupilCBox.ItemIndex:=0;
PupilCBox.Enabled:=false;
end;
end;
procedure TDBForm.PupilCBoxChange(Sender: TObject);
begin
MainForm.ADOConnection1.Close; MainForm.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+GetCurrentDir+'\DataBases\'+SchoolCBox.Items.Strings[SchoolCBox.ItemIndex]+'\'+FormCBox.Items.Strings[FormCBox.ItemIndex]+'\'+'DB_'+TermEdit.Text+'_'+YearEdit.Text+'.mdb;Persist Security Info=False';
MainForm.ADOTable1.TableName:=PupilCBox.Items.Strings[PupilCBox.ItemIndex];
MainForm.ADOTable1.Active:=true;
end;
procedure TDBForm.YearEditChange(Sender: TObject);
begin
MainForm.ADOTable1.Active:=false;
MainForm.ADOConnection1.Close;
TermEdit.Text:='';
SchoolCBox.ItemIndex:=-1;
FormCBox.ItemIndex:=-1;
PupilCBox.ItemIndex:=-1;
TermEdit.Enabled:=true;
SchoolCBox.Enabled:=false;
FormCBox.Enabled:=false;
PupilCBox.Enabled:=false;
end;
procedure TDBForm.TermEditChange(Sender: TObject);
begin
MainForm.ADOTable1.Active:=false;
MainForm.ADOConnection1.Close;
SchoolCBox.ItemIndex:=-1;
FormCBox.ItemIndex:=-1;
PupilCBox.ItemIndex:=-1;
SchoolCBox.Enabled:=true;
FormCBox.Enabled:=false;
|
|
PupilCBox.Enabled:=false;
end;
procedure TDBForm.DBGrid1CellClick(Column: TColumn);
var
S1,S2:string;
begin
TextMsg.Clear;
if Column.FieldName='Текст сообщения'
then
begin
Constraints.MaxWidth:=856;
Width:=856;
TextMsg.Visible:=true;
S1:=DBGrid1.SelectedField.AsString;
while pos(#10,S1)>1 do
begin
S2:=copy(S1,1,pos(#10,S1)-1);
S1:=copy(S1,pos(#10,S1)+1,Length(S1)-pos(#10,S1));
TextMsg.Lines.Add(S2);
end;
end
else
begin
Width:=672;
Constraints.MaxWidth:=672;
TextMsg.Visible:=false;
end;
end;
procedure TDBForm.FormCreate(Sender: TObject);
begin
YearEdit.Text:='';
TermEdit.Text:='';
SchoolCBox.Clear;
FormCBox.Clear;
PupilCBox.Clear;
end;
procedure TDBForm.DBGrid1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (key=vk_left)or(key=vk_up)or(key=vk_right)or(key=vk_down)
then
DBGrid1CellClick(DBGrid1.Columns.Items[DBGrid1.SelectedIndex]);
end;
end.