📄 roomc.~pas
字号:
unit RoomC;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, ToolWin, Menus, ImgList, ActnList, TalkWithServer,
CommonDef, Login, TypInfo;
type
TFrmMain = class(TForm)
mmuMain: TMainMenu;
sbrMain: TStatusBar;
tbrMain: TToolBar;
pclMain: TPageControl;
tstRoom: TTabSheet;
tstCorrMan: TTabSheet;
pnlRoom: TPanel;
lvwRoom: TListView;
pnlCorrMan: TPanel;
lvwCorrMan: TListView;
ImageList1: TImageList;
altFunctions: TActionList;
acnLogOn: TAction;
acnLogOff: TAction;
acnAddCorrMan: TAction;
acnDelCorrMan: TAction;
acnOpenRoom: TAction;
acnAttendRoom: TAction;
acnLeaveRoom: TAction;
acnCloseRoom: TAction;
tbnLogOn: TToolButton;
tbnLogOff: TToolButton;
tbnAddCorrMan: TToolButton;
tbnDelCorrMan: TToolButton;
tbnOpenRoom: TToolButton;
tbnAttendRoom: TToolButton;
ImageList2: TImageList;
ToolButton7: TToolButton;
ToolButton10: TToolButton;
acnExit: TAction;
acnAbout: TAction;
miFile: TMenuItem;
miRoom: TMenuItem;
miHelp: TMenuItem;
miLogOn: TMenuItem;
miLogOff: TMenuItem;
miExit: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
miCorrMan: TMenuItem;
miAddCorrMan: TMenuItem;
N8: TMenuItem;
miDelCorrMan: TMenuItem;
miAttendRoom: TMenuItem;
miCloseRoom: TMenuItem;
miLeaveRoom: TMenuItem;
miOpenRoom: TMenuItem;
miAbout: TMenuItem;
acnOpenTalk: TAction;
N15: TMenuItem;
miOpenTalk: TMenuItem;
pmuRoom: TPopupMenu;
miPOpenRoom: TMenuItem;
miPCloseRoom: TMenuItem;
miPAttendRoom: TMenuItem;
miPLeaveRoom: TMenuItem;
pmuCorrMan: TPopupMenu;
miPAddCorrMan: TMenuItem;
N22: TMenuItem;
miPOpenTalk: TMenuItem;
N24: TMenuItem;
procedure acnExitExecute(Sender: TObject);
procedure acnAboutExecute(Sender: TObject);
procedure acnAddCorrManExecute(Sender: TObject);
procedure acnDelCorrManExecute(Sender: TObject);
procedure lvwCorrManSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
procedure FormCreate(Sender: TObject);
procedure sbrMainResize(Sender: TObject);
procedure lvwRoomSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
procedure pclMainChange(Sender: TObject);
procedure lvwCorrManInfoTip(Sender: TObject; Item: TListItem;
var InfoTip: String);
procedure lvwRoomInfoTip(Sender: TObject; Item: TListItem;
var InfoTip: String);
procedure acnLogOnExecute(Sender: TObject);
procedure acnLogOffExecute(Sender: TObject);
private
{ Private declarations }
FLogined: Boolean;
FLoginName: string;
FLoginDateTime: string;
procedure AddCorrManToList(CorrMan: TMyCorrMan);
procedure DelCorrManFromList(CorrMan: TMyCorrMan);
procedure SetCorrManCommandStatus(Enabled: Boolean);
protected
procedure SetLoginName(Value: string);
public
{ Public declarations }
procedure DisplayHint(Sender: Tobject);
property LoginName: string read FLoginName write SetLoginName;
end;
var
FrmMain: TFrmMain;
implementation
uses About;
{$R *.dfm}
procedure TFrmMain.acnExitExecute(Sender: TObject);
begin
close;
end;
procedure TFrmMain.acnAboutExecute(Sender: TObject);
begin
frmAbout.ShowModal;
end;
/////////////////这些不是系统自带的,由用户增加/////////////////
procedure TFrmMain.AddCorrManToList(CorrMan: TMyCorrMan);
var
ListItem: TListItem;
Status: string;
begin
CorrMan.EmailAddress := 'zhou@163.com';
CorrMan.MessageCount := 10;
ListItem := lvwCorrMan.Items.Add;
ListItem.Caption := CorrMan.UserName;
ListItem.SubItems.Add(CorrMan.EmailAddress);
ListItem.SubItems.Add(IntToStr(CorrMan.MessageCount));
Status := GetEnumName(TypeInfo(TCorrManStatus), Ord(CorrMan.Status));
ListItem.SubItems.Add(Status);
end;
procedure TFrmMain.DelCorrManFromList(CorrMan: TMyCorrMan);
var
// ListItem: TListItem;
I: Integer;
begin
// ListItem := lvwCorrMan.Items.Add;
for I:=lvwCorrMan.Items.Count-1 downto 0 do
if (lvwCorrMan.Items[I].Caption = CorrMan.UserName) then
begin
lvwCorrMan.Items[I].Delete;//删除当前行
end;
end;
procedure TFrmMain.SetCorrManCommandStatus(Enabled: Boolean);
begin
acnDelCorrMan.Enabled := Enabled;
acnOpenTalk.Enabled := Enabled;
end;
procedure TFrmMain.DisplayHint(Sender: Tobject);
begin
sbrMain.Panels.Items[0].Text := GetLongHint(Application.Hint);
end;
///////////////////////////////////////////////////////////////
procedure TFrmMain.acnAddCorrManExecute(Sender: TObject);
var
UserName : String;
SvrResult : TSvrResult;
MyCorrMan : TMyCorrMan;
begin
UserName := '';
UserName := InputBox('添加联系人', '请输入需要添加的联系人的用户名', UserName);
//ShowMessage('你输入的联系人的用户名是' + UserName);
if UserName = '' then
Exit;
//与服务器进行通信
MyCorrMan.UserName := UserName;
SendAddCorrManCommandToServer(SvrResult, MyCorrMan);
//修改联系人列表
SvrResult := srtOk;/////////////////
if SvrResult = srtOk then
begin
AddCorrManToList(MyCorrMan);
ShowMessage('成功添加联系人'+ UserName + '到联系人列表!');
end
else
begin
ShowMessage('添加联系人'+ UserName + '到联系人列表失败!');
end;
end;
procedure TFrmMain.acnDelCorrManExecute(Sender: TObject);
var
I : Integer;
SvrResult : TSvrResult;
MyCorrMan : TMyCorrMan;
Tmp: Integer;
begin
if lvwCorrMan.SelCount < 1 then
Exit;
Tmp := lvwCorrMan.Items.Count-1;
for I:=0 to lvwCorrMan.Items.Count-1 do
begin
//ShowMessage();
if (not lvwCorrMan.Items[I].Selected) then
continue;
MyCorrMan.UserName := lvwCorrMan.Items[I].Caption;
//与服务器通信
SendDelCorrManCommandToServer(SvrResult, MyCorrMan);
//修改联系人列表
SvrResult := srtOK;////////////////
if (SvrResult = srtOK) then
begin
DelCorrManFromList(MyCorrMan);
Dec(Tmp);
ShowMessage('成功从联系人列表中删除联系人' + MyCorrMan.UserName + '!');
end else
begin
ShowMessage('从联系人列表中删除联系人' + MyCorrMan.UserName + '失败!');
end;
if (I >= Tmp) then
break;
end;
end;
procedure TFrmMain.lvwCorrManSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
var
SelectedCount : Integer;
UnselectedCount : Integer;
AllItemsCount : Integer;
begin
//控制菜单状态
if (selected) then
SetCorrManCommandStatus(selected)
else
SetCorrManCommandStatus(Item.ListView.SelCount > 0);
//在状态栏上显示状态信息
AllItemsCount := lvwCorrMan.Items.Count;
SelectedCount := lvwCorrMan.SelCount;
UnselectedCount := AllItemsCount - SelectedCount;
sbrMain.Panels.Items[0].Text := '选择 ' + IntToStr(SelectedCount)
+ ' 个联系人对象' + IntToStr(UnselectedCount) + ' 个未选择的联系人对象. 共 '
+ IntToStr(AllItemsCount) + ' 个联系人对象';
end;
procedure TFrmMain.FormCreate(Sender: TObject);
begin
Application.OnHint := DisplayHint;
LoginName := ' ';
end;
procedure TFrmMain.sbrMainResize(Sender: TObject);
begin
sbrMain.Panels.Items[0].Width := sbrMain.Width
- sbrMain.Panels.Items[1].Width - sbrMain.Panels.Items[2].Width;
end;
procedure TFrmMain.lvwRoomSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
var
SelectedCount : Integer;
UnselectedCount : Integer;
AllItemsCount : Integer;
begin
AllItemsCount := lvwRoom.Items.Count;
SelectedCount := lvwRoom.SelCount;
UnselectedCount := AllItemsCount - SelectedCount;
sbrMain.Panels.Items[0].Text := '选择 ' + IntToStr(SelectedCount)
+ ' 个会议对象' + IntToStr(UnselectedCount) + ' 个未选择的会议对象. 共 '
+ IntToStr(AllItemsCount) + ' 个会议对象' ;
end;
procedure TFrmMain.pclMainChange(Sender: TObject);
begin
if (pclMain.ActivePageIndex = 0) then
sbrMain.Panels.Items[1].Text := '会议'
else
sbrMain.Panels.Items[1].Text := '联系人';
end;
procedure TFrmMain.lvwCorrManInfoTip(Sender: TObject; Item: TListItem;
var InfoTip: String);
begin
InfoTip := '称呼' + Item.Caption + #13#10
+ '邮件:' + Item.SubItems.Strings[0] + #13#10
+ '发言:' + Item.SubItems.Strings[1] + #13#10
+ '状态:' + Item.SubItems.Strings[2];
end;
procedure TFrmMain.lvwRoomInfoTip(Sender: TObject; Item: TListItem;
var InfoTip: String);
begin
InfoTip := '主题' + Item.Caption + #13#10
+ '状态:' + Item.SubItems.Strings[0] + #13#10
+ '发起:' + Item.SubItems.Strings[1] + #13#10
+ '等级:' + Item.SubItems.Strings[2] + #13#10
+ '人数:' + Item.SubItems.Strings[3] + #13#10
+ '开始:' + Item.SubItems.Strings[4] + #13#10
+ '备注:' + Item.SubItems.Strings[5];
end;
procedure TFrmMain.acnLogOnExecute(Sender: TObject);
var
SvrResult: TSvrResult;
UserName: string;
Password: string;
begin
if (FLogined) then
begin
LogoffFromServer(SvrResult, LoginName);
end;
if (frmLogin.ShowModal <> mrOk) then
Exit;
UserName := frmLogin.UserName;
Password := frmLogin.Password;
LoginToServer(SvrResult, UserName, Password);
if (SvrResult = srtOk) then
LoginName := UserName
else
ShowMessage('登录错误(用户名或密码错误)');
end;
procedure TFrmMain.SetLoginName(Value: string);
var
SvrResult: TSvrResult;
List: array of TMyCorrMan;
Count, Size, I: Integer;
begin
FLoginName := Value;
if (FLoginName <> ' ') then
begin
FLogined := True;
FLoginDateTime := DateTimeToStr(Now);
Caption := Application.Title + ' - ' + FLoginName + '(已登录)';
//to get corrman list
Size := 1024;
SetLength(List, Size);
GetCorrManListFromServer(SvrResult, FLoginName, Count, List, Size);
for I:=0 to Count-1 do
begin
AddCorrManToList(List[I]);
end;
SetLength(List, 0);
end
else
begin
FLogined := False;
Caption := Application.Title + ' -未登录';
end;
end;
procedure TFrmMain.acnLogOffExecute(Sender: TObject);
var
SvrResult: TSvrResult;
begin
if (not FLogined) then
Exit;
LogoffFromServer(SvrResult, LoginName);
if (SvrResult = srtOk) then
begin
LoginName := ' ';
end
else
ShowMessage('注销失败(网络连接失败)');
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -