Files
winapp/TableSet.cpp
2026-06-12 22:37:02 +08:00

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;
}
//---------------------------------------------------------------------------