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.