Окно отображения БД (листинг)

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.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: