unit umstLista; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, System.UITypes, Grids, DBGrids, StdCtrls, DBCtrls, ExtCtrls, Buttons, ComCtrls, DB, ShellAPI; type TmstLista = class(TForm) GroupBox1: TGroupBox; stbStatus: TStatusBar; dtsDB: TDataSource; navPrincipal: TDBNavigator; grdLista: TDBGrid; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormActivate(Sender: TObject); procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure dtsDBDataChange(Sender: TObject; Field: TField); procedure FormCreate(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure navPrincipalBeforeAction(Sender: TObject; Button: TNavigateBtn); private { Private declarations } public { Public declarations } end; var mstLista: TmstLista; implementation uses udtmSystem; {$R *.DFM} procedure TmstLista.FormActivate(Sender: TObject); begin Screen.Cursor := crDefault; { if (dtmSistema.tp_acesso = 'D') and (dtsDB.Dataset.RecordCount >= 10) then begin btnNovo.Enabled := False; grdLista.KeyOptions := [dgEnterToTab]; end; } end; procedure TmstLista.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if navPrincipal.DataSource.State in [dsInsert,dsEdit] then begin ShowMessage('Existem alterações pendendes, clique em CONFIRMAR ou CANCELAR'); CanClose := False; end; end; procedure TmstLista.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; // Envia as alterações para o banco if navPrincipal.DataSource.State in [dsInsert,dsEdit] then //LU052012 - Solucção de Inconsistência quando fechava aplicação dtsDB.DataSet.Post; end; procedure TmstLista.dtsDBDataChange(Sender: TObject; Field: TField); begin {if dtmSistema.tblUsuarios.Active then begin if dtmSistema.tblUsuarios.Locate('ID_USUARIO', dtsDB.Dataset.FieldByName('ID_USUARIO').AsInteger,[]) then stbStatus.Panels[2].Text := dtmSistema.tblUsuariosTX_NOME.AsString + ' - ' + dtsDB.Dataset.FieldByName('DT_ATUALIZACAO').AsString else stbStatus.Panels[2].Text := dtsDB.Dataset.FieldByName('DT_ATUALIZACAO').AsString; end; stbStatus.Panels[0].Text := 'Registros: ' + FormatFloat('#,##0',dtsDB.Dataset.RecordCount); if (dtmSistema.tp_acesso = 'D') and (dtsDB.Dataset.RecordCount >= 10) then begin btnNovo.Enabled := False; grdLista.KeyOptions := [dgEnterToTab]; end; } end; procedure TmstLista.FormCreate(Sender: TObject); begin dtmSystem.tx_formulario := TForm(Sender).Name; dtsDB.DataSet.Open; //if dtmSystem.tp_bloqueado = 'S' then btnNovo.Visible := False; end; procedure TmstLista.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin { if Key = VK_F1 then ShellExecute(0, nil, PChar('controller.chm'), PChar('Plano de Contas'), nil, Sw_Normal); // ShellExecute(0, nil, char(dtmSistema.tx_modulo+'.chm'), TForm(Sender).Caption, nil, Sw_Normal); } end; procedure TmstLista.navPrincipalBeforeAction(Sender: TObject; Button: TNavigateBtn); begin case Button of nbDelete: begin if MessageDlg('Deseja apagar este registro?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then Abort; try dtsDB.Dataset.Delete; except ShowMessage('Este registro está sendo utilizado pelo sistema e não pode ser apagado'); end; Abort; end; end; end; end.