Componentes.Terceros.UserCo.../internal/2.31RC1/1/Source/pUCFrame_Log.pas
david cc4a514b7b - Compilación para D2009
- 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
2009-03-01 17:39:41 +00:00

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.