www.pudn.com > 实景(图形)聊天室源代码(绝对高水 准,超酷).zip > main.pas


{ *********************************************************************** } 
{                                                                         } 
{ Copular Chat Client v3.0 Source Code                                    } 
{ Main Form Unit                                                          } 
{                                                                         } 
{ Copyright (c) 1998-2002 SAF Studio                                      } 
{                                                                         } 
{ Author  : Niu Yu Ping                                                   } 
{ Nickname: DecimalOX                                                     } 
{ Address : Jilin City China                                              } 
{                                                                         } 
{ QICQ    : 103106262                                                     } 
{ Homepage: www.safree.com                                                } 
{ EMail   : decimalox@sohu.com                                            } 
{                                                                         } 
{ *********************************************************************** } 
 
unit main; 
 
interface 
 
uses 
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
  StdCtrls, KsSkinEngine, KsHooks, KsForms, KsSkinForms, KsControls, 
  KsButtons, KsSkinButtons, ExtCtrls, ComCtrls, IniFiles; 
 
type 
  TMainForm = class(TForm) 
    FormSKE: TSeSkinEngine; 
    SeSkinForm1: TSeSkinForm; 
    GoRoomBtn: TSeSkinButton; 
    MoveTimer: TTimer; 
    RoomList: TListView; 
    procedure FormCreate(Sender: TObject); 
    procedure MoveTimerTimer(Sender: TObject); 
    procedure GoRoomBtnClick(Sender: TObject); 
    procedure RoomListDblClick(Sender: TObject); 
  private 
    { Private declarations } 
    FUserName: string; 
    FPassword: string; 
    procedure SetPassword(const Value: string); 
    procedure SetUserName(const Value: string); 
 
    //Load room list from file 
    procedure LoadRoom; 
  public 
    { Public declarations } 
 
    //Temp values is used to store name and password which in Chat Form 
    property UserName: string read FUserName write SetUserName; 
    property Password: string read FPassword write SetPassword; 
  end; 
 
var 
  MainForm: TMainForm; 
 
implementation 
 
{$R *.DFM} 
 
uses 
  Chat; 
 
procedure TMainForm.FormCreate(Sender: TObject); 
begin 
  UserName:=''; 
  Password:=''; 
 
  //Set form position 
  Top:=Screen.Height; 
  Left:=Screen.Width div 2 - Width div 2; 
 
  MoveTimer.Enabled:=True; 
  LoadRoom; 
end; 
 
procedure TMainForm.SetPassword(const Value: string); 
begin 
  FPassword := Value; 
end; 
 
procedure TMainForm.SetUserName(const Value: string); 
begin 
  FUserName := Value; 
end; 
 
//Begin moving from bottom to center 
procedure TMainForm.MoveTimerTimer(Sender: TObject); 
begin 
  Top:=Top-50; 
  if Top<=Screen.Height div 2 - Height div 2 then 
  begin 
    Top:=Screen.Height div 2 - Height div 2; 
    MoveTimer.Enabled:=False; 
  end; 
end; 
 
procedure TMainForm.LoadRoom; 
var 
  SearchRec: TSearchRec; 
begin 
  RoomList.Items.Clear; 
  if FindFirst(GetCurrentDir+'\maps\*.map', faAnyFile, SearchRec)=0 then 
    with TIniFile.Create(GetCurrentDir+'\maps\'+SearchRec.Name) do 
      try 
        with RoomList.Items.Add do 
        begin 
          Caption:=Copy(SearchRec.Name, 1, Length(SearchRec.Name)-4); 
          SubItems.Add(ReadString('Map', 'Memo', '')); 
        end; 
      finally 
        Free; 
      end; 
  while FindNext(SearchRec)=0 do 
    with TIniFile.Create(GetCurrentDir+'\maps\'+SearchRec.Name) do 
      try 
        with RoomList.Items.Add do 
        begin 
          Caption:=Copy(SearchRec.Name, 1, Length(SearchRec.Name)-4); 
          SubItems.Add(ReadString('Map', 'Memo', '')); 
        end; 
      finally 
        Free; 
      end; 
  FindClose(SearchRec); 
end; 
 
procedure TMainForm.GoRoomBtnClick(Sender: TObject); 
begin 
  if RoomList.SelCount=0 then 
    Exit; 
 
  with TChatForm.Create(Self, RoomList.Selected.Caption) do 
    try 
      ShowModal; 
    finally 
      Free; 
    end; 
end; 
 
procedure TMainForm.RoomListDblClick(Sender: TObject); 
begin 
  GoRoomBtnClick(Self); 
end; 
 
end.