📄 xqmain.pas
字号:
///////////////////////////////////////////////////////////////////////////////
//
// 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 XQMain;
interface
uses
Windows, SysUtils, Classes, Graphics, Forms, Controls, Menus,
StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, ComCtrls, StdActns,
ActnList, ToolWin, ImgList, Mapi, ShellApi,
dDelphiS, XQDataT, XQTable, XQPNode, XQSystem, XQFileRW,
XQFileP, XQAbout, XQReadme, XQWizard;
type
TfrmMain = class(TForm)
mmuMain: TMainMenu;
mnuFileGroup: TMenuItem;
FileNewItem: TMenuItem;
FileOpenItem: TMenuItem;
FileCloseItem: TMenuItem;
mnuWindowGroup: TMenuItem;
mnuHelpGroup: TMenuItem;
N1: TMenuItem;
FileExitItem: TMenuItem;
HelpAboutItem: TMenuItem;
OpenDialog: TOpenDialog;
FileSaveItem: TMenuItem;
FileSaveAsItem: TMenuItem;
mnuEditGroup: TMenuItem;
CutItem: TMenuItem;
CopyItem: TMenuItem;
PasteItem: TMenuItem;
WindowMinimizeItem: TMenuItem;
StatusBar: TStatusBar;
aclMain: TActionList;
actEditCut: TEditCut;
actEditCopy: TEditCopy;
actEditPaste: TEditPaste;
actFileNew: TAction;
actFileSave: TAction;
actFileExit: TAction;
actFileOpen: TAction;
actFileSaveAs: TAction;
actWinMinimizeAll: TWindowMinimizeAll;
actHelpAbout: TAction;
actFileClose: TWindowClose;
ToolBar2: TToolBar;
tbtFileOpen: TToolButton;
tbtFileSave: TToolButton;
ToolButton3: TToolButton;
tbtEditCut: TToolButton;
tbtEditCopy: TToolButton;
tbtEditPaste: TToolButton;
tbtFileNew: TToolButton;
ToolButton7: TToolButton;
imlMain: TImageList;
mnuViewGroup: TMenuItem;
dlgSaveDialog: TSaveDialog;
ContentsItem: TMenuItem;
H1: TMenuItem;
actFileP: TAction;
ReverseVItem: TMenuItem;
actViewReverseV: TAction;
pnlXQStudioLogo: TPanel;
imgLogo: TImage;
lblVersion: TLabel;
lblReleaseDate: TLabel;
Label6: TLabel;
lblCopyright: TLabel;
Label9: TLabel;
BoardOnlyItem: TMenuItem;
actViewBoardOnly: TAction;
N2: TMenuItem;
FileProperty: TMenuItem;
tbtFileP: TToolButton;
imlToolButtons: TImageList;
pnlResource: TPanel;
imgXQBoard: TImage;
pnlPlayList: TPanel;
lblTextLine0: TLabel;
lbxPlayList: TListBox;
btnAutoPlay: TButton;
btnPlayListClose: TButton;
gbxAutoPlaySetup: TGroupBox;
N1b: TMenuItem;
FilePlayListItem: TMenuItem;
btnAddFile: TButton;
btnDelFile: TButton;
tmrPlayList: TTimer;
bvlAutoPlayFrame: TBevel;
btnClearPlayList: TButton;
btnStopAutoPlay: TButton;
Label4: TLabel;
cbxAutoPlayTime: TComboBox;
Label5: TLabel;
Label10: TLabel;
cbxAutoPlaySound: TComboBox;
lblTextLine1: TLabel;
lblTextLine2: TLabel;
lblTextLine3: TLabel;
imgXQstudio: TImage;
btnSavePlayList: TButton;
bvlTitleLine: TBevel;
btnUpgrade: TButton;
cbxDisableRemark: TCheckBox;
tbtViewReverseV: TToolButton;
ToolButton2: TToolButton;
actViewReverseH: TAction;
reverseHItem: TMenuItem;
tbtViewReverseH: TToolButton;
actFileSearch: TAction;
FileSearchItem: TMenuItem;
tbtFileSearch: TToolButton;
ToolButton6: TToolButton;
N3: TMenuItem;
HelpTips: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
actToolsAutoPlay: TAction;
mnuToolsGroup: TMenuItem;
ToolsAutoPlayItem: TMenuItem;
actToolsStopPlay: TAction;
actEditPasteQipu: TAction;
ToolsStopPlayItem: TMenuItem;
N6: TMenuItem;
actEditOpenQipu: TAction;
actToolsImgToClip: TAction;
actToolsImgToFile: TAction;
actToolsPosSearch: TAction;
N8: TMenuItem;
N9: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
actFileNewBlank: TAction;
B1: TMenuItem;
ToolButton1: TToolButton;
actToolsNewCopy: TAction;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
N10: TMenuItem;
N11: TMenuItem;
actToolsApplet: TAction;
N12: TMenuItem;
JavaApple1: TMenuItem;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
N15: TMenuItem;
N16: TMenuItem;
FileList1: TMenuItem;
FileList2: TMenuItem;
FileList3: TMenuItem;
FileList4: TMenuItem;
FileList5: TMenuItem;
FileList6: TMenuItem;
FileList7: TMenuItem;
FileList8: TMenuItem;
FileList9: TMenuItem;
N18: TMenuItem;
FileListClear: TMenuItem;
actFileSend: TAction;
N20: TMenuItem;
N21: TMenuItem;
actHelpMailToXQStudio: TAction;
N22: TMenuItem;
EMailM1: TMenuItem;
actHelpHttpXQStudio: TAction;
XQStudioH1: TMenuItem;
actToolsText: TAction;
ToolButton10: TToolButton;
actToolsText1: TMenuItem;
actHelpHttpQipaile: TAction;
actHelpHttpXqf: TAction;
httpwwwqipailenet1: TMenuItem;
httpwwwqipailenetxqf1: TMenuItem;
actEditChangePos: TAction;
N17: TMenuItem;
N19: TMenuItem;
ToolButton11: TToolButton;
ToolButton12: TToolButton;
N7: TMenuItem;
N23: TMenuItem;
XQFchntxt1: TMenuItem;
ToolButton13: TToolButton;
actEditPasteQipuToFile: TAction;
N24: TMenuItem;
ToolButton14: TToolButton;
actEditMergeXqf: TAction;
N25: TMenuItem;
jxqfxqf1: TMenuItem;
ToolButton15: TToolButton;
ToolButton16: TToolButton;
FileImportItem: TMenuItem;
btnImport: TButton;
btnStopImport: TButton;
Bevel1: TBevel;
imgXQBoardBmp: TImage;
imgRed1Bmp: TImage;
imgRed2Bmp: TImage;
imgRed3Bmp: TImage;
imgRed4Bmp: TImage;
imgRed5Bmp: TImage;
imgRed6Bmp: TImage;
imgRed7Bmp: TImage;
imgBlk1Bmp: TImage;
imgBlk2Bmp: TImage;
imgBlk3Bmp: TImage;
imgBlk4Bmp: TImage;
imgBlk5Bmp: TImage;
imgBlk6Bmp: TImage;
imgBlk7Bmp: TImage;
imgXQQituBmp: TImage;
N26: TMenuItem;
N27: TMenuItem;
N28: TMenuItem;
actToolsBmpToClip: TAction;
actToolsBmpToFile: TAction;
procedure actFileNewExecute(Sender: TObject);
procedure actFileOpenExecute(Sender: TObject);
procedure actHelpAboutExecute(Sender: TObject);
procedure actFileExitExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure actFileSaveExecute(Sender: TObject);
procedure actFileSaveAsExecute(Sender: TObject);
procedure actFilePExecute(Sender: TObject);
procedure actViewReverseVExecute(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure actViewBoardOnlyExecute(Sender: TObject);
procedure ContentsItemClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnPlayListCloseClick(Sender: TObject);
procedure FilePlayListItemClick(Sender: TObject);
procedure btnAddFileClick(Sender: TObject);
procedure btnDelFileClick(Sender: TObject);
procedure btnAutoPlayClick(Sender: TObject);
procedure tmrPlayListTimer(Sender: TObject);
procedure btnClearPlayListClick(Sender: TObject);
procedure lbxPlayListClick(Sender: TObject);
procedure btnStopAutoPlayClick(Sender: TObject);
procedure btnSavePlayListClick(Sender: TObject);
procedure cbxAutoPlayTimeChange(Sender: TObject);
procedure cbxAutoPlaySoundChange(Sender: TObject);
procedure lbxPlayListDblClick(Sender: TObject);
procedure btnUpgradeClick(Sender: TObject);
procedure imgXQstudioMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure actViewReverseHExecute(Sender: TObject);
procedure actFileSearchExecute(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure HelpTipsClick(Sender: TObject);
procedure actToolsAutoPlayExecute(Sender: TObject);
procedure actToolsStopPlayExecute(Sender: TObject);
procedure actEditPasteQipuExecute(Sender: TObject);
procedure actEditOpenQipuExecute(Sender: TObject);
procedure actToolsImgToClipExecute(Sender: TObject);
procedure actToolsImgToFileExecute(Sender: TObject);
procedure actToolsPosSearchExecute(Sender: TObject);
procedure actFileNewBlankExecute(Sender: TObject);
procedure actToolsNewCopyExecute(Sender: TObject);
procedure actToolsAppletExecute(Sender: TObject);
procedure actFileSendExecute(Sender: TObject);
procedure actHelpHttpXQStudioExecute(Sender: TObject);
procedure actHelpMailToXQStudioExecute(Sender: TObject);
procedure actToolsTextExecute(Sender: TObject);
procedure FileListClearClick(Sender: TObject);
procedure FileListItemClick(Sender: TObject);
procedure actHelpHttpQipaileExecute(Sender: TObject);
procedure actHelpHttpXqfExecute(Sender: TObject);
procedure actEditChangePosExecute(Sender: TObject);
procedure actEditPasteQipuToFileExecute(Sender: TObject);
procedure actEditMergeXqfExecute(Sender: TObject);
procedure FileImportItemClick(Sender: TObject);
procedure btnImportClick(Sender: TObject);
procedure btnStopImportClick(Sender: TObject);
procedure actToolsBmpToClipExecute(Sender: TObject);
procedure actToolsBmpToFileExecute(Sender: TObject);
private
FIsOpenFromClipBoard: Boolean;
FXqfDir : String;
FFirstActive: Boolean;
XqfPlayTree : dTXQPlayNode;
XqfQzXY : dTXQZXY;
IsFileListLoaded: Boolean;
FFileList : array [1..9] of string;
procedure dCreateXQTable(const Name: string);
procedure dUpgradeXQFFile(sFileName: string);
procedure dHandleOpenXqfMsg(var Msg: TMessage); message dCWMOPENXQF;
public
// QiziXY : dTXQZXY;
ActiveXQTable : TfrmXQTable;
isCreateTableOK : Boolean;
isCreateSearchOk: Boolean;
IsBitmapListLoaded: Boolean;
FImgXQBitmapList: array [0..14] of TImage; // 0 - Board
// 1 - 7 Red
// 8 - 14 Blk
FImgXQQiziBmp : array [1..32] of TImage; // 棋子的Img;
FXQTopLeftX : Integer;
FXQTopLeftY : Integer;
FXQColW, FXQRowH: Integer;
procedure dAutoPlayNextFile;
function OpenXQF(const Name: String): Boolean;
procedure dEnableXQTableMenuItem(ABool: Boolean);
procedure dLoadFileList;
procedure dSaveFileList;
procedure dLoadBitmapList;
procedure dSaveBitmapList;
function iSaveXQTable(sFName:String; XQTable: TFrmXQTable):dTInt32;
procedure dAddFileListItem(sFileName: String);
procedure QiziXYtoBitmap(qzXY: dTXQZXY; img: TImage);
end;
var
frmMain : TfrmMain;
iAutoPlayTime : dTInt32 = 3000;
isAutoPlaySoundOn : dTBoolean = False;
isSetAutoPlayList : dTBoolean = False;
isSetAutoImport : dTBoolean = False;
sImportFileName : String = '';
iPlayListIndex : dTInt32 = 100;
implementation
uses XQSearch, XQTipsDlg;
{$R *.DFM}
//-------------------------------------------------------------------------
// 创建一个象棋桌
//.........................................................................
procedure TfrmMain.dCreateXQTable(const Name: string);
var
XQFile : dTXQFile;
sName : string;
NewXQTable : TfrmXQTable;
bIsNew : Boolean;
begin
bIsNew := (Name = '');
FFirstActive := False;
sName := Name; if (sName='') then sName := 'NoName'+'.XQF';
isCreateTableOK := False;
try
NewXQTable := TfrmXQTable.Create(Application);
if NewXQTable = nil then
begin
Exit;
end;
except
else
Exit;
end;
isCreateTableOK := True;
NewXQTable.Caption := ChangeFileExt(ExtractFileName(sName), '');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -