• R/O
  • SSH
  • HTTPS

cico: Commit


Commit MetaInfo

Revisión24 (tree)
Tiempo2021-09-14 02:22:07
Autorderekwildstar

Log Message

Criado o método "RegistrarEvento" para substituir código redundante que realizava o registro de eventos
Criado o método "LimparRegistroDeEventos" para limpar o registro de eventos de forma centralizada e sempre incluir um registro único que informa que o registro foi limpo
Incluída codificação para configurar o diretório de trabalho. Isso corrigiu o erro que acontecia quando o programa era iniciado junto com o Windows, pois ele estava sendo iniciado com o diretório de trabalho em C:\Windows\System32 por padrão
Realizadas algumas configurações adicionais no SQLite
Adicionado o evento "cl"

Cambiar Resumen

Diferencia incremental

--- trunk/client/prj/CiCo.dproj (revision 23)
+++ trunk/client/prj/CiCo.dproj (revision 24)
@@ -81,10 +81,8 @@
8181 <DCC_DebugDCUs>true</DCC_DebugDCUs>
8282 <DCC_Optimize>false</DCC_Optimize>
8383 <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
84- <DCC_RemoteDebug>true</DCC_RemoteDebug>
8584 </PropertyGroup>
8685 <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
87- <DCC_RemoteDebug>false</DCC_RemoteDebug>
8886 <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
8987 <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
9088 <VerInfo_Locale>1033</VerInfo_Locale>
@@ -151,6 +149,7 @@
151149 </Source>
152150 <Excluded_Packages>
153151 <Excluded_Packages Name="$(BDSBIN)\dcloffice2k260.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
152+ <Excluded_Packages Name="D:\componentesdelphi\03-Implementacao\01-Src\_BPL\d26\JvPluginSystemDesign260.bpl">JVCL Plugin Components</Excluded_Packages>
154153 </Excluded_Packages>
155154 </Delphi.Personality>
156155 <Deployment Version="3">
--- trunk/client/src/cico/UDAMOPrincipal.pas (revision 23)
+++ trunk/client/src/cico/UDAMOPrincipal.pas (revision 24)
@@ -43,7 +43,6 @@
4343 procedure FDTASaldosdiaGetText(Sender: TField; var Text: string; DisplayText: Boolean);
4444 procedure FDTASaldossaldoGetText(Sender: TField; var Text: string; DisplayText: Boolean);
4545 procedure FDTASaldossaldomensalGetText(Sender: TField; var Text: string; DisplayText: Boolean);
46- procedure DataModuleDestroy(Sender: TObject);
4746 private
4847 { Private declarations }
4948 FLoggedUserName: String;
@@ -68,6 +67,8 @@
6867 procedure AtualizarSaldoGlobal;
6968 procedure HideMainForm;
7069 procedure ShowMainForm;
70+ procedure RegistrarEvento(AEvento: String);
71+ procedure LimparRegistroDeEventos;
7172
7273 property LoggedUserName: String read FLoggedUserName;
7374 end;
@@ -163,6 +164,18 @@
163164 FORMPrincipal.PNBBSaldoDoMes.Caption := ' 00:00';
164165 end;
165166
167+procedure TDAMOPrincipal.RegistrarEvento(AEvento: String);
168+begin
169+ if FDCO.Connected then
170+ begin
171+ FDTAEventos.Append;
172+ FDTAEventostipo.AsString := AEvento;
173+ FDTAEventosmomento.AsDateTime := now;
174+ FDTAEventos.Post;
175+ // FDTAEventos.Refresh;
176+ end;
177+end;
178+
166179 procedure TDAMOPrincipal.Reset;
167180 var
168181 H: Word;
@@ -270,6 +283,29 @@
270283 Result := StringReplace(Result,'-','',[rfReplaceAll]);
271284 end;
272285
286+procedure TDAMOPrincipal.LimparRegistroDeEventos;
287+begin
288+ FDTAEventos.DisableControls;
289+ try
290+ FDTAEventos.Last;
291+ while not FDTAEventos.Bof do
292+ begin
293+ FDTAEventos.Delete;
294+ FDTAEventos.Prior;
295+ end;
296+ // Exclui o primeiro registro que não foi excluído pelo loop anterior, caso
297+ // ele exista. Não vai existir quando se limpa o registro que tem apenas uma
298+ // entrada
299+ if not FDTAEventos.IsEmpty then
300+ FDTAEventos.Delete;
301+
302+ // Cria uma entrada no registro de eventos que informa que ele foi limpo
303+ RegistrarEvento('cl');
304+ finally
305+ FDTAEventos.EnableControls;
306+ end;
307+end;
308+
273309 procedure TDAMOPrincipal.AtualizarSaldoAtual;
274310 begin
275311 if Application.MessageBox('Isso vai atualizar o saldo do mês/ano atualmente '+
@@ -331,6 +367,20 @@
331367
332368 procedure TDAMOPrincipal.DataModuleCreate(Sender: TObject);
333369 begin
370+ // Quando este programa é executado automaticamente pelo Windows na
371+ // inicialização, o diretório de trabalho é diferente do diretório onde o
372+ // executável está. Por conta disso não é possível usar caminhos relativos
373+ // considerando que o diretório de trabalho é a pasta do executável. Para
374+ // resolver este problema, configura-se o diretório atual como sendo, de fato,
375+ // o diretório do exe. O diretório de trabalho usado na inicialização
376+ // automática é C:\Windows\System32. Outra forma interessante de solucionar
377+ // isso está explicada aqui
378+ // https://stackoverflow.com/questions/2822951/use-registry-to-startup-a-program-and-also-change-the-current-working-directory
379+ // Esta forma, entretanto, mostra como adicionar o path para o programa na
380+ // variável path do sistema, quando o programa for executado via ShellExecute.
381+ // Esta adição ao path é temporária e válida apenas para o programa em
382+ // execução, logo, isso pode ser útil um dia
383+ SetCurrentDir(ExtractFilePath(ParamStr(0)));
334384 FCanReset := True;
335385 FDCO.Connected := True;
336386
@@ -337,11 +387,6 @@
337387 OpenTables;
338388 end;
339389
340-procedure TDAMOPrincipal.DataModuleDestroy(Sender: TObject);
341-begin
342- FDCO.Connected := False;
343-end;
344-
345390 procedure TDAMOPrincipal.DoMonthBalance(AMes: Byte; AAno: Word; ASaldos: TSaldos);
346391 var
347392 i: Byte;
@@ -365,8 +410,10 @@
365410
366411 procedure TDAMOPrincipal.FDCOBeforeConnect(Sender: TObject);
367412 begin
413+ FDCO.Params.Values['DriverID'] := 'SQLite';
368414 FDCO.Params.Values['Database'] := '.\cico.db';
369- FDCO.Params.Values['DriverID'] := 'SQLite';
415+ FDCO.Params.Values['JournalMode'] := 'Memory';
416+ FDCO.Params.Values['OpenMode'] := 'CreateUTF8'
370417 end;
371418
372419 procedure TDAMOPrincipal.FDTAEventostipoGetText(Sender: TField; var Text: string; DisplayText: Boolean);
@@ -379,6 +426,8 @@
379426 Text := 'Log-Off / Reinicialização / Desligamento / Aplicação fechada'
380427 else if Sender.AsString = 'ln' then
381428 Text := 'Log-In / Aplicação iniciada'
429+ else if Sender.AsString = 'cl' then
430+ Text := 'O registro de eventos foi totalmente limpo';
382431 end;
383432
384433 procedure TDAMOPrincipal.FDTASaldosdiaGetText(Sender: TField; var Text: string; DisplayText: Boolean);
--- trunk/client/src/cico/UFORMPrincipal.pas (revision 23)
+++ trunk/client/src/cico/UFORMPrincipal.pas (revision 24)
@@ -103,10 +103,7 @@
103103 begin
104104 if Msg.EndSession = True then
105105 begin
106- DAMOPrincipal.FDTAEventos.Append;
107- DAMOPrincipal.FDTAEventostipo.AsString := 'lf';
108- DAMOPrincipal.FDTAEventosmomento.AsDateTime := now;
109- DAMOPrincipal.FDTAEventos.Post;
106+ DAMOPrincipal.RegistrarEvento('lf');
110107
111108 FAcaoAutomatica := True;
112109
@@ -126,7 +123,6 @@
126123 // mensagem de razão para o bloqueio.
127124 procedure TFORMPrincipal.WMQueryEndSession(var Msg: TWMQueryEndSession);
128125 begin
129- apagar os arquivos do sqlite aqui??
130126 if BUTNSaida.Enabled then
131127 Msg.Result := LRESULT(False)
132128 else
@@ -169,20 +165,7 @@
169165 procedure TFORMPrincipal.Button1Click(Sender: TObject);
170166 begin
171167 if TFORMPergunta.ShowMe(Self,'E aí?','Tem certeza?',0) = mrYes then
172- begin
173- DAMOPrincipal.FDTAEventos.DisableControls;
174- try
175- DAMOPrincipal.FDTAEventos.Last;
176- while not DAMOPrincipal.FDTAEventos.Bof do
177- begin
178- DAMOPrincipal.FDTAEventos.Delete;
179- DAMOPrincipal.FDTAEventos.Prior;
180- end;
181- DAMOPrincipal.FDTAEventos.Delete;
182- finally
183- DAMOPrincipal.FDTAEventos.EnableControls;
184- end;
185- end;
168+ DAMOPrincipal.LimparRegistroDeEventos;
186169 end;
187170
188171 procedure TFORMPrincipal.CBBXYearsChange(Sender: TObject);
@@ -241,10 +224,7 @@
241224
242225 procedure TFORMPrincipal.FormClose(Sender: TObject; var Action: TCloseAction);
243226 begin
244- DAMOPrincipal.FDTAEventos.Append;
245- DAMOPrincipal.FDTAEventostipo.AsString := 'lf';
246- DAMOPrincipal.FDTAEventosmomento.AsDateTime := now;
247- DAMOPrincipal.FDTAEventos.Post;
227+ DAMOPrincipal.RegistrarEvento('lf');
248228 end;
249229
250230 procedure TFORMPrincipal.FormCreate(Sender: TObject);
@@ -266,11 +246,7 @@
266246 DAMOPrincipal.CheckStatusAndUpdateGUI(DAMOPrincipal.LimparCPF(KRLECPF.Text),LAEDSenha.Text);
267247 DAMOPrincipal.TMER.Enabled := True;
268248
269- DAMOPrincipal.FDTAEventos.Append;
270- DAMOPrincipal.FDTAEventostipo.AsString := 'ln';
271- DAMOPrincipal.FDTAEventosmomento.AsDateTime := now;
272- DAMOPrincipal.FDTAEventos.Post;
273- DAMOPrincipal.FDTAEventos.Refresh;
249+ DAMOPrincipal.RegistrarEvento('ln');
274250
275251 if DAMOPrincipal.LoggedUserName <> '' then
276252 begin
@@ -348,11 +324,7 @@
348324 if Message.Msg = WM_WTSSESSION_CHANGE then
349325 case Message.wParam of
350326 WTS_SESSION_UNLOCK: begin
351- DAMOPrincipal.FDTAEventos.Append;
352- DAMOPrincipal.FDTAEventostipo.AsString := 'uk';
353- DAMOPrincipal.FDTAEventosmomento.AsDateTime := now;
354- DAMOPrincipal.FDTAEventos.Post;
355- DAMOPrincipal.FDTAEventos.Refresh;
327+ DAMOPrincipal.RegistrarEvento('uk');
356328
357329 try
358330 FAcaoAutomatica := True;
@@ -363,13 +335,7 @@
363335 FAcaoAutomatica := False;
364336 end;
365337 end;
366- WTS_SESSION_LOCK: begin
367- DAMOPrincipal.FDTAEventos.Append;
368- DAMOPrincipal.FDTAEventostipo.AsString := 'lk';
369- DAMOPrincipal.FDTAEventosmomento.AsDateTime := now;
370- DAMOPrincipal.FDTAEventos.Post;
371- DAMOPrincipal.FDTAEventos.Refresh;
372- end;
338+ WTS_SESSION_LOCK: DAMOPrincipal.RegistrarEvento('lk');
373339 end;
374340
375341 Message.Result := DefWindowProc(FHiddenWindowHandle, Message.Msg, Message.WParam, Message.LParam);
Show on old repository browser