You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
491 lines
13 KiB
491 lines
13 KiB
unit ucadModeloRepasse;
|
|
|
|
interface
|
|
|
|
uses
|
|
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
|
|
System.Classes, Vcl.Graphics, Vcl.Buttons, System.UITypes,
|
|
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, umstCadastro, Data.DB, Vcl.Grids,
|
|
Vcl.DBGrids, Vcl.ExtCtrls, Vcl.DBCtrls, Vcl.StdCtrls, Vcl.Mask, Vcl.ComCtrls,
|
|
System.ImageList, Vcl.ImgList;
|
|
|
|
type
|
|
THackDBNavigator = class(TDBNavigator);
|
|
|
|
type
|
|
TcadModeloRepasse = class(TmstCadastro)
|
|
dbg_repasse: TDBGrid;
|
|
gb_porcentagens: TGroupBox;
|
|
lbl_principal: TLabel;
|
|
dbedt_prprin: TDBEdit;
|
|
dbedt_prjuros: TDBEdit;
|
|
lbl_juros: TLabel;
|
|
dbedt_prmulta: TDBEdit;
|
|
lbl_multa: TLabel;
|
|
dbedt_enc: TDBEdit;
|
|
lbl_encargos: TLabel;
|
|
dbedt_prcorrigido: TDBEdit;
|
|
lbl_corrigido: TLabel;
|
|
ImageList1: TImageList;
|
|
GroupBox1: TGroupBox;
|
|
dblulb_indices: TDBLookupListBox;
|
|
dtsfases: TDataSource;
|
|
navfases: TDBNavigator;
|
|
dbedt_atrasomin: TDBEdit;
|
|
dbedt_atrasomax: TDBEdit;
|
|
lbl_atrasomin: TLabel;
|
|
lbl_atrasomax: TLabel;
|
|
GroupBox3: TGroupBox;
|
|
Label1: TLabel;
|
|
Label2: TLabel;
|
|
Label3: TLabel;
|
|
Label4: TLabel;
|
|
Label5: TLabel;
|
|
DBEdit2: TDBEdit;
|
|
DBEdit3: TDBEdit;
|
|
DBEdit4: TDBEdit;
|
|
DBEdit5: TDBEdit;
|
|
DBEdit6: TDBEdit;
|
|
procedure dbedt_prprinKeyPress(Sender: TObject; var Key: Char);
|
|
procedure dbedt_prjurosKeyPress(Sender: TObject; var Key: Char);
|
|
procedure dbedt_prmultaKeyPress(Sender: TObject; var Key: Char);
|
|
procedure dbedt_encKeyPress(Sender: TObject; var Key: Char);
|
|
procedure dbedt_prcorrigidoKeyPress(Sender: TObject; var Key: Char);
|
|
procedure navPrincipalBeforeAction(Sender: TObject; Button: TNavigateBtn);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure dbedt_prprinExit(Sender: TObject);
|
|
procedure dbedt_prjurosExit(Sender: TObject);
|
|
procedure dbedt_prmultaExit(Sender: TObject);
|
|
procedure dbedt_encExit(Sender: TObject);
|
|
procedure dbedt_prcorrigidoExit(Sender: TObject);
|
|
procedure dtsDBStateChange(Sender: TObject);
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
|
procedure dtsfasesStateChange(Sender: TObject);
|
|
procedure navfasesBeforeAction(Sender: TObject; Button: TNavigateBtn);
|
|
procedure DBEdit2Exit(Sender: TObject);
|
|
procedure DBEdit3Exit(Sender: TObject);
|
|
procedure DBEdit4Exit(Sender: TObject);
|
|
procedure DBEdit5Exit(Sender: TObject);
|
|
procedure DBEdit6Exit(Sender: TObject);
|
|
procedure DBEdit2KeyPress(Sender: TObject; var Key: Char);
|
|
procedure DBEdit3KeyPress(Sender: TObject; var Key: Char);
|
|
procedure DBEdit4KeyPress(Sender: TObject; var Key: Char);
|
|
procedure DBEdit5KeyPress(Sender: TObject; var Key: Char);
|
|
procedure DBEdit6KeyPress(Sender: TObject; var Key: Char);
|
|
private
|
|
procedure SetupHackedNavigator(const Navigator: TDBNavigator;
|
|
const Glyphs: TImageList; S: string);
|
|
procedure WMMoving(var Msg: TWMMoving); message WM_MOVING;
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
// janela a princípio não utilizada até hoje
|
|
var
|
|
cadModeloRepasse: TcadModeloRepasse;
|
|
|
|
implementation
|
|
|
|
{$R *.dfm}
|
|
|
|
uses udtmSystem;
|
|
|
|
procedure TcadModeloRepasse.DBEdit2Exit(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
if DBEdit2.Field.Value > 100 then
|
|
begin
|
|
DBEdit2.Field.Value := 100;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.DBEdit2KeyPress(Sender: TObject; var Key: Char);
|
|
begin
|
|
inherited;
|
|
if not(Key in [#8, '0' .. '9',
|
|
System.SysUtils.FormatSettings.DecimalSeparator]) then
|
|
begin
|
|
Key := #0;
|
|
end
|
|
else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and
|
|
(Pos(Key, DBEdit2.Field.Text) > 0) then
|
|
begin
|
|
Key := #0;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.DBEdit3Exit(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
if DBEdit3.Field.Value > 100 then
|
|
begin
|
|
DBEdit3.Field.Value := 100;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.DBEdit3KeyPress(Sender: TObject; var Key: Char);
|
|
begin
|
|
inherited;
|
|
if not(Key in [#8, '0' .. '9',
|
|
System.SysUtils.FormatSettings.DecimalSeparator]) then
|
|
begin
|
|
Key := #0;
|
|
end
|
|
else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and
|
|
(Pos(Key, DBEdit3.Field.Text) > 0) then
|
|
begin
|
|
Key := #0;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.DBEdit4Exit(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
if DBEdit4.Field.Value > 100 then
|
|
begin
|
|
DBEdit4.Field.Value := 100;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.DBEdit4KeyPress(Sender: TObject; var Key: Char);
|
|
begin
|
|
inherited;
|
|
if not(Key in [#8, '0' .. '9',
|
|
System.SysUtils.FormatSettings.DecimalSeparator]) then
|
|
begin
|
|
Key := #0;
|
|
end
|
|
else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and
|
|
(Pos(Key, DBEdit4.Field.Text) > 0) then
|
|
begin
|
|
Key := #0;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.DBEdit5Exit(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
if DBEdit5.Field.Value > 100 then
|
|
begin
|
|
DBEdit5.Field.Value := 100;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.DBEdit5KeyPress(Sender: TObject; var Key: Char);
|
|
begin
|
|
inherited;
|
|
if not(Key in [#8, '0' .. '9',
|
|
System.SysUtils.FormatSettings.DecimalSeparator]) then
|
|
begin
|
|
Key := #0;
|
|
end
|
|
else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and
|
|
(Pos(Key, DBEdit5.Field.Text) > 0) then
|
|
begin
|
|
Key := #0;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.DBEdit6Exit(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
if DBEdit6.Field.Value > 100 then
|
|
begin
|
|
DBEdit6.Field.Value := 100;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.DBEdit6KeyPress(Sender: TObject; var Key: Char);
|
|
begin
|
|
inherited;
|
|
if not(Key in [#8, '0' .. '9',
|
|
System.SysUtils.FormatSettings.DecimalSeparator]) then
|
|
begin
|
|
Key := #0;
|
|
end
|
|
else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and
|
|
(Pos(Key, DBEdit6.Field.Text) > 0) then
|
|
begin
|
|
Key := #0;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.dbedt_encExit(Sender: TObject);
|
|
begin
|
|
if dbedt_enc.Field.Value > 100 then
|
|
begin
|
|
dbedt_enc.Field.Value := 100;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.dbedt_encKeyPress(Sender: TObject; var Key: Char);
|
|
begin
|
|
if not(Key in [#8, '0' .. '9',
|
|
System.SysUtils.FormatSettings.DecimalSeparator]) then
|
|
begin
|
|
Key := #0;
|
|
end
|
|
else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and
|
|
(Pos(Key, dbedt_enc.Field.Text) > 0) then
|
|
begin
|
|
Key := #0;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.dbedt_prcorrigidoExit(Sender: TObject);
|
|
begin
|
|
if dbedt_prcorrigido.Field.Value > 100 then
|
|
begin
|
|
dbedt_prcorrigido.Field.Value := 100;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.dbedt_prcorrigidoKeyPress(Sender: TObject;
|
|
var Key: Char);
|
|
begin
|
|
// método pra só poder digitar números e "." ou "," no edit
|
|
if not(Key in [#8, '0' .. '9',
|
|
System.SysUtils.FormatSettings.DecimalSeparator, '-']) then
|
|
begin
|
|
Key := #0;
|
|
end
|
|
else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and
|
|
(Pos(Key, dbedt_prcorrigido.Field.Text) > 0) then
|
|
begin
|
|
Key := #0;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.dbedt_prjurosExit(Sender: TObject);
|
|
begin
|
|
if dbedt_prjuros.Field.Value > 100 then
|
|
begin
|
|
dbedt_prjuros.Field.Value := 100;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.dbedt_prjurosKeyPress(Sender: TObject;
|
|
var Key: Char);
|
|
begin
|
|
if not(Key in [#8, '0' .. '9',
|
|
System.SysUtils.FormatSettings.DecimalSeparator]) then
|
|
begin
|
|
Key := #0;
|
|
end
|
|
else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and
|
|
(Pos(Key, dbedt_prjuros.Field.Text) > 0) then
|
|
begin
|
|
Key := #0;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.dbedt_prmultaExit(Sender: TObject);
|
|
begin
|
|
if dbedt_prmulta.Field.Value > 100 then
|
|
begin
|
|
dbedt_prmulta.Field.Value := 100;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.dbedt_prmultaKeyPress(Sender: TObject;
|
|
var Key: Char);
|
|
begin
|
|
if not(Key in [#8, '0' .. '9',
|
|
System.SysUtils.FormatSettings.DecimalSeparator]) then
|
|
begin
|
|
Key := #0;
|
|
end
|
|
else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and
|
|
(Pos(Key, dbedt_prmulta.Field.Text) > 0) then
|
|
begin
|
|
Key := #0;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.dbedt_prprinExit(Sender: TObject);
|
|
begin
|
|
if dbedt_prprin.Field.Value > 100 then
|
|
begin
|
|
dbedt_prprin.Field.Value := 100;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.dbedt_prprinKeyPress(Sender: TObject;
|
|
var Key: Char);
|
|
begin
|
|
if not(Key in [#8, '0' .. '9',
|
|
System.SysUtils.FormatSettings.DecimalSeparator]) then
|
|
begin
|
|
Key := #0;
|
|
end
|
|
else if (Key = System.SysUtils.FormatSettings.DecimalSeparator) and
|
|
(Pos(Key, dbedt_prprin.Field.Text) > 0) then
|
|
begin
|
|
Key := #0;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.dtsDBStateChange(Sender: TObject);
|
|
begin
|
|
dblulb_indices.Enabled := not(dtsDB.DataSet.State in [dsEdit, dsInsert]);
|
|
grpDescricao.Enabled := (dtsDB.DataSet.State in [dsEdit, dsInsert]);
|
|
// gb_porcentagens.Enabled := grpDescricao.Enabled;
|
|
// dbg_repasse.ReadOnly := not(dtsDB.DataSet.State in [dsEdit, dsInsert]);
|
|
// navfases.Enabled := not(dtsDB.DataSet.State in [dsEdit, dsInsert]);
|
|
pcClientes.Enabled := not(dtsDB.DataSet.State in [dsEdit, dsInsert]);
|
|
GroupBox3.Enabled := grpDescricao.Enabled;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.dtsfasesStateChange(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
grpDescricao.Enabled := not(dtsfases.DataSet.State in [dsEdit, dsInsert]);
|
|
navPrincipal.Enabled := not(dtsfases.DataSet.State in [dsEdit, dsInsert]);
|
|
gb_porcentagens.Enabled := dtsfases.DataSet.State in [dsEdit, dsInsert];
|
|
dbg_repasse.ReadOnly := not(dtsfases.DataSet.State in [dsEdit, dsInsert]);
|
|
dblulb_indices.Enabled := not(dtsfases.DataSet.State in [dsEdit, dsInsert]);
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.FormClose(Sender: TObject;
|
|
var Action: TCloseAction);
|
|
begin
|
|
inherited;
|
|
cadModeloRepasse := nil;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.FormCreate(Sender: TObject);
|
|
begin
|
|
inherited;
|
|
if not dtmSystem.tblRepasse.Active then
|
|
begin
|
|
dtmSystem.tblRepasse.Open;
|
|
end;
|
|
if not dtmSystem.tblRepasseFase.Active then
|
|
begin
|
|
dtmSystem.tblRepasseFase.Open;
|
|
end;
|
|
SetupHackedNavigator(navPrincipal, ImageList1, 's');
|
|
SetupHackedNavigator(navfases, ImageList1, 's');
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.FormKeyDown(Sender: TObject; var Key: Word;
|
|
Shift: TShiftState);
|
|
begin
|
|
inherited;
|
|
if Key = VK_ESCAPE then
|
|
begin
|
|
Key := 0;
|
|
Close;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.navfasesBeforeAction(Sender: TObject;
|
|
Button: TNavigateBtn);
|
|
begin
|
|
case Button of
|
|
|
|
nbPost:
|
|
begin
|
|
if dbedt_atrasomin.Text = '' then
|
|
begin
|
|
MessageDlg('Por favor preencha um número para o atraso mínimo.',
|
|
mtWarning, [mbOK], 0);
|
|
abort;
|
|
end;
|
|
if dbedt_atrasomax.Text = '' then
|
|
begin
|
|
MessageDlg('Por favor preencha um número para o atraso máximo.',
|
|
mtWarning, [mbOK], 0);
|
|
abort;
|
|
end;
|
|
|
|
if strtoint(dbedt_atrasomin.text) > strtoint(dbedt_atrasomax.text) then
|
|
begin
|
|
MessageDlg('Há uma inconsistência nos valores do atraso. Por favor reveja-os.',
|
|
mtWarning, [mbOK], 0);
|
|
abort;
|
|
end;
|
|
// SelectNext(ActiveControl as TWinControl, True, True);
|
|
end;
|
|
|
|
nbCancel:
|
|
if MessageDlg('Deseja cancelar as modificações?', mtConfirmation,
|
|
[mbYes, mbNo], 0) = mrNo then
|
|
abort;
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.navPrincipalBeforeAction(Sender: TObject;
|
|
Button: TNavigateBtn);
|
|
begin
|
|
inherited;
|
|
//
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.SetupHackedNavigator(const Navigator: TDBNavigator;
|
|
const Glyphs: TImageList; S: string);
|
|
const
|
|
Captions: array [TNavigateBtn] of string = ('Primeiro', 'Anterior', 'Próximo',
|
|
'Último', 'Adicionar', 'Excluir', 'Alterar', 'Confirmar', 'Cancelar',
|
|
'Atualizar', 'Aplicar Atualizações', 'Cancelar Atualizãções');
|
|
(* Captions : array[TNavigateBtn] of string =
|
|
('First', 'Prior', 'Next', 'Last', 'Insert',
|
|
'Delete', 'Edit', 'Post', 'Cancel', 'Refresh'); *)
|
|
Hints: array [TNavigateBtn] of string = ('Primeiro', 'Anterior', 'Próximo',
|
|
'Último', 'Adicionar', 'Apagar', 'Modificar', 'Confirmar', 'Cancelar',
|
|
'Atualizar', 'Aplicar Atualizações', 'Cancelar Atualizãções');
|
|
var
|
|
btn: TNavigateBtn;
|
|
begin
|
|
// função propriamente dita para "hackear" o navigator
|
|
for btn := Low(TNavigateBtn) to High(TNavigateBtn) do
|
|
with THackDBNavigator(Navigator).Buttons[btn] do
|
|
begin
|
|
// from the Captions const array
|
|
|
|
Hint := Hints[btn];
|
|
|
|
if LowerCase(S) = 's' then
|
|
begin
|
|
Caption := Captions[btn];
|
|
end;
|
|
|
|
// the number of images in the Glyph property
|
|
NumGlyphs := 1;
|
|
// Remove the old glyph.
|
|
Glyph := nil;
|
|
// Assign the custom one
|
|
Glyphs.GetBitmap(Integer(btn), Glyph);
|
|
// gylph above text
|
|
Layout := blGlyphTop;
|
|
|
|
Font.Style := Font.Style - [fsbold];
|
|
end;
|
|
end;
|
|
|
|
procedure TcadModeloRepasse.WMMoving(var Msg: TWMMoving);
|
|
var
|
|
workArea: TRect;
|
|
begin
|
|
workArea := Screen.WorkareaRect;
|
|
|
|
with Msg.DragRect^ do
|
|
begin
|
|
if left < workArea.left then
|
|
OffsetRect(Msg.DragRect^, workArea.left - left, 0);
|
|
|
|
if top < workArea.top then
|
|
OffsetRect(Msg.DragRect^, 0, workArea.top - top);
|
|
|
|
if Right > workArea.Right then
|
|
OffsetRect(Msg.DragRect^, workArea.Right - Right, 0);
|
|
|
|
if Bottom > workArea.Bottom then
|
|
OffsetRect(Msg.DragRect^, 0, workArea.Bottom - Bottom);
|
|
end;
|
|
|
|
end;
|
|
|
|
end.
|