www.pudn.com > Client599.rar > MaketSystem.pas
unit MaketSystem;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Dialogs,
Grobal2 , HUtil32, EdCode;
const
MAKET_ITEMCOUNT_PER_PAGE = 10;
MAKET_MAX_PAGE = 12;
MAKET_MAX_ITEM_COUNT = MAKET_ITEMCOUNT_PER_PAGE * MAKET_MAX_PAGE;
MAKET_STATE_EMPTY = 0;
MAKET_STATE_LOADING = 1;
MAKET_STATE_LOADED = 2;
{
TMaketItem = record
Item : TClientItem; // º¯°æµÈ ´É·ÂÄ¡´Â ¿©±â¿¡ Àû¿ëµÊ.
SellIndex : integer; // ÆÇ¸Å¹øÈ£
SellPrice : integer; // ÆÇ¸Å °¡°Ý
SellWho : string[20]; // ÆÇ¸ÅÀÚ
Selldate : string[10] // ÆÇ¸Å³¯Â¥(0312311210 = 2003-12-31 12:10 )
SellState : word // 1 = ÆÇ¸ÅÁß , 2 = ÆÇ¸Å¿Ï·á
end;
}
type
TMarketItemManager = class(TObject)
private
FState : integer; // ¸Þ´ÏÀú »óÅÂ 0 = Empty , 1 = Loading 2 = Full
FMaxPage : integer; // ÃÖ´ë ÆäÀÌÁö
FCurrPage : integer; // ÇöÀç ÆäÀÌÁö
FLoadedpage : integer; // ·ÎµùµÈ ÃÖ´ë ÆäÀÌÁö
FItems : TList; // MaketItem ÀÇ ¸®½ºÆ®
FSelectedIndex : integer; // ¼±ÅÃµÈ À妽º
FUserMode : integer;
FItemType : integer;
bFirst : integer;
public
RecvCurPage : integer;
RecvMaxPage : integer;
private
procedure RemoveAll;
procedure InitFirst;
function CheckIndex( index_ : integer) : Boolean;
public
constructor Create;
destructor Destroy; override;
procedure Load;
procedure ReLoad;
Procedure Add( pInfo_ :PTMarketItem );
Procedure Delete( Index_ : integer );
Procedure Clear;
function GetItem( Index_ : integer ; var rSelected : Boolean):PTMarketItem; overload;
function GetItem( Index_ : integer ):PTMarketItem; overload;
function Select( Index_ :integer): Boolean;
function IsEmpty : Boolean;
function Count : integer;
function GetFirst : integer;
function PageCount:integer;
function GetUserMode : integer;
function GetItemType : integer;
procedure OnMsgReadData(msg :TDefaultMessage;body : string);
procedure OnMsgWriteData(msg :TDefaultMessage;body : string);
end;
var
g_Market : TMarketItemManager;
implementation
uses
ClMain;
// »ý¼ºÀÚ
constructor TMarketItemManager.Create;
begin
InitFirst;
end;
// ¼Ò¸êÀÚ
destructor TMarketItemManager.Destroy;
begin
RemoveAll;
inherited;
end;
// µ¥ÀÌÅÍ »èÁ¦
procedure TMarketItemManager.RemoveAll;
var
i : integer;
pinfo : PTMarketItem;
begin
for i := FItems.count -1 downto 0 do
begin
pinfo := FItems.Items[i];
if pinfo <> nil then dispose ( pinfo );
FItems.delete(i);
end;
FItems.Clear;
FState := MAKET_STATE_EMPTY;
end;
function TMarketItemManager.CheckIndex ( Index_ : integer ) : Boolean;
begin
if ( Index_ >= 0 )and ( Index_ < FItems.count ) then result := true
else result := false;
end;
// ÃʱâÈ
procedure TMarketItemManager.InitFirst;
begin
FItems := TList.Create;
FSelectedIndex := -1;
FState := MAKET_STATE_EMPTY;
RecvCurPage := 0;
RecvMaxPage := 0;
end;
// µ¥ÀÌÅÍ Àоî¿È
procedure TMarketItemManager.Load;
begin
if IsEmpty and ( FState = MAKET_STATE_EMPTY) then
begin
// µ¥ÀÌÅÍ ÀбâÀ§ÇÑ ¸Þ¼¼Áö Àü¼Û
// OnMsgReadData;
end;
end;
procedure TMarketItemManager.ReLoad;
begin
if not IsEmpty then RemoveAll;
Load;
end;
//¾ÆÀÌÅÛ Ãß°¡
Procedure TMarketItemManager.Add( pInfo_ :PTMarketItem );
begin
if (FItems <> nil) and ( pInfo_ <> nil) then
begin
FItems.Add ( pInfo_ );
end;
end;
//¾ÆÀÌÅÛ »èÁ¦
Procedure TMarketItemManager.Delete( Index_ : integer );
begin
end;
Procedure TMarketItemManager.Clear;
begin
RemoveAll;
InitFirst;
end;
// µ¥ÀÌÅÍ ¼±ÅÃ
function TMarketItemManager.Select( Index_ : integer): Boolean;
begin
Result := false;
if CheckIndex(Index_) then
begin
FSelectedIndex := Index_;
Result := true;
end;
end;
//µ¥ÀÌÅͰ¡ ºñ¾îÀÖ´ÂÁö
function TMarketItemManager.IsEmpty : Boolean;
begin
if FItems.Count > 0 then Result := false
else Result := true ;
end;
//°³¼ö¸¦ ¾ò¾î¿Â´Ù.
function TMarketItemManager.Count : integer;
begin
Result := FItems.Count;
end;
function TMarketItemManager.GetFirst : integer;
begin
Result := bFirst;
end;
// ÆäÀÌÁö¼öÀÚ¸¦ °¡Á®¿Â´Ù.
function TMarketItemManager.PageCount : integer;
begin
if FItems.Count = 0 then Result := 0
else Result := FItems.Count div MAKET_ITEMCOUNT_PER_PAGE +1;
end;
function TMarketItemManager.GetUserMode : integer;
begin
Result := FUserMode;
end;
function TMarketItemManager.GetItemType : integer;
begin
Result := FitemType;
end;
//µ¥ÀÌÅ͸¦ Àоî¿Ã¶§ ¼±ÅõȳÑÀÎÁö ±¸º°ÇÑ´Ù.
function TMarketItemManager.GetItem(
Index_ : integer ; // ¾ÆÀÌÅÛ À妽º
var rSelected : Boolean // ¼±ÅõȳÑÀÎÁö ¸®ÅÏÇÔ
):PTMarketItem;
begin
// µ¥ÀÌÅ͸¦ ¾ò°í
Result := GetItem( Index_ );
// ¼±ÅõȳѰú °°À¸¸é TRUE
if Result <> nil then
begin
if Index_ = FSelectedIndex then rSelected := true
else rSelected := false;
end;
end;
// µ¥ÀÌÅÍ ÀоîµéÀ̱â.
function TMarketItemManager.GetItem(
Index_ : integer // ¾ÆÀÌÅÛ À妽º
):PTMarketItem;
begin
Result := nil;
if checkIndex( Index_ ) then
begin
result := PTMarketItem( FItems.Items[Index_]);
end;
end;
// ¿©·¯°¡Áö ¸Þ¼¼Áö Àü¼Û¹× ¼ö½Å -------------------------------------------------
procedure TMarketItemManager.OnMsgReadData(msg :TDefaultMessage;body : string);
begin
end;
procedure TMarketItemManager.OnMsgWriteData(msg :TDefaultMessage;body : string);
var
// itemtype : integer;
// bFirst : integer;
nCount : integer;
i : integer;
pInfo : PTMarketItem;
buffer1 : string;
buffer2 : string;
begin
// DScreen.AddSysMsg ('GET MARKET MSG');
case msg.Ident of
SM_MARKET_LIST:
begin
FUserMode := msg.Recog;
FItemType := msg.Param;
bFirst := msg.Tag;
buffer1 := DecodeString( body );
if bFirst > 0 then Clear;
buffer1 := GetValidStr3 ( buffer1, buffer2, ['/']);
nCount := Str_ToInt( buffer2 , 0);
buffer1 := GetValidStr3 ( buffer1, buffer2, ['/']);
RecvCurPage := Str_ToInt( buffer2 , 0);
buffer1 := GetValidStr3 ( buffer1, buffer2, ['/']);
RecvMaxPage := Str_ToInt( buffer2 , 0);
for i := 0 to nCount-1 do
begin
buffer1 := GetValidStr3 ( buffer1 , buffer2, ['/']);
new ( pInfo );
DecodeBuffer( buffer2 , pointer( pInfo ) , sizeof( TMarketItem ) );
Add( pInfo );
end;
end;
end;
end;
end.