home *** CD-ROM | disk | FTP | other *** search
- unit Browse;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- ExtCtrls, DBCtrls, DB, DBTables, StdCtrls, FileCtrl,
- ComCtrls, Menus, FindDlg, Grids, DBGrids, CustGrid;
-
- type
- TFrmBrowser = class(TForm)
- DataSource1: TDataSource;
- Table1: TTable;
- PopupMenu1: TPopupMenu;
- Scatter1: TMenuItem;
- Gather1: TMenuItem;
- StatusBar1: TStatusBar;
- DBCustGrid1: TDBCustGrid;
- N1: TMenuItem;
- New1: TMenuItem;
- Edit1: TMenuItem;
- Insert1: TMenuItem;
- Delete1: TMenuItem;
- N2: TMenuItem;
- Save1: TMenuItem;
- Revert1: TMenuItem;
- N3: TMenuItem;
- MultipleScatter1: TMenuItem;
- MultipleGather1: TMenuItem;
- View1: TMenuItem;
- HideColumn1: TMenuItem;
- ShowAllColumns1: TMenuItem;
- DeleteViewProperties1: TMenuItem;
- N4: TMenuItem;
- Loadafile1: TMenuItem;
- Savetofile1: TMenuItem;
- procedure FileListBox1Click(Sender: TObject);
- procedure Table1AfterPost(DataSet: TDataSet);
- procedure Exit1Click(Sender: TObject);
- procedure About1Click(Sender: TObject);
- procedure Table1AfterScroll(DataSet: TDataSet);
- procedure FormClose(Sender: TObject; var Action: TCloseAction);
- procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
- procedure FormActivate(Sender: TObject);
- procedure Table1AfterOpen(DataSet: TDataSet);
- procedure Table1AfterClose(DataSet: TDataSet);
- procedure DataSource1StateChange(Sender: TObject);
- procedure Scatter1Click(Sender: TObject);
- procedure Gather1Click(Sender: TObject);
- procedure New1Click(Sender: TObject);
- procedure Insert1Click(Sender: TObject);
- procedure Edit1Click(Sender: TObject);
- procedure Delete1Click(Sender: TObject);
- procedure Save1Click(Sender: TObject);
- procedure Revert1Click(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- procedure FormDeactivate(Sender: TObject);
- procedure PopupMenu1Popup(Sender: TObject);
- procedure Table1BeforeInsert(DataSet: TDataSet);
- procedure Table1AfterInsert(DataSet: TDataSet);
- procedure MultipleScatter1Click(Sender: TObject);
- procedure MultipleGather1Click(Sender: TObject);
- procedure FormKeyUp(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- procedure HideColumn1Click(Sender: TObject);
- procedure ShowAllColumns1Click(Sender: TObject);
- procedure DeleteViewProperties1Click(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure DBCustGrid1TitleClick(Column: TColumn);
- procedure Loadafile1Click(Sender: TObject);
- procedure Savetofile1Click(Sender: TObject);
- private
- { Private declarations }
- lFieldModified, lShowStructure : Boolean;
- procedure SaveBrowserSettings;
- procedure ReadBrowserSettings;
- public
- { Public declarations }
- procedure OpenBrowser(sDirectory, sFileName : String);
- function AskSaveChanges : Boolean;
- procedure ShowStructure(lStructure : Boolean);
- end;
-
- var
- FrmBrowser: TFrmBrowser;
-
- implementation
-
- uses Compare, About, Filter, GenFunc, Menu, Literals;
-
- {$R *.DFM}
-
- procedure TFrmBrowser.FileListBox1Click(Sender: TObject);
- begin
- Table1.Active := False;
- Table1.IndexFieldNames := '';
- Table1.Filter := '';
- Table1.Filtered := False;
- // Table1.DataBaseName := FileListBox1.Directory;
- // Table1.TableName := FileListBox1.Items[FileListBox1.ItemIndex];
- Table1.Active := True;
- ShowStructure(FrmMenu.ShowStructure1.Checked);
- end;
-
- procedure TFrmBrowser.Table1AfterPost(DataSet: TDataSet);
- begin
- Table1.Refresh;
- end;
-
- procedure TFrmBrowser.Exit1Click(Sender: TObject);
- begin
- Close;
- end;
-
- procedure TFrmBrowser.About1Click(Sender: TObject);
- begin
- Application.CreateForm(TAboutBox, AboutBox);
- AboutBox.ShowModal;
- end;
-
- procedure TFrmBrowser.Table1AfterScroll(DataSet: TDataSet);
- begin
- StatusBar1.SimpleText := 'Table : '+ Table1.TableName +' '+
- 'Records : ' + IntToStr(Table1.RecordCount) + ' ' +
- 'Record No : ' + IntToStr(Table1.RecNo) + ' ' +
- 'Filter : ' + Table1.Filter;
- end;
-
- procedure TFrmBrowser.OpenBrowser(sDirectory, sFileName : String);
- function ExtractPath(sString : String) : String;
- var
- sTmpString : String;
- begin
- sTmpString := Copy(sString,Pos('\',sString),Length(sString));
- sTmpString := Copy(sTmpString,0,Pos('File:',sTmpString)-3);
- Result := sTmpString;
- end;
- begin
- try
- Self.Caption := sDirectory + sFileName;
- Table1.DatabaseName := sDirectory;
- Table1.TableName := sFileName;
- Table1.Open;
- except
- on E:EDataBaseError do begin
- try
- if (Pos(EM_DirControlledby,UpperCase(E.Message)) > 0) then begin
- AssignNetFileDir(ExtractPath(E.Message));
- Table1.Open;
- end
- else
- if (Pos(EM_IndexOutofDate,UpperCase(E.Message)) > 0) then begin
- DeleteFile(sDirectory+ChangeFileExt(sFileName,'.Px'));
- Table1.Open;
- end
- else
- begin
- Table1.Open;
- end;
- except
- on E:EDataBaseError do begin
- if (Pos('Insufficient table',E.Message) > 0) then
- E.Message := 'Invalid Password';
- ShowMessage(E.Message);
- Self.Close;
- Exit;
- end;
- end;
- end;
- end;
- Self.FormStyle := fsMDIChild;
- ReadBrowserSettings;
- Self.Visible := True;
- Self.Show;
- end;
-
- procedure TFrmBrowser.FormClose(Sender: TObject; var Action: TCloseAction);
- begin
- if Table1.Active then
- Table1.Refresh;
- Table1.Close;
- Action := caFree;
- end;
-
- procedure TFrmBrowser.FormCloseQuery(Sender: TObject;
- var CanClose: Boolean);
- begin
- CanClose := AskSaveChanges;
- if CanClose then
- Self.SaveBrowserSettings;
- end;
-
- function TFrmBrowser.AskSaveChanges : Boolean;
- var
- wWord : Word;
- begin
- wWord := mrNo;
- if lFieldModified then begin
- wWord := MessageDlg('Changes have been made save',mtWarning,[mbYes,mbNo,mbCancel],0);
- if (wWord = mrYes) then
- Table1.Post
- else
- if (wWord = mrNo) then
- Table1.Cancel;
- end;
- Result := (wWord <> mrCancel);
- end;
-
- procedure TFrmBrowser.FormActivate(Sender: TObject);
- var
- I : Integer;
- begin
- FrmMenu.Table1 := Table1;
- FrmMenu.ShowClose(True);
- FrmMenu.ShowStructure1.Checked := lShowStructure;
- FrmMenu.ShowQueryMenuItem(False);
- FrmMenu.ShowTextFileMenuItem(False);
- FrmMenu.ShowTableMenuItem(Table1.Active);
- AssignGridOptions(DBCustGrid1,dgAlwaysShowSelection,FrmMenu.ShowSelected1.Checked);
- AssignGridOptions(DBCustGrid1,dgAlwaysShowEditor,FrmMenu.ShowEdited1.Checked);
- AssignGridOptions(DBCustGrid1,dgConfirmDelete,FrmMenu.ConfirmDelete1.Checked);
- AssignGridOptions(DBCustGrid1,dgMultiSelect,FrmMenu.MultipleSelect1.Checked);
- end;
-
- procedure TFrmBrowser.Table1AfterOpen(DataSet: TDataSet);
- begin
- // SetDateFormatForFields(TTable(DataSet));
- FormActivate(Self);
- end;
-
- procedure TFrmBrowser.Table1AfterClose(DataSet: TDataSet);
- begin
- FormActivate(Self);
- end;
-
- procedure TFrmBrowser.ShowStructure(lStructure : Boolean);
- var
- I : Integer;
- begin
- lShowStructure := lStructure;
- for I := 0 to Table1.FieldCount - 1 do begin
- if lStructure then
- DBCustGrid1.Columns.Items[I].Title.Caption := DBCustGrid1.Fields[I].FieldName + ' : ' +
- FindFieldType(DBCustGrid1.Fields[I].DataType) + ' : ' +
- IntToStr(DBCustGrid1.Fields[I].DataSize)
- else
- DBCustGrid1.Columns.Items[I].Title.Caption := DBCustGrid1.Fields[I].FieldName;
- end;
- end;
-
- procedure TFrmBrowser.DataSource1StateChange(Sender: TObject);
- begin
- lFieldModified := (Table1.State in [dsInsert,dsEdit]);
- end;
-
- procedure TFrmBrowser.Scatter1Click(Sender: TObject);
- begin
- Scatter(Table1,FrmMenu.aTableStructure,FrmMenu.aFieldContent);
- end;
-
- procedure TFrmBrowser.Gather1Click(Sender: TObject);
- begin
- Gather(Table1,FrmMenu.aTableStructure,FrmMenu.aFieldContent);
- end;
-
- procedure TFrmBrowser.New1Click(Sender: TObject);
- begin
- Table1.Append;
- end;
-
- procedure TFrmBrowser.Insert1Click(Sender: TObject);
- begin
- Table1.Insert;
- end;
-
- procedure TFrmBrowser.Edit1Click(Sender: TObject);
- begin
- Table1.Edit;
- end;
-
- procedure TFrmBrowser.Delete1Click(Sender: TObject);
- begin
- if (MessageDlg('Delete Record',mtConfirmation,[mbYes,mbNo],0) = mrYes) then
- Table1.Delete;
- end;
-
- procedure TFrmBrowser.Save1Click(Sender: TObject);
- begin
- Table1.Post;
- end;
-
- procedure TFrmBrowser.Revert1Click(Sender: TObject);
- begin
- Table1.Cancel;
- end;
-
- procedure TFrmBrowser.FormDestroy(Sender: TObject);
- begin
- FrmMenu.ShowClose(False);
- // FrmMenu.RemoveWindowItem(Self.Name)
- end;
-
- procedure TFrmBrowser.FormDeactivate(Sender: TObject);
- begin
- if Sender <> nil then
- FrmMenu.ShowMenuWindowItemChecked(Self.Name,False);
- end;
-
- procedure TFrmBrowser.PopupMenu1Popup(Sender: TObject);
- begin
- Scatter1.Enabled := Table1.Active;
- Gather1.Enabled := Table1.Active;
- New1.Enabled := Table1.Active;
- Insert1.Enabled := Table1.Active;
- Edit1.Enabled := Table1.Active;
- Delete1.Enabled := Table1.Active;
- if Table1.Active then begin
- Save1.Enabled := (Table1.State in [dsInsert,dsEdit]);
- Revert1.Enabled := (Table1.State in [dsInsert,dsEdit]);
- end;
- if (DBCustGrid1.SelectedField.DataType in [ftMemo,ftFmtMemo,ftGraphic,ftParadoxOle,ftDBaseOle,ftTypedBinary,ftBlob]) then begin
- Loadafile1.Enabled := True;
- Savetofile1.Enabled := True;
- end
- else
- begin
- Loadafile1.Enabled := False;
- Savetofile1.Enabled := False;
- end;
- end;
-
- procedure TFrmBrowser.Table1BeforeInsert(DataSet: TDataSet);
- begin
- If FrmMenu.CarryFieldValues1.Checked then
- Scatter(Table1,FrmMenu.aTableStructure,FrmMenu.aFieldContent);
- end;
-
- procedure TFrmBrowser.Table1AfterInsert(DataSet: TDataSet);
- begin
- If FrmMenu.CarryFieldValues1.Checked then
- Gather(Table1,FrmMenu.aTableStructure,FrmMenu.aFieldContent);
- end;
-
- procedure TFrmBrowser.MultipleScatter1Click(Sender: TObject);
- begin
- MultiScatter(Table1,DBCustGrid1,FrmMenu.TableRecords);
- end;
-
- procedure TFrmBrowser.MultipleGather1Click(Sender: TObject);
- begin
- MultiGather(Table1,FrmMenu.TableRecords);
- end;
-
- procedure TFrmBrowser.FormKeyUp(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- begin
- if Key = VK_ESCAPE then
- FrmMenu.SetLoopBreak;
- end;
-
- procedure TFrmBrowser.SaveBrowserSettings;
- var
- sSection : String;
- I : Integer;
- begin
- I := 0;
- sSection := UpperCase(Table1.DatabaseName + Table1.TableName);
- SaveToIni(sIF_Browser,sSection,SI_FormLeft,IntToStr(Self.Left));
- SaveToIni(sIF_Browser,sSection,SI_FormTop,IntToStr(Self.Top));
- SaveToIni(sIF_Browser,sSection,SI_FormWidth,IntToStr(Self.Width));
- SaveToIni(sIF_Browser,sSection,SI_FormHeight,IntToStr(Self.Height));
- for I := 0 to Table1.FieldDefs.Count - 1 do begin
- if DBCustGrid1.Columns.Count >= Table1.FieldDefs.Count then begin
- SaveToIni(sIF_Browser,sSection,SI_GridColWidth+IntToStr(I),IntToStr(DBCustGrid1.Columns.Items[I].Width));
- SaveToIni(sIF_Browser,sSection,SI_GridColCaption+IntToStr(I),DBCustGrid1.Columns.Items[I].Title.Caption);
- end;
- // SaveToIni(sIF_Browser,sSection,SI_TableFieldName+IntToStr(I),Table1.FieldDefs.Items[I].Name);
- if Table1.FieldByName(Table1.FieldDefs.Items[I].Name).Visible then
- SaveToIni(sIF_Browser,sSection,SI_GridColVisible+IntToStr(I),SV_True)
- else
- SaveToIni(sIF_Browser,sSection,SI_GridColVisible+IntToStr(I),SV_False);
- end;
- end;
-
- procedure TFrmBrowser.ReadBrowserSettings;
- var
- sSection : String;
- I : Integer;
- begin
- I := 0;
- sSection := UpperCase(Table1.DatabaseName + Table1.TableName);
- Self.Left := StrToInt(ReadFromIni(sIF_Browser,sSection,SI_FormLeft,IntToStr(Self.Left)));
- Self.Top := StrToInt(ReadFromIni(sIF_Browser,sSection,SI_FormTop,IntToStr(Self.Top)));
- Self.Width := 300;
- Self.Height := 300;
- Self.Width := StrToInt(ReadFromIni(sIF_Browser,sSection,SI_FormWidth,IntToStr(Self.Width)));
- Self.Height := StrToInt(ReadFromIni(sIF_Browser,sSection,SI_FormHeight,IntToStr(Self.Height)));
- for I := 0 to Table1.FieldDefs.Count - 1 do begin
- if (ReadFromIni(sIF_Browser,sSection,SI_GridColCaption+IntToStr(I),'') <> '') then begin
- DBCustGrid1.Columns.Items[I].Width := StrToInt(ReadFromIni(sIF_Browser,sSection,SI_GridColWidth+IntToStr(I),IntToStr(DBCustGrid1.Columns.Items[I].Width)));
- // DBCustGrid1.Columns.items[I].Title.Caption := ReadFromIni(sIF_Browser,sSection,SI_GridColCaption+IntToStr(I),DBCustGrid1.Columns.items[I].Title.Caption);
- end;
- if (ReadFromIni(sIF_Browser,sSection,SI_GridColVisible+IntToStr(I),'TRUE') = SV_False) then
- Table1.FieldByName(Table1.FieldDefs.Items[I].Name).Visible := False
- else
- Table1.FieldByName(Table1.FieldDefs.Items[I].Name).Visible := True;
- end;
- end;
-
- procedure TFrmBrowser.HideColumn1Click(Sender: TObject);
- begin
- DBCustGrid1.SelectedField.Visible := False;
- end;
-
- procedure TFrmBrowser.ShowAllColumns1Click(Sender: TObject);
- var
- I : Integer;
- begin
- for I := 0 to Table1.FieldDefs.Count - 1 do
- Table1.FieldByName(Table1.FieldDefs.Items[I].Name).Visible := True;
- DBCustGrid1.DataSource := nil;
- DBCustGrid1.DataSource := DataSource1;
- end;
-
- procedure TFrmBrowser.DeleteViewProperties1Click(Sender: TObject);
- var
- sSection : String;
- begin
- sSection := UpperCase(Table1.DatabaseName + Table1.TableName);
- DeleteFromIni(sIF_Browser,sSection);
- end;
-
- procedure TFrmBrowser.FormCreate(Sender: TObject);
- begin
- Self.Width := 0;
- Self.Height := 0;
- end;
-
- procedure TFrmBrowser.DBCustGrid1TitleClick(Column: TColumn);
- begin
- Table1.Filtered := False;
- end;
-
- procedure TFrmBrowser.Loadafile1Click(Sender: TObject);
- begin
- FrmMenu.OpenDialog1.Title := 'Select file';
- FrmMenu.OpenDialog1.Filter := 'Any file (*.*)|*.*';
- if FrmMenu.OpenDialog1.Execute then begin
- if not (Table1.State in [dsInsert,dsEdit]) then
- Table1.Edit;
- TBlobField(Table1.FieldByName(DBCustGrid1.SelectedField.FieldName)).LoadFromFile(FrmMenu.OpenDialog1.FileName);
- end;
- end;
-
- procedure TFrmBrowser.Savetofile1Click(Sender: TObject);
- begin
- FrmMenu.SaveDialog1.Title := 'Select file';
- FrmMenu.SaveDialog1.Filter := 'Any file (*.*)|*.*';
- if FrmMenu.SaveDialog1.Execute then begin
- TBlobField(Table1.FieldByName(DBCustGrid1.SelectedField.FieldName)).SaveToFile(FrmMenu.SaveDialog1.FileName);
- end;
- end;
-
- end.
-