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

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.