Componentes.Terceros.UserCo.../official/2.20/Source/MsgsForm_U.pas

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.