www.pudn.com > 200589952618.rar > mainformpas.pas
unit mainformpas;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, ComCtrls, IdBaseComponent,
IdComponent, IdTCPConnection, IdTCPClient, mytype, myconst, TCPthreadpas,
Menus, ImgList, OleCtrls, SHDocVw, Buttons, main, IdAntiFreezeBase,
IdAntiFreeze, WinSkinData;
type
Tmainform = class(TForm)
Panel2: TPanel;
onlineview: TListView;
Splitter2: TSplitter;
Panel3: TPanel;
ColorBox1: TColorBox;
IdTCPClient1: TIdTCPClient;
chatlist: TRichEdit;
Edit1: TEdit;
Edit2: TEdit;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
ImageList1: TImageList;
Button1: TButton;
Label1: TLabel;
N2: TMenuItem;
IdAntiFreeze1: TIdAntiFreeze;
faceimg: TImage;
facelist: TImageList;
Button2: TButton;
MainMenu1: TMainMenu;
Help1: TMenuItem;
About1: TMenuItem;
SkinData: TSkinData;
procedure FormCreate(Sender: TObject);
procedure Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Edit1DblClick(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button2Click(Sender: TObject);
procedure About1Click(Sender: TObject);
private
{ Private declarations }
public
user: Ruserdata;
tcp1: Ttcpthread;
end;
var
mainform: Tmainform;
implementation
uses loginformpas,About;
{$R *.dfm}
procedure Tmainform.FormCreate(Sender: TObject);
var
loginform: Tloginform;
img: Tbitmap;
begin
SkinData.SkinFile := 'skins\skin0000.skn';
SkinData.Active := True;
loginform := Tloginform.Create(self);
loginform.ShowModal;
self.DoubleBuffered := True;
mainform.Caption := 'Tetris Game Center - ' + self.user.username;
tcp1.setobject(IdTCPClient1, onlineview, chatlist);
img := Tbitmap.Create;
facelist.GetBitmap(tcp1.user.face, img);
faceimg.Picture.assign(img);
img.free;
tcp1.Resume;
end;
procedure Tmainform.Edit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
ctext: Rcommandtext;
mestext: Rtextdata;
begin
if Key = 13 then
begin
ctext.command := Csendtext;
mestext.fromwho := self.user.username;
mestext.towho := Edit1.Text;
mestext.Text := TEdit(Sender).Text;
mestext.size := 10;
mestext.color := ColorBox1.Selected;
Edit2.Text := '';
IdTCPClient1.WriteBuffer(ctext, sizeof(ctext));
IdTCPClient1.WriteBuffer(mestext, sizeof(mestext));
end;
end;
procedure Tmainform.Edit1DblClick(Sender: TObject);
begin
TEdit(Sender).Text := '所有人';
end;
procedure Tmainform.N1Click(Sender: TObject);
begin
if onlineview.Selected.Caption <> self.user.username then
Edit1.Text := onlineview.Selected.Caption
else
showmessage('不能与自己对话!');
end;
procedure Tmainform.Button1Click(Sender: TObject);
var
ctext: Rcommandtext;
begin
try
ctext.command := Cmodiwhatdoing;
if TButton(Sender).Caption = '备战' then
begin
ctext.num := 1;
IdTCPClient1.WriteBuffer(ctext, sizeof(ctext));
IdTCPClient1.WriteBuffer(self.user, sizeof(self.user));
TButton(Sender).Caption := '休息';
self.Button2.Enabled := False;
tcp1.frmMain := TfrmMain.Create(Application);
tcp1.frmMain.IdTCPClient1 := IdTCPClient1;
tcp1.frmMain.playerme := user;
tcp1.frmMain.Visible := True;
end
else
begin
if tcp1.frmMain.Width = 487 then
begin
ctext.command := Clogout;
IdTCPClient1.WriteBuffer(ctext, sizeof(ctext));
IdTCPClient1.WriteBuffer(tcp1.frmMain.playerenemy, sizeof(tcp1.frmMain.playerenemy));
end;
ctext.command := Cmodiwhatdoing;
ctext.num := 0;
IdTCPClient1.WriteBuffer(ctext, sizeof(ctext));
IdTCPClient1.WriteBuffer(self.user, sizeof(self.user));
TButton(Sender).Caption := '备战';
self.Button2.Enabled := True;
tcp1.frmMain.mnuExitClick;
end;
except
on e: exception do
begin
showmessage('与服务器连接失败,请稍候重试');
exit;
end;
end;
end;
procedure Tmainform.N2Click(Sender: TObject);
var
ctext: Rcommandtext;
i: integer;
userdata: Ruserdata;
begin
if onlineview.Selected.imageindex <> 1 then
begin
showmessage('对方并没有备战');
exit;
end;
if self.Button1.Caption = '备战' then
begin
showmessage('请先备战才可与对手对局');
exit;
end;
if onlineview.Selected.Caption = self.user.username then
begin
showmessage('不能与自己对局,请选择其他对手');
exit;
end;
ctext.command := Cstart;
for i := high(tcp1.online) downto 0 do
begin
if tcp1.online[i].username = onlineview.Selected.Caption then
begin
userdata := tcp1.online[i];
break;
end;
end;
IdTCPClient1.WriteBuffer(ctext, sizeof(ctext));
IdTCPClient1.WriteBuffer(userdata, sizeof(userdata));
end;
procedure Tmainform.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Application.Terminate;
end;
procedure Tmainform.Button2Click(Sender: TObject);
begin
self.Close;
end;
procedure Tmainform.About1Click(Sender: TObject);
begin
application.CreateForm(TFAbout,FAbout);
FAbout.Show;
end;
end.