⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xqtable.pas

📁 象棋演播室1.6的dephi源码 作者 董世伟
💻 PAS
📖 第 1 页 / 共 5 页
字号:
///////////////////////////////////////////////////////////////////////////////
//
// XQStduio Source Code (http://www.qipaile.net/xqstudio)
//
// Copyright (c) 1998-2008, DONG Shiwei (董世伟 or 过河象) 
// All rights reserved.
// 
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 
//    1) Redistributions of source code must retain the above copyright
//       notice, this list of conditions and the following disclaimer.
//    2) Redistributions in binary form must reproduce the above copyright
//       notice, this list of conditions and the following disclaimer
//       in the documentation and/or other materials provided with the
//       distribution.
//    3) Neither the name of the XQStudio nor the names of its contributors
//       may be used to endorse or promote products derived from this
//       software without specific prior written permission.
// 
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
///////////////////////////////////////////////////////////////////////////////
//
// Note: Some characters of this file are Simplified Chinese characters 
//       encoded with GB2312/GB18030 standard
//

unit XQTable;

interface

uses Windows, Classes, Graphics, Forms, Controls, StdCtrls, ExtCtrls,
  ComCtrls, SysUtils, Dialogs, XQSystem, dDelphiS, XQDataT, XQRecLBX, XQPNode,
  DBCtrls, Buttons, ImgList, ToolWin, ActnList, XQFileRW, Menus, ClipBrd;


const
  dCXQTableWidth  = 732;
  dCXQTableHeight = 454;

//-------------------------------------------------------------------------
//
//.........................................................................
type
  TfrmXQTable = class(TForm)            // "象棋对弈桌"类定义
    pnlLeft: TPanel;                    // 对弈桌的左边,放棋盘
    imgXQBoard: TImage;             // 状态条
    pnlRight: TPanel;                   // 对弈桌的右边,放置其它信息
    pnlRTop: TPanel;                 // 右边底部
    pgcInfoPage: TPageControl;
    tstXQInfoA: TTabSheet;               // 象棋对弈信息页
    imgRed1: TImage;                    // 红棋: 车
    imgRed2: TImage;                    // 红棋: 马
    imgRed3: TImage;                    // 红棋: 相
    imgRed4: TImage;                    // 红棋: 士
    imgRed5: TImage;                    // 红棋: 帅
    imgRed6: TImage;                    // 红棋: 炮
    imgRed7: TImage;                    // 红棋: 兵
    imgBlk1: TImage;                    // 黑棋: 车
    imgBlk2: TImage;                    // 黑棋: 马
    imgBlk3: TImage;                    // 黑棋: 象
    imgBlk4: TImage;                    // 黑棋: 士
    imgBlk5: TImage;                    // 黑棋: 将
    imgBlk6: TImage;                    // 黑棋: 炮
    imgBlk7: TImage;                    // 黑棋: 卒
    imgXY00: TImage;                    // 棋盘的交叉点定义
    imgXY10: TImage;                    // 变量后面的数字表示坐标
    imgXY20: TImage;
    imgXY30: TImage;
    imgXY40: TImage;
    imgXY50: TImage;
    imgXY60: TImage;
    imgXY70: TImage;
    imgXY80: TImage;
    imgXY01: TImage;
    imgXY11: TImage;
    imgXY21: TImage;
    imgXY31: TImage;
    imgXY41: TImage;
    imgXY51: TImage;
    imgXY61: TImage;
    imgXY71: TImage;
    imgXY81: TImage;
    imgXY02: TImage;
    imgXY12: TImage;
    imgXY22: TImage;
    imgXY32: TImage;
    imgXY42: TImage;
    imgXY52: TImage;
    imgXY62: TImage;
    imgXY72: TImage;
    imgXY82: TImage;
    imgXY03: TImage;
    imgXY13: TImage;
    imgXY23: TImage;
    imgXY33: TImage;
    imgXY43: TImage;
    imgXY53: TImage;
    imgXY63: TImage;
    imgXY73: TImage;
    imgXY83: TImage;
    imgXY04: TImage;
    imgXY14: TImage;
    imgXY24: TImage;
    imgXY34: TImage;
    imgXY44: TImage;
    imgXY54: TImage;
    imgXY64: TImage;
    imgXY74: TImage;
    imgXY84: TImage;
    imgXY05: TImage;
    imgXY15: TImage;
    imgXY25: TImage;
    imgXY35: TImage;
    imgXY45: TImage;
    imgXY55: TImage;
    imgXY65: TImage;
    imgXY75: TImage;
    imgXY85: TImage;
    imgXY06: TImage;
    imgXY16: TImage;
    imgXY26: TImage;
    imgXY36: TImage;
    imgXY46: TImage;
    imgXY56: TImage;
    imgXY66: TImage;
    imgXY76: TImage;
    imgXY86: TImage;
    imgXY07: TImage;
    imgXY17: TImage;
    imgXY27: TImage;
    imgXY37: TImage;
    imgXY47: TImage;
    imgXY57: TImage;
    imgXY67: TImage;
    imgXY77: TImage;
    imgXY87: TImage;
    imgXY08: TImage;
    imgXY18: TImage;
    imgXY28: TImage;
    imgXY38: TImage;
    imgXY48: TImage;
    imgXY58: TImage;
    imgXY68: TImage;
    imgXY78: TImage;
    imgXY88: TImage;
    imgXY09: TImage;
    imgXY19: TImage;
    imgXY29: TImage;
    imgXY39: TImage;
    imgXY49: TImage;
    imgXY59: TImage;
    imgXY69: TImage;
    imgXY79: TImage;
    imgXY89: TImage;
    imgQZMove: TImage;
    pnlRightMargin: TPanel;
    pnlPlayRec: TPanel;
    pgcRemark: TPageControl;
    pgcPlayRec: TPageControl;
    tstRecord: TTabSheet;
    lbxPlayRec: TListBox;
    tstRemark: TTabSheet;
    pnlTalk: TPanel;
    cbbTalk: TComboBox;
    tmrAutoPlay: TTimer;
    imgMovePosTo: TImage;
    pnlCtrlToolBar: TPanel;
    tlbPlayRec: TToolBar;
    tbtFirstStep: TToolButton;
    tbtPriorStep: TToolButton;
    tbtNextStep: TToolButton;
    tbtLastStep: TToolButton;
    tbtDelStep: TToolButton;
    pnlVarStepButtons: TPanel;
    pnlPlayRecMemo: TPanel;
    memPlayRec: TMemo;
    pnlVarStepListBox: TPanel;
    lblPlayVar: TLabel;
    lbxPlayVar: TListBox;
    aclXQTable: TActionList;
    actPlayRecFirst: TAction;
    actPlayRecPrior: TAction;
    actPlayRecNext: TAction;
    actPlayRecLast: TAction;
    actPlayRecDelete: TAction;
    pnlAddVarStepHint: TPanel;
    lblAddPlayVarHint: TLabel;
    lblBigHint: TLabel;
    imgBlkNum: TImage;
    imgRedNum: TImage;
    pnlPlayerInfo: TPanel;
    imgMovePosFrom: TImage;
    tlbPlayVar: TToolBar;
    tbtAddVarStep: TToolButton;
    tbtDelVarStep: TToolButton;
    tbtCancelAddVarStep: TToolButton;
    actPlayVarAdd: TAction;
    actPlayVarDelete: TAction;
    actPlayVarCancel: TAction;
    lblTitle: TLabel;
    lblPlayer: TLabel;
    lblTimeAddr: TLabel;
    Label1: TLabel;
    dlgSaveDialog: TSaveDialog;
    tbtPlayVarSpace: TToolButton;
    tbtPlayVarUp: TToolButton;
    tbtPlayVarDown: TToolButton;
    actPlayVarUp: TAction;
    actPlayVarDown: TAction;
    ppmPlayVar: TPopupMenu;
    ppm01: TMenuItem;
    ppm02: TMenuItem;
    ppmPlayRec: TPopupMenu;
    ppmAutoPlayStart: TMenuItem;
    ppmLine1: TMenuItem;
    ppmAutoPlayTime: TMenuItem;
    ppmAutoPlay041: TMenuItem;
    ppmAutoPlay01: TMenuItem;
    ppmAutoPlay02: TMenuItem;
    ppmAutoPlay03: TMenuItem;
    ppmAutoPlay04: TMenuItem;
    ppmAutoPlay05: TMenuItem;
    ppmAutoPlay06: TMenuItem;
    ppmAutoPlay07: TMenuItem;
    ppmAutoPlay08: TMenuItem;
    ppmLine2: TMenuItem;
    ppmAutoPlayStop: TMenuItem;
    ppmSoundOff: TMenuItem;
    ppmSoundOn: TMenuItem;
    tstXQInfoB: TTabSheet;
    pgcQiTu: TPageControl;
    tstQiTuText: TTabSheet;
    memQiTuText: TMemo;
    pnlQiTuTextToolBar: TPanel;
    tlbQiTuToolBar: TToolBar;
    tbtSelectQiTuText: TToolButton;
    tbtCopyQiTuText: TToolButton;
    tbtSaveQiTuText: TToolButton;
    pnlQiTuTextStyle: TPanel;
    rbtQiTuStyle01: TRadioButton;
    rbtQiTuStyle02: TRadioButton;
    lblQiTuTextStyle: TLabel;
    ppmLine3: TMenuItem;
    ppmPasteQipu: TMenuItem;
    tstXQInfoC: TTabSheet;
    pnlTextToolBar: TPanel;
    tlbTextToolBar: TToolBar;
    tbtSelectAllText: TToolButton;
    tbtCopySelectedText: TToolButton;
    tbtSaveTextIntoFile: TToolButton;
    memText: TMemo;
    pnlTextStyle: TPanel;
    Label2: TLabel;
    rbtTextStyle01: TRadioButton;
    rbtTextStyle02: TRadioButton;
    rbtTextStyle03: TRadioButton;
    tmrMoveBlink: TTimer;
    ppmImportQipu: TMenuItem;
    dlgOpenDialog: TOpenDialog;
    N1: TMenuItem;
    ppmCopy: TMenuItem;
    ppmSaveAsBmp: TMenuItem;
    ppmSearcnFile: TMenuItem;
    tstQituImage: TTabSheet;
    Panel1: TPanel;
    ToolBar1: TToolBar;
    tbtCopyQituImage: TToolButton;
    tbtSaveQituImage: TToolButton;
    pnlQituImage: TPanel;
    imgQituImage: TImage;
    Label3: TLabel;
    chkBbsColor: TCheckBox;
    rbtTextStyle04: TRadioButton;
    N2: TMenuItem;
    ppmJavaXQ: TMenuItem;
    ppmTextXQ: TMenuItem;
    edtQipuInput: TEdit;
    ppmMergeXqf: TMenuItem;
    N3: TMenuItem;
    lbxPlayRecBak: TListBox;
    tstQituBitmap: TTabSheet;
    Panel2: TPanel;
    Label4: TLabel;
    ToolBar2: TToolBar;
    tbtCopyQituBitmap: TToolButton;
    tbtSaveQituBitmap: TToolButton;
    Panel3: TPanel;
    imgQituBitmap: TImage;
    ppmBitmapCopy: TMenuItem;
    ppmBitmapSaveAsBmp: TMenuItem;
    N6: TMenuItem;
    Label5: TLabel;

    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);

    // imgXY Events Handlers
    procedure imgXYClick(Sender: TObject);
    procedure imgXYDblClick(Sender: TObject);
    procedure imgXYDragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure imgXYDragOver(Sender, Source: TObject; X, Y: Integer;
                            State: TDragState; var Accept: Boolean);
    procedure imgXYEndDock(Sender, Target: TObject; X, Y: Integer);
    procedure imgXYEndDrag(Sender, Target: TObject; X, Y: Integer);
    procedure imgXYMouseDown(Sender: TObject; Button: TMouseButton;
                             Shift: TShiftState; X, Y: Integer);
    procedure imgXYMouseMove(Sender: TObject; Shift: TShiftState; X,
                             Y: Integer);
    procedure imgXYMouseUp(Sender: TObject; Button: TMouseButton;
                           Shift: TShiftState; X, Y: Integer);
    procedure imgXYProgress(Sender: TObject; Stage: TProgressStage;
                            PercentDone: Byte; RedrawNow: Boolean;
                            const R: TRect; const Msg: String);
    procedure imgXYStartDock(Sender: TObject;
                             var DragObject: TDragDockObject);
    procedure imgXYStartDrag(Sender: TObject;
                             var DragObject: TDragObject);
    procedure lbxPlayRecClick(Sender: TObject);
    procedure tmrAutoPlayTimer(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure memPlayRecChange(Sender: TObject);
    procedure lbxPlayVarDblClick(Sender: TObject);
    procedure lbxPlayVarClick(Sender: TObject);
    procedure FormDeactivate(Sender: TObject);
    procedure actPlayRecFirstExecute(Sender: TObject);
    procedure actPlayRecPriorExecute(Sender: TObject);
    procedure actPlayRecNextExecute(Sender: TObject);
    procedure actPlayRecLastExecute(Sender: TObject);
    procedure actPlayRecDeleteExecute(Sender: TObject);
    procedure pnlCtrlToolBarResize(Sender: TObject);
    procedure pnlVarStepButtonsResize(Sender: TObject);
    procedure pnlVarStepListBoxResize(Sender: TObject);
    procedure pnlAddVarStepHintResize(Sender: TObject);
    procedure pnlRTopResize(Sender: TObject);
    procedure pnlRightResize(Sender: TObject);
    procedure pgcInfoPageResize(Sender: TObject);
    procedure pnlRightMarginResize(Sender: TObject);
    procedure actPlayVarAddExecute(Sender: TObject);
    procedure actPlayVarDeleteExecute(Sender: TObject);
    procedure actPlayVarCancelExecute(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure memPlayRecKeyPress(Sender: TObject; var Key: Char);
    procedure imgMovePosToDblClick(Sender: TObject);
    procedure pnlTextToolBarResize(Sender: TObject);
    procedure tbtSelectAllTextClick(Sender: TObject);
    procedure tbtSaveTextIntoFileClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure actPlayVarUpExecute(Sender: TObject);
    procedure actPlayVarDownExecute(Sender: TObject);
    procedure ppmPlayVarPopup(Sender: TObject);
    procedure lbxPlayRecDblClick(Sender: TObject);
    procedure ppmAutoPlayStartClick(Sender: TObject);
    procedure ppmAutoPlayStopClick(Sender: TObject);
    procedure ppmAutoPlayTimeClick(Sender: TObject);
    procedure ppmPlayRecPopup(Sender: TObject);
    procedure ppmSoundOffClick(Sender: TObject);
    procedure ppmSoundOnClick(Sender: TObject);
    procedure pnlQiTuTextToolBarResize(Sender: TObject);
    procedure tbtSaveQiTuTextClick(Sender: TObject);
    procedure tstXQInfoBShow(Sender: TObject);
    procedure tbtSelectQiTuTextClick(Sender: TObject);
    procedure ppmPasteQipuClick(Sender: TObject);
    procedure tstXQInfoCShow(Sender: TObject);
    procedure tmrMoveBlinkTimer(Sender: TObject);
    procedure imgXQBoardMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure ppmImportQipuClick(Sender: TObject);
    procedure ppmCopyClick(Sender: TObject);
    procedure ppmSaveAsBmpClick(Sender: TObject);
    procedure ppmSearcnFileClick(Sender: TObject);
    procedure tstQituImageShow(Sender: TObject);
    procedure tbtCopyQituImageClick(Sender: TObject);
    procedure tbtSaveQituImageClick(Sender: TObject);
    procedure ppmJavaXQClick(Sender: TObject);
    procedure ppmTextXQClick(Sender: TObject);
    procedure edtQipuInputKeyPress(Sender: TObject; var Key: Char);
    procedure edtQipuInputChange(Sender: TObject);
    procedure ppmMergeXqfClick(Sender: TObject);
    procedure tstQituBitmapShow(Sender: TObject);
    procedure tbtCopyQituBitmapClick(Sender: TObject);
    procedure tbtSaveQituBitmapClick(Sender: TObject);
    procedure ppmBitmapCopyClick(Sender: TObject);
    procedure ppmBitmapSaveAsBmpClick(Sender: TObject);
  private
    { Private declarations }
    FDragImgXY      : TImage;
    FReverseBoardH  : Boolean;
    procedure dSetupXQBoard;                            // 设置棋盘
    procedure dSetAddVarStepMode(tf: dTBoolean);
    function  imgGetImgXY(X, Y: Integer): TImage;       // 取(x,y)处交叉点
  public

    XQFileName : string;

    isPasteMsgEnabled : Boolean;

    imgXY           : dTXQPXY;                  // 棋盘上的交叉点
    XQ              : dTXiangQi;

    isShowBoardOnly : dTBoolean;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -