191 lines
5.6 KiB
C++
191 lines
5.6 KiB
C++
//---------------------------------------------------------------------------
|
|
|
|
#include <vcl.h>
|
|
#pragma hdrstop
|
|
|
|
#include "GlobalUnit.h"
|
|
#include "TableSet.h"
|
|
#include "GameUnit.h"
|
|
#include "UtilityUnit.h"
|
|
//---------------------------------------------------------------------------
|
|
#pragma package(smart_init)
|
|
#pragma resource "*.dfm"
|
|
//---------------------------------------------------------------------------
|
|
__fastcall TTabSetForm::TTabSetForm(TComponent* Owner, int nGame, int nShow, int nRun)
|
|
: TForm(Owner)
|
|
{
|
|
m_nGame = nGame;
|
|
m_nShow = nShow < 0 || nShow>nGame ? nGame : nShow;
|
|
m_nRun = nRun < 0 || nRun>m_nShow ? m_nShow : nRun;
|
|
m_iRun = 0;
|
|
m_bMouseOver = false;
|
|
|
|
//根据game数量添加台桌显示选项
|
|
int n = (nGame - 30) / 15;
|
|
if(0 == (nGame % 15)) n--;
|
|
for(int i=0; i<n; i++){
|
|
String str = IntToStr(45 + i*15) + "台";
|
|
m_cbShow->AddItem(str, NULL);
|
|
}
|
|
m_cbShow->AddItem("全选", NULL);
|
|
|
|
if(nShow<0 || nShow>=nGame)
|
|
m_iShow = m_cbShow->Items->Count - 1;
|
|
else
|
|
m_iShow = (m_nShow / 15) - 1;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TTabSetForm::FormCreate(TObject *Sender)
|
|
{
|
|
m_cbShow->ItemIndex = m_iShow;
|
|
OnShowChange(NULL);
|
|
m_cbShow->Enabled = !g_bGameOn;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TTabSetForm::OnShowChange(TObject *Sender)
|
|
{
|
|
TComboBox* pShow = (TComboBox*)Sender;
|
|
if(pShow){
|
|
m_iShow = pShow->ItemIndex;
|
|
if(m_iShow == m_cbShow->Items->Count-1)
|
|
m_nShow = m_nGame;
|
|
else
|
|
m_nShow = (m_iShow+1) * 15;
|
|
}
|
|
|
|
for(int i=m_cbRun->Items->Count-1; i>2; i--)
|
|
m_cbRun->Items->Delete(i);
|
|
|
|
//根据显示数量添加台桌运行选项
|
|
int n = m_nShow / 15;
|
|
if(0 == (m_nShow % 15)) n--;
|
|
for(int i=0; i<n; i++){
|
|
String str = IntToStr(15 + i*15) + "台";
|
|
m_cbRun->AddItem(str, NULL);
|
|
}
|
|
m_cbRun->AddItem("全选", NULL);
|
|
|
|
if(m_nRun >= m_nShow){
|
|
m_nRun = m_nShow;
|
|
m_cbRun->ItemIndex = m_iRun = m_cbRun->Items->Count - 1;
|
|
}
|
|
else if(m_nRun>=15){
|
|
m_cbRun->ItemIndex = m_iRun = m_nRun / 15 + 2;
|
|
}
|
|
else
|
|
m_cbRun->ItemIndex = m_iRun = m_nRun / 5;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TTabSetForm::OnRunChange(TObject *Sender)
|
|
{
|
|
m_iRun = m_cbRun->ItemIndex;
|
|
|
|
if(m_iRun==m_cbRun->Items->Count - 1)
|
|
m_nRun = m_nShow;
|
|
else if(m_iRun>=3)
|
|
m_nRun = (m_iRun-2) * 15;
|
|
else
|
|
m_nRun = m_iRun * 5;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TTabSetForm::OnOkClick(TObject *Sender)
|
|
{
|
|
if(m_iShow==m_cbShow->Items->Count-1)
|
|
m_nShow = -1;
|
|
if(m_iRun==m_cbRun->Items->Count-1)
|
|
m_nRun = -1;
|
|
|
|
if(m_cbResetIPs->Checked){
|
|
for(int i=0; i<g_aGames.size(); i++)
|
|
g_aGames[i]->ResetIP();
|
|
|
|
g_aIPGames.ClearAll();
|
|
}
|
|
|
|
ModalResult = mrOk;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TTabSetForm::FormShow(TObject *Sender)
|
|
{
|
|
TPoint cPos = ScreenToClient(Mouse->CursorPos);
|
|
|
|
if(cPos.X>=0 && cPos.Y>=0 && cPos.X<=Width && cPos.Y<=Height){
|
|
m_bMouseOver = true;
|
|
MouseCapture = false;
|
|
// DebugPrint("discaptured");
|
|
}
|
|
else{
|
|
m_bMouseOver = false;
|
|
MouseCapture = true;
|
|
// DebugPrint("captured");
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TTabSetForm::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
|
|
{
|
|
if(X < 0 || Y < 0 || X > Width || Y > Height)
|
|
ModalResult = mrCancel;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TTabSetForm::FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
|
|
{
|
|
ResetIdle();
|
|
|
|
if(!m_bMouseOver && X>10 && X<Width-10 && Y>10 && Y<Height-10){
|
|
m_bMouseOver = true;
|
|
MouseCapture = false;
|
|
// DebugPrint("discaptured %d - %d", X, Y);
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TTabSetForm::WMKillFocus(TWMKillFocus &Message)
|
|
{
|
|
if(!m_bMouseOver)
|
|
ModalResult = mrCancel;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TTabSetForm::ComboCloseUp(TObject *Sender)
|
|
{
|
|
TComboBox* pCB = (TComboBox*)Sender;
|
|
TPoint cPos = ScreenToClient(Mouse->CursorPos);
|
|
if((cPos.X<=10 || cPos.Y<=10 || cPos.X>=Width-10 || cPos.Y>=Height-10)){
|
|
cPos = pCB->ClientToScreen(TPoint(pCB->Width-10, pCB->Height/2));
|
|
SetCursorPos(cPos.X, cPos.Y);
|
|
m_bMouseOver = true;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TTabSetForm::FormMouseEnter(TObject *Sender)
|
|
{
|
|
TPoint cPos = ScreenToClient(Mouse->CursorPos);
|
|
// DebugPrint("mouse enter %d - %d", cPos.X, cPos.Y);
|
|
if(cPos.X>=0 && cPos.Y>=0 && cPos.X<=Width && cPos.Y<=Height){
|
|
m_bMouseOver = true;
|
|
if(MouseCapture){
|
|
MouseCapture = false;
|
|
// DebugPrint("discaptured");
|
|
}
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TTabSetForm::FormMouseLeave(TObject *Sender)
|
|
{
|
|
TPoint cPos = ScreenToClient(Mouse->CursorPos);
|
|
// DebugPrint("mouse leave %d - %d of %d - %d", cPos.X, cPos.Y);
|
|
if((cPos.X<=10 || cPos.Y<=10 || cPos.X>=Width-10 || cPos.Y>=Height-10)){
|
|
m_bMouseOver = false;
|
|
if(!MouseCapture){
|
|
MouseCapture = true;
|
|
// DebugPrint("captured");
|
|
}
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
void __fastcall TTabSetForm::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
|
|
{
|
|
if(Key==VK_ESCAPE)
|
|
ModalResult = mrCancel;
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|