- UCBase.pas -> Modificado el formato de las fechas de 'dd/mm/yyyy' a 'mm/dd/yyyy' para que funcione con Firebird. - UCBase.pas -> Cuando se llama a DelCurrentUser comprobar que realmente hay un usuario registrado. git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.UserControl@22 970f2627-a9d2-4748-b3d4-b5283c4fe7db
306 lines
9.7 KiB
ObjectPascal
306 lines
9.7 KiB
ObjectPascal
unit pUCFrame_Log;
|
|
|
|
interface
|
|
|
|
{$I 'UserControl.inc'}
|
|
|
|
uses
|
|
{$IFDEF DELPHI5_UP}
|
|
{$ELSE}
|
|
Variants,
|
|
{$ENDIF}
|
|
Buttons,
|
|
Classes,
|
|
ComCtrls,
|
|
Controls,
|
|
DB,
|
|
DBGrids,
|
|
Dialogs,
|
|
ExtCtrls,
|
|
Forms,
|
|
Graphics,
|
|
Grids,
|
|
ImgList,
|
|
Messages,
|
|
StdCtrls,
|
|
SysUtils,
|
|
UCBase,
|
|
Windows;
|
|
|
|
type
|
|
TUCFrame_Log = class(TFrame)
|
|
DataSource1: TDataSource;
|
|
ImageList1: TImageList;
|
|
DBGrid1: TDBGrid;
|
|
Panel1: TPanel;
|
|
lbUsuario: TLabel;
|
|
lbData: TLabel;
|
|
lbNivel: TLabel;
|
|
Bevel3: TBevel;
|
|
btfiltro: TBitBtn;
|
|
btfecha: TBitBtn;
|
|
btexclui: TBitBtn;
|
|
ComboUsuario: TComboBox;
|
|
Data1: TDateTimePicker;
|
|
Data2: TDateTimePicker;
|
|
ComboNivel: TComboBox;
|
|
procedure ComboNivelDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
|
|
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
|
|
procedure ComboUsuarioChange(Sender: TObject);
|
|
procedure btexcluiClick(Sender: TObject);
|
|
procedure Data1Change(Sender: TObject);
|
|
procedure btfiltroClick(Sender: TObject);
|
|
private
|
|
procedure AplicaFiltro;
|
|
public
|
|
ListIdUser: TStringList;
|
|
DSLog, DSCmd: TDataset;
|
|
FUsercontrol: TUserControl;
|
|
procedure SetWindow;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
UCDataInfo;
|
|
|
|
{$R *.dfm}
|
|
destructor TUCFrame_Log.Destroy;
|
|
begin
|
|
FreeAndnil( DSLog );
|
|
FreeAndnil( DSCmd );
|
|
FreeAndNil( ListIdUser );
|
|
inherited;
|
|
end;
|
|
|
|
procedure TUCFrame_Log.ComboNivelDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
|
|
var
|
|
TempImg: Graphics.TBitmap;
|
|
begin
|
|
TempImg := Graphics.TBitmap.Create;
|
|
Imagelist1.GetBitmap(Index, TempImg);
|
|
ComboNivel.Canvas.Draw(Rect.Left + 5, Rect.Top + 1, TempImg);
|
|
ComboNivel.Canvas.TextRect(Rect, Rect.Left + 30, Rect.Top + 2, ComboNivel.items[Index]);
|
|
ComboNivel.Canvas.Draw(Rect.Left + 5, Rect.Top + 1, TempImg);
|
|
FreeAndNil(TempImg);
|
|
end;
|
|
|
|
procedure TUCFrame_Log.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
|
|
var
|
|
TempImg: Graphics.TBitmap;
|
|
FData: System.TDateTime;
|
|
TempData: String;
|
|
begin
|
|
if DSLog.IsEmpty then
|
|
Exit;
|
|
|
|
if UpperCase(Column.FieldName) = 'NIVEL' then
|
|
begin
|
|
if Column.Field.AsInteger >= 0 then
|
|
begin
|
|
TempImg := Graphics.TBitmap.Create;
|
|
imagelist1.GetBitmap(Column.Field.AsInteger, TempImg);
|
|
DbGrid1.Canvas.Draw((((Rect.Left + Rect.Right) - TempImg.Width) div 2), rect.Top, Tempimg);
|
|
FreeAndNil(TempImg);
|
|
end
|
|
else
|
|
DbGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Column.Field.AsString);
|
|
end
|
|
else
|
|
if UpperCase(Column.FieldName) = 'DATA' then
|
|
begin
|
|
TempData := Column.Field.AsString;
|
|
FData := EncodeDate(StrToInt(Copy(Tempdata, 1, 4)), StrToInt(Copy(Tempdata, 5, 2)), StrToInt(Copy(Tempdata, 7, 2))) +
|
|
EncodeTime(StrToInt(Copy(TempData, 9, 2)), StrToInt(Copy(TempData, 11, 2)), StrToInt(Copy(TempData, 13, 2)), 0);
|
|
DbGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, DateTimeToStr(FData));
|
|
end
|
|
else
|
|
DbGrid1.Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Column.Field.AsString);
|
|
end;
|
|
|
|
procedure TUCFrame_Log.ComboUsuarioChange(Sender: TObject);
|
|
begin
|
|
btFiltro.Enabled := True;
|
|
end;
|
|
|
|
procedure TUCFrame_Log.btexcluiClick(Sender: TObject);
|
|
var
|
|
FTabLog, Temp: String;
|
|
begin
|
|
//modified by fduenas
|
|
if MessageBox(Handle, PChar(FUsercontrol.UserSettings.Log.PromptDelete),
|
|
PChar(FUsercontrol.UserSettings.Log.PromptDelete_WindowCaption), mb_YesNo) <> mrYes then
|
|
Exit;
|
|
|
|
btFiltro.Enabled := False;
|
|
FTabLog := FUsercontrol.LogControl.TableLog;
|
|
Temp := 'Delete from ' + FTabLog +
|
|
' Where (Data >=' + QuotedStr(FormatDateTime('yyyyMMddhhmmss', data1.DateTime)) + ') ' +
|
|
' and (Data <=' + QuotedStr(FormatDateTime('yyyyMMddhhmmss', data2.DateTime)) + ') ' +
|
|
' and nivel >=' + IntToStr(ComboNivel.ItemIndex);
|
|
|
|
if ComboUsuario.ItemIndex > 0 then
|
|
Temp := Temp + ' and ' + FTabLog + '.idUser = ' + ListIdUser[ComboUsuario.ItemIndex];
|
|
|
|
try
|
|
FUsercontrol.DataConnector.UCExecSQL(Temp);
|
|
AplicaFiltro;
|
|
DBGrid1.Repaint;
|
|
except
|
|
end;
|
|
|
|
try
|
|
FUsercontrol.Log(Format(FUsercontrol.UserSettings.Log.DeletePerformed, [comboUsuario.Text, DateTimeToStr(Data1.datetime), DateTimeToStr(Data2.datetime), ComboNivel.Text]), 2);
|
|
except;
|
|
end;
|
|
|
|
end;
|
|
|
|
procedure TUCFrame_Log.Data1Change(Sender: TObject);
|
|
begin
|
|
btFiltro.Enabled := True;
|
|
end;
|
|
|
|
procedure TUCFrame_Log.btfiltroClick(Sender: TObject);
|
|
begin
|
|
AplicaFiltro;
|
|
end;
|
|
|
|
procedure TUCFrame_Log.AplicaFiltro;
|
|
var
|
|
FTabUser, FTabLog: String;
|
|
Temp: String;
|
|
begin
|
|
btFiltro.Enabled := False;
|
|
DSLog.Close;
|
|
FTabLog := FUsercontrol.LogControl.TableLog;
|
|
FTabUser := FUsercontrol.TableUsers.TableName;
|
|
|
|
Temp := Format('Select TabUser.' + FUsercontrol.TableUsers.FieldUserName + ' as nome, ' + FTabLog + '.* ' +
|
|
'from ' + FTabLog +
|
|
' Left outer join %s TabUser on ' + FTabLog + '.idUser = TabUser.%s ' +
|
|
'Where (data >= ' + QuotedStr(FormatDateTime('yyyyMMddhhmmss', data1.DateTime)) + ') ' +
|
|
'and (Data <= ' + QuotedStr(FormatDateTime('yyyyMMddhhmmss', data2.DateTime)) + ') ' +
|
|
'and nivel >= ' + IntToStr(ComboNivel.ItemIndex),
|
|
[FUsercontrol.TableUsers.TableName, FUsercontrol.TableUsers.FieldUserID]);
|
|
|
|
if ComboUsuario.ItemIndex > 0 then
|
|
Temp := Temp + ' and ' + FTabLog + '.idUser = ' + ListIdUser[ComboUsuario.ItemIndex];
|
|
|
|
Temp := Temp + ' order by data desc';
|
|
|
|
FreeAndNil(DSLog);
|
|
DataSource1.DataSet := nil;
|
|
DSLog := FUsercontrol.DataConnector.UCGetSQLDataset(Temp);
|
|
DataSource1.DataSet := DSLog;
|
|
btexclui.Enabled := not DsLog.IsEmpty;
|
|
end;
|
|
|
|
procedure TUCFrame_Log.SetWindow;
|
|
var
|
|
TabelaLog: String;
|
|
SQLStmt: String;
|
|
begin
|
|
ComboNivel.Items.Clear;
|
|
ComboNivel.Items.Append(FUsercontrol.UserSettings.Log.OptionLevelLow); //BGM
|
|
ComboNivel.Items.Append(FUsercontrol.UserSettings.Log.OptionLevelNormal); //BGM
|
|
ComboNivel.Items.Append(FUsercontrol.UserSettings.Log.OptionLevelHigh); //BGM
|
|
ComboNivel.Items.Append(FUsercontrol.UserSettings.Log.OptionLevelCritic); //BGM
|
|
ComboNivel.ItemIndex := 0;
|
|
ComboUsuario.Items.Clear;
|
|
data1.Date := EncodeDate(StrToInt(FormatDateTime('yyyy', Date)), 1, 1);
|
|
data2.DateTime := Now;
|
|
|
|
if Assigned( ListIdUser ) = False then
|
|
ListIdUser := TStringList.Create
|
|
else ListIdUser.Clear;
|
|
|
|
|
|
with FUsercontrol do
|
|
if ((FUsercontrol.CurrentUser.Privileged = True) or
|
|
(FUsercontrol.CurrentUser.UserLogin = FUsercontrol.Login.InitialLogin.User)) then
|
|
begin
|
|
DSCmd := DataConnector.UCGetSQLDataset(
|
|
Format('SELECT %s AS IDUSER, %s AS NOME , %s AS LOGIN FROM %s WHERE %s = %s ORDER BY %s',
|
|
[TableUsers.FieldUserID,
|
|
TableUsers.FieldUserName,
|
|
TableUsers.FieldLogin,
|
|
TableUsers.TableName,
|
|
TableUsers.FieldTypeRec,
|
|
QuotedStr('U'),
|
|
TableUsers.FieldUserName]));
|
|
ComboUsuario.Items.Append(FUsercontrol.UserSettings.Log.OptionUserAll);
|
|
ListIdUser.Append('0');
|
|
end
|
|
else
|
|
DSCmd := DataConnector.UCGetSQLDataset(
|
|
Format('SELECT %s AS IDUSER, %s AS NOME , %s AS LOGIN FROM %s WHERE %s = %s and %s = %s ORDER BY %s',
|
|
[TableUsers.FieldUserID,
|
|
TableUsers.FieldUserName,
|
|
TableUsers.FieldLogin,
|
|
TableUsers.TableName,
|
|
TableUsers.FieldTypeRec,
|
|
QuotedStr('U'),
|
|
TableUsers.FieldLogin,
|
|
QuotedStr(FUsercontrol.CurrentUser.UserLogin),
|
|
TableUsers.FieldUserName]));
|
|
|
|
while not DSCmd.EOF do
|
|
begin
|
|
ComboUsuario.Items.Append(DSCmd.FieldByName('Nome').AsString);
|
|
ListIdUser.Append(DSCmd.FieldByName('idUser').AsString);
|
|
DSCmd.Next;
|
|
end;
|
|
|
|
|
|
DSCmd.Close;
|
|
FreeAndNil(DSCmd);
|
|
|
|
ComboUsuario.ItemIndex := 0;
|
|
|
|
|
|
TabelaLog := FUsercontrol.LogControl.TableLog;
|
|
with FUsercontrol do
|
|
begin
|
|
SQLStmt := 'SELECT ' + TableUsers.TableName + '.' + TableUsers.FieldUserName + ' AS NOME, ' + TabelaLog + '.* from ' + TabelaLog +
|
|
' LEFT OUTER JOIN ' + TableUsers.TableName + ' on ' + TabelaLog + '.idUser = ' + TableUsers.TableName + '.' + TableUsers.FieldUserID +
|
|
' WHERE (DATA >=' + QuotedStr(FormatDateTime('yyyyMMddhhmmss', data1.DateTime)) + ') AND (DATA<=' + QuotedStr(FormatDateTime('yyyyMMddhhmmss', data2.DateTime)) + ') ORDER BY DATA DESC';
|
|
DSLog := DataConnector.UCGetSQLDataset(SQLStmt);
|
|
end;
|
|
DataSource1.Dataset := DSLog;
|
|
btexclui.Enabled := not DsLog.IsEmpty;
|
|
|
|
|
|
with FUsercontrol.UserSettings.Log, DBGrid1 do
|
|
begin
|
|
lbUsuario.Caption := LabelUser;
|
|
lbData.Caption := LabelDate;
|
|
lbNivel.Caption := LabelLevel;
|
|
BtFiltro.Caption := BtFilter;
|
|
BtExclui.Caption := BtDelete;
|
|
BtFecha.Caption := BtClose;
|
|
|
|
Columns[0].Title.Caption := ColAppID;
|
|
Columns[0].FieldName := 'APPLICATIONID';
|
|
Columns[0].Width := 60;
|
|
Columns[1].Title.Caption := ColLevel;
|
|
Columns[1].FieldName := 'NIVEL';
|
|
Columns[1].Width := 32;
|
|
Columns[2].Title.Caption := ColMessage;
|
|
Columns[2].FieldName := 'MSG';
|
|
Columns[2].Width := 260;
|
|
Columns[3].Title.Caption := ColUser;
|
|
Columns[3].FieldName := 'NOME';
|
|
Columns[3].Width := 120;
|
|
Columns[4].Title.Caption := ColDate;
|
|
Columns[4].FieldName := 'DATA';
|
|
Columns[4].Width := 111;
|
|
end;
|
|
|
|
Bevel3.Width := Panel1.Width - 32;
|
|
Bevel3.Left := 16;
|
|
end;
|
|
|
|
end.
|