git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.UserControl@5 970f2627-a9d2-4748-b3d4-b5283c4fe7db
347 lines
10 KiB
ObjectPascal
347 lines
10 KiB
ObjectPascal
unit MsgsForm_U;
|
|
|
|
interface
|
|
|
|
{$I 'UserControl.inc'}
|
|
|
|
uses
|
|
{$IFDEF DELPHI5_UP}
|
|
Variants,
|
|
{$ENDIF}
|
|
Classes,
|
|
ComCtrls,
|
|
Controls,
|
|
DB,
|
|
Dialogs,
|
|
ExtCtrls,
|
|
Forms,
|
|
Graphics,
|
|
ImgList,
|
|
Messages,
|
|
StdCtrls,
|
|
SysUtils,
|
|
ToolWin,
|
|
Windows;
|
|
|
|
type
|
|
TPointMsg = ^PPointMsg;
|
|
|
|
PPointMsg = record
|
|
IdMsg: Integer;
|
|
Msg: String;
|
|
end;
|
|
|
|
TMsgsForm = class(TForm)
|
|
ImageList1: TImageList;
|
|
ListView1: TListView;
|
|
ToolBar1: TToolBar;
|
|
btnova: TToolButton;
|
|
ImageList2: TImageList;
|
|
btResponder: TToolButton;
|
|
btEncaminhar: TToolButton;
|
|
btExcluir: TToolButton;
|
|
Splitter1: TSplitter;
|
|
btClose: TToolButton;
|
|
MemoMsg: TMemo;
|
|
procedure btCloseClick(Sender: TObject);
|
|
procedure btnovaClick(Sender: TObject);
|
|
procedure ListView1SelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);
|
|
procedure ListView1ColumnClick(Sender: TObject; Column: TListColumn);
|
|
procedure ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
|
|
procedure ListView1DblClick(Sender: TObject);
|
|
procedure btExcluirClick(Sender: TObject);
|
|
procedure btEncaminharClick(Sender: TObject);
|
|
procedure btResponderClick(Sender: TObject);
|
|
procedure FormShow(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
private
|
|
FColuna: Integer;
|
|
FAsc: Boolean;
|
|
FListaTPointMsg: array of TPointMsg;
|
|
procedure MontaTela;
|
|
public
|
|
DSMsgs: TDataset;
|
|
DSUsuarios: TDataset;
|
|
end;
|
|
|
|
var
|
|
MsgsForm: TMsgsForm;
|
|
|
|
implementation
|
|
|
|
uses
|
|
EnvMsgForm_U,
|
|
MsgRecForm_U,
|
|
UCBase;
|
|
|
|
{$R *.dfm}
|
|
|
|
procedure TMsgsForm.btCloseClick(Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
procedure TMsgsForm.btnovaClick(Sender: TObject);
|
|
begin
|
|
EnvMsgForm := TEnvMsgForm.Create(Self.Owner);
|
|
EnvMsgForm.DataSource1.DataSet := DSUsuarios;
|
|
EnvMsgForm.Showmodal;
|
|
FreeAndNil(EnvMsgForm);
|
|
end;
|
|
|
|
function FmtDtHr(dt: String): String;
|
|
begin
|
|
Result := Copy(dt, 7, 2) + '/' + Copy(dt, 5, 2) + '/' + Copy(dt, 1, 4) + ' ' + Copy(dt, 9, 2) + ':' + Copy(dt, 11, 2);
|
|
end;
|
|
|
|
procedure TMsgsForm.MontaTela;
|
|
var
|
|
TempPoint: TPointMsg;
|
|
begin
|
|
DSMsgs.Open;
|
|
while not DSMsgs.EOF do
|
|
begin
|
|
with ListView1.Items.Add do
|
|
begin
|
|
ImageIndex := -1;
|
|
StateIndex := -1;
|
|
Caption := DSMsgs.FieldByName('de').AsString;
|
|
SubItems.Add(DSMsgs.FieldByName('Subject').AsString);
|
|
SubItems.Add(FmtDtHr(DSMsgs.FieldByName('DtSend').AsString));
|
|
New(TempPoint);
|
|
SetLength(FListaTPointMsg, Length(FListaTPointMsg) + 1);
|
|
FListaTPointMsg[High(FListaTPointMsg)] := TempPoint;
|
|
TempPoint.IdMsg := DSMsgs.FieldByName('idMsg').AsInteger;
|
|
TempPoint.Msg := DSMsgs.FieldByName('Msg').AsString;
|
|
Data := TempPoint;
|
|
end;
|
|
DSMsgs.Next;
|
|
{$IFDEF DELPHI5}
|
|
ListView1.Selected := nil;
|
|
{$ELSE}
|
|
ListView1.ItemIndex := 0;
|
|
{$ENDIF}
|
|
|
|
end;
|
|
DSMsgs.Close;
|
|
end;
|
|
|
|
procedure TMsgsForm.ListView1SelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);
|
|
begin
|
|
if ListView1.SelCount > 1 then
|
|
begin
|
|
btResponder.Enabled := False;
|
|
btEncaminhar.Enabled := False;
|
|
end
|
|
else
|
|
begin
|
|
btResponder.Enabled := True;
|
|
btEncaminhar.Enabled := True;
|
|
end;
|
|
MemoMsg.Text := TPointMsg(Item.Data).Msg;
|
|
end;
|
|
|
|
procedure TMsgsForm.ListView1ColumnClick(Sender: TObject; Column: TListColumn);
|
|
begin
|
|
if FColuna = Column.Index then
|
|
begin
|
|
FAsc := not FAsc;
|
|
ListView1.Columns[FColuna].ImageIndex := integer(FAsc);
|
|
end
|
|
else
|
|
begin
|
|
ListView1.Columns[FColuna].ImageIndex := -1;
|
|
FColuna := Column.Index;
|
|
FAsc := True;
|
|
ListView1.Columns[FColuna].ImageIndex := integer(FAsc);
|
|
end;
|
|
(Sender as TCustomListView).AlphaSort;
|
|
end;
|
|
|
|
procedure TMsgsForm.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
|
|
var
|
|
ix: Integer;
|
|
begin
|
|
if FColuna = 0 then
|
|
begin
|
|
if FAsc then
|
|
Compare := CompareText(Item1.Caption, Item2.Caption)
|
|
else
|
|
Compare := CompareText(Item2.Caption, Item1.Caption);
|
|
end
|
|
else
|
|
begin
|
|
ix := FColuna - 1;
|
|
if FAsc then
|
|
Compare := CompareText(Item1.SubItems[ix], Item2.SubItems[ix])
|
|
else
|
|
Compare := CompareText(Item2.SubItems[ix], Item1.SubItems[ix]);
|
|
end;
|
|
end;
|
|
|
|
procedure TMsgsForm.ListView1DblClick(Sender: TObject);
|
|
begin
|
|
if ListView1.Selected = nil then
|
|
exit; //added to prevent AV error {fduenas}
|
|
MsgRecForm := TMsgRecForm.Create(Self.Owner); //midifed by fduenas
|
|
|
|
MsgRecForm.MemoMsg.Text := TPointMsg(ListView1.Selected.Data).Msg;
|
|
MsgRecForm.stDe.Caption := ListView1.Selected.Caption;
|
|
MsgRecForm.stAssunto.Caption := ListView1.Selected.SubItems[0];
|
|
MsgRecForm.stData.Caption := ListView1.Selected.SubItems[1];
|
|
|
|
MsgRecForm.ShowModal;
|
|
FreeAndNil(MsgRecForm);
|
|
end;
|
|
|
|
procedure TMsgsForm.btExcluirClick(Sender: TObject);
|
|
var
|
|
contador: Integer;
|
|
begin
|
|
{$IFDEF DELPHI5}
|
|
if ListView1.Selected = nil then
|
|
begin
|
|
//Modfied by fduenas
|
|
MessageBox(Handle, PChar(TUCApplicationMessage(Owner).UserControl.Settings.AppMessages.MsgsForm_NoMessagesSelected),
|
|
PChar(TUCApplicationMessage(Owner).UserControl.Settings.AppMessages.MsgsForm_NoMessagesSelected_WindowCaption),
|
|
MB_ICONINFORMATION + MB_OK);
|
|
Exit;
|
|
end;
|
|
{$ELSE}
|
|
if ListView1.ItemIndex = -1 then
|
|
begin
|
|
//Modfied by fduenas
|
|
MessageBox(Handle, PChar(TUCApplicationMessage(Owner).UserControl.UserSettings.AppMessages.MsgsForm_NoMessagesSelected),
|
|
PChar(TUCApplicationMessage(Owner).UserControl.UserSettings.AppMessages.MsgsForm_NoMessagesSelected_WindowCaption),
|
|
MB_ICONINFORMATION or mb_OK);
|
|
Exit;
|
|
end;
|
|
{$ENDIF}
|
|
|
|
if ListView1.SelCount = 1 then
|
|
begin
|
|
TUCApplicationMessage(Owner).DeleteAppMessage(TPointMsg(ListView1.Selected.Data).idMsg);
|
|
{$IFDEF DELPHI5}
|
|
ListView1.Selected.Delete;
|
|
{$ELSE}
|
|
ListView1.DeleteSelected;
|
|
{$ENDIF}
|
|
end
|
|
else
|
|
begin
|
|
for contador := 0 to LIstView1.Items.Count - 1 do
|
|
if ListView1.items[contador].selected then
|
|
TUCApplicationMessage(Owner).DeleteAppMessage(TPointMsg(ListView1.items[contador].Data).idMsg);
|
|
{$IFDEF DELPHI5}
|
|
ListView1.Selected.Delete;
|
|
{$ELSE}
|
|
ListView1.DeleteSelected;
|
|
{$ENDIF}
|
|
end;
|
|
|
|
end;
|
|
|
|
procedure TMsgsForm.btEncaminharClick(Sender: TObject);
|
|
var
|
|
contador: Integer;
|
|
begin
|
|
{$IFDEF DELPHI5}
|
|
if ListView1.Selected = nil then
|
|
begin
|
|
//Modfied by fduenas
|
|
MessageBox(Handle, PChar(TUCApplicationMessage(Owner).UserControl.Settings.AppMessages.MsgsForm_NoMessagesSelected),
|
|
PChar(TUCApplicationMessage(Owner).UserControl.Settings.AppMessages.MsgsForm_NoMessagesSelected_WindowCaption),
|
|
MB_ICONINFORMATION or mb_OK);
|
|
Exit;
|
|
end;
|
|
{$ELSE}
|
|
if ListView1.ItemIndex = -1 then
|
|
begin
|
|
//Modfied by fduenas
|
|
MessageBox(Handle, PChar(TUCApplicationMessage(Owner).UserControl.UserSettings.AppMessages.MsgsForm_NoMessagesSelected),
|
|
PChar(TUCApplicationMessage(Owner).UserControl.UserSettings.AppMessages.MsgsForm_NoMessagesSelected_WindowCaption),
|
|
MB_ICONINFORMATION or mb_OK);
|
|
Exit;
|
|
end;
|
|
{$ENDIF}
|
|
try
|
|
EnvMsgForm := TEnvMsgForm.Create(Self.Owner);
|
|
EnvMsgForm.DataSource1.DataSet := DSUsuarios;
|
|
if EnvMsgForm.dbUsuario.Text <> '' then
|
|
EnvMsgForm.dbUsuario.Enabled := False;
|
|
EnvMsgForm.EditAssunto.Text := Copy('Enc: ' + ListView1.Selected.SubItems[0], 1, EnvMsgForm.EditAssunto.MaxLength);
|
|
EnvMsgForm.MemoMsg.Text := TPointMsg(ListView1.Selected.Data).Msg;
|
|
for contador := 0 to EnvMsgForm.MemoMsg.Lines.Count - 1 do
|
|
EnvMsgForm.MemoMsg.Lines[contador] := '>' + EnvMsgForm.MemoMsg.Lines[contador];
|
|
EnvMsgForm.MemoMsg.Lines.Insert(0, ListView1.Selected.Caption + ' ' + ListView1.Selected.SubItems[1]);
|
|
EnvMsgForm.MemoMsg.Text := Copy(EnvMsgForm.MemoMsg.Text, 1, EnvMsgForm.MemoMsg.MaxLength);
|
|
EnvMsgForm.Showmodal;
|
|
finally
|
|
FreeAndNil(EnvMsgForm);
|
|
end;
|
|
end;
|
|
|
|
procedure TMsgsForm.btResponderClick(Sender: TObject);
|
|
begin
|
|
{$IFDEF DELPHI5}
|
|
if ListView1.Selected = nil then
|
|
begin
|
|
//Modfied by fduenas
|
|
MessageBox(Handle, PChar(TUCApplicationMessage(Owner).UserControl.Settings.AppMessages.MsgsForm_NoMessagesSelected), PChar(TUCApplicationMessage(Owner).UserControl.Settings.AppMessages.MsgsForm_NoMessagesSelected_WindowCaption), MB_ICONINFORMATION + MB_OK);
|
|
Exit;
|
|
end;
|
|
{$ELSE}
|
|
if ListView1.ItemIndex = -1 then
|
|
begin
|
|
//Modfied by fduenas
|
|
MessageBox(Handle, PChar(TUCApplicationMessage(Owner).UserControl.UserSettings.AppMessages.MsgsForm_NoMessagesSelected),
|
|
PChar(TUCApplicationMessage(Owner).UserControl.UserSettings.AppMessages.MsgsForm_NoMessagesSelected_WindowCaption),
|
|
MB_ICONINFORMATION or mb_OK);
|
|
Exit;
|
|
end;
|
|
{$ENDIF}
|
|
try
|
|
EnvMsgForm := TEnvMsgForm.Create(Self.Owner);
|
|
EnvMsgForm.rbUsuario.Checked := True;
|
|
EnvMsgForm.rbTodos.Enabled := False;
|
|
DSMsgs.Open;
|
|
DSMsgs.Locate('idMsg', TPointMsg(ListView1.Selected.Data).idMsg, []);
|
|
EnvMsgForm.DataSource1.DataSet := DSUsuarios;
|
|
EnvMsgForm.dbUsuario.KeyValue := DSMsgs.FieldByName('UsrFrom').AsInteger;
|
|
if EnvMsgForm.dbUsuario.Text <> '' then
|
|
EnvMsgForm.dbUsuario.Enabled := False;
|
|
EnvMsgForm.EditAssunto.Text := Copy('Re: ' + ListView1.Selected.SubItems[0], 1, EnvMsgForm.EditAssunto.MaxLength);
|
|
EnvMsgForm.Showmodal;
|
|
finally
|
|
DSMsgs.Close;
|
|
FreeAndNil(EnvMsgForm);
|
|
end;
|
|
end;
|
|
|
|
procedure TMsgsForm.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
var
|
|
I: Integer;
|
|
begin
|
|
for I := 0 to High(FListaTPointMsg) do
|
|
Dispose(FListaTPointMsg[I]);
|
|
|
|
if Assigned(DSMsgs) then
|
|
SysUtils.FreeAndNil(DSMsgs);
|
|
|
|
if Assigned(DSUsuarios) then
|
|
SysUtils.FreeAndNil(DSUsuarios);
|
|
end;
|
|
|
|
procedure TMsgsForm.FormCreate(Sender: TObject);
|
|
begin
|
|
SetLength(FListaTPointMsg, 0);
|
|
end;
|
|
|
|
procedure TMsgsForm.FormShow(Sender: TObject);
|
|
begin
|
|
MontaTela;
|
|
end;
|
|
|
|
end.
|