S
Shaman2008
Здравствуйте уважаемые форумчане!
Такая ситуация. Есть две формы, главная и доступная...
Код главной формы:
и код доступной:
Так вот. Не знаю по какой причине, перестала работать команда Form1.Close (событие TForm2.FormClose) ;
Приложение выполняется так, будто команды Form1.Close нету вообще!
И при этом, после закрытия модальной формы начинает выполнение процедура TForm1.FormResize(Sender: TObject), хотя никакого вызова нету, ну по крайней мере, в том случае, если файл конфига отсутствует....
Помогите, где ошибка?
Такая ситуация. Есть две формы, главная и доступная...
Код главной формы:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DB, ADODB, Grids, DBGrids, IniFiles, Math;
type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
DBRead: TADODataSet;
DataSource1: TDataSource;
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
ConfigFile: TIniFile;
PathZDB: string;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
PathZDB := '';
Timer1.Enabled := False;
if Fileexists('db.ini') = False then begin
ConfigFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'db.ini')
end else begin
ConfigFile := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'db.ini');
PathZDB := ConfigFile.ReadString('DB', 'PathZDB', '');
end;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
if (PathZDB = '') OR (fileexists(PathZDB) = False) then begin
Form2 := TForm2.Create(self);
Form2.ShowModal
end
else begin
DBRead.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+PathZDB+';Persist Security Info=False';
DBRead.Active := True;
FormResize(self);
Timer1.Enabled := True
end;
end;
procedure TForm1.FormResize(Sender: TObject);
begin
DBRead.Fields.FieldByName('ID').Visible := False;
DBRead.Fields.FieldByName('Done').Visible := False;
DBRead.Fields.FieldByName('Worker_Done').Visible := False;
DBRead.Fields.FieldByName('Done_Timer').Visible := False;
DBRead.Fields.FieldByName('Done_Dater').Visible := False;
DBGrid1.Columns[0].Title.Caption := 'Äàòà';
DBGrid1.Columns[0].Title.Font.Size := 15;
//DBGrid1.Columns[0].Width := Math.Floor(ClientWidth * 0.05);
DBGrid1.Columns[1].Title.Caption := 'Âðåìÿ';
DBGrid1.Columns[1].Title.Font.Size := 15;
//DBGrid1.Columns[1].Width := Math.Floor(ClientWidth * 0.05);
DBGrid1.Columns[2].Title.Caption := 'Îðãàíèçàöèÿ';
DBGrid1.Columns[2].Title.Font.Size := 15;
//DBGrid1.Columns[2].Width := Math.Floor(ClientWidth * 0.1);
DBGrid1.Columns[3].Title.Caption := 'Àäðåñ';
DBGrid1.Columns[3].Title.Font.Size := 15;
//DBGrid1.Columns[3].Width := Math.Floor(ClientWidth * 0.1);
DBGrid1.Columns[4].Title.Caption := 'Êàáèíåò';
DBGrid1.Columns[4].Title.Font.Size := 15;
//DBGrid1.Columns[4].Width := Math.Floor(ClientWidth * 0.1);
DBGrid1.Columns[5].Title.Caption := 'Çàÿâêà';
//DBGrid1.Columns[5].Width := DBGrid1.Width - (DBGrid1.Columns[0].Width + DBGrid1.Columns[1].Width + DBGrid1.Columns[2].Width + DBGrid1.Columns[3].Width + DBGrid1.Columns[4].Width + 21);
DBGrid1.Columns[5].Title.Font.Size := 15;
DBGrid1.Columns[0].Width := Math.Floor(ClientWidth * 0.08);
DBGrid1.Columns[1].Width := Math.Floor(ClientWidth * 0.065);
DBGrid1.Columns[2].Width := Math.Floor(ClientWidth * 0.2);
DBGrid1.Columns[3].Width := Math.Floor(ClientWidth * 0.12);
DBGrid1.Columns[4].Width := Math.Floor(ClientWidth * 0.11);
DBGrid1.Columns[5].Width := DBGrid1.Width - (DBGrid1.Columns[0].Width + DBGrid1.Columns[1].Width + DBGrid1.Columns[2].Width + DBGrid1.Columns[3].Width + DBGrid1.Columns[4].Width + 9);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
DataSource1.Enabled := False;
DBRead.Active := False;
DBRead.Active := True;
DataSource1.Enabled := True;
FormResize(self);
end;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (Date - StrToDate(TDBGrid(Sender).Fields[0].Value)) > 0 then begin
TDBGrid(Sender).Canvas.Brush.Color := clMaroon;
TDBGrid(Sender).Font.Color := clWhite;
end else if (Date - StrToDate(TDBGrid(Sender).Fields[0].Value)) = 0 then begin
if ((Time - StrToTime(TDBGrid(Sender).Fields[1].Value)) > 0) AND ((Time - StrToTime(TDBGrid(Sender).Fields[1].Value)) < 0.020) then begin
TDBGrid(Sender).Canvas.Brush.Color := clWhite;
TDBGrid(Sender).Font.Color := clBlack;
end else if ((Time - StrToTime(TDBGrid(Sender).Fields[1].Value)) > 0.020) AND ((Time - StrToTime(TDBGrid(Sender).Fields[1].Value)) < 0.060) then begin
TDBGrid(Sender).Canvas.Brush.Color := clYellow;
TDBGrid(Sender).Font.Color := clBlack;
end else begin
TDBGrid(Sender).Canvas.Brush.Color := clRed;
TDBGrid(Sender).Font.Color := clWhite;
end
end;
TDBGrid(Sender).DefaultDrawColumnCell(rect, DataCol, Column, State);
end;
end.
и код доступной:
Код:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Label1: TLabel;
Zajavka_Path: TLabel;
Button1: TButton;
Button2: TButton;
OpenDialog1: TOpenDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
OpenDialog1.Execute;
if length(OpenDialog1.FileName) <> 0 then begin
Zajavka_Path.Caption := OpenDialog1.FileName;
OpenDialog1.Free;
end else OpenDialog1.Free;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Form1.Close;
if length(Zajavka_Path.Caption) <> 0 then begin
if FileExists(Zajavka_Path.Caption) then ConfigFile.WriteString('DB', 'PathZDB', Zajavka_Path.Caption);
end;
ConfigFile.Free;
Form2.Close;
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ShowMessage('Перезапустите приложение!');
Form1.Close;
end;
end.
Так вот. Не знаю по какой причине, перестала работать команда Form1.Close (событие TForm2.FormClose) ;
Приложение выполняется так, будто команды Form1.Close нету вообще!
И при этом, после закрытия модальной формы начинает выполнение процедура TForm1.FormResize(Sender: TObject), хотя никакого вызова нету, ну по крайней мере, в том случае, если файл конфига отсутствует....
Помогите, где ошибка?