📄 ulottery.pas
字号:
unit ULottery;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, DB, ADODB, StdCtrls, TeEngine, Series, ExtCtrls,
TeeProcs, Chart, DbChart, DBClient, Menus, jpeg;
type
TBallInfo = record
BallID : Integer;
BallCount : Integer;
BallColor : String;
end;
TLotteryFrm = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
ADOConnection1: TADOConnection;
OpenDialog1: TOpenDialog;
StatusBar1: TStatusBar;
DataSource1: TDataSource;
TabSheet2: TTabSheet;
GroupBox1: TGroupBox;
Label1: TLabel;
E_FileName: TEdit;
Button1: TButton;
Button2: TButton;
ProgressBar1: TProgressBar;
Panel1: TPanel;
C_BallColor: TComboBox;
StaticText1: TStaticText;
StaticText2: TStaticText;
C_BallID: TComboBox;
Button5: TButton;
ClientDataSet: TClientDataSet;
PageControl2: TPageControl;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
DBChart1: TDBChart;
Series1: TFastLineSeries;
L_XiangMuTu: TListView;
TabSheet5: TTabSheet;
L_FenBuTu: TListView;
TabSheet6: TTabSheet;
M_FenXiJieGuo: TMemo;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
Panel2: TPanel;
ControlBar1: TControlBar;
Image1: TImage;
Panel3: TPanel;
StaticText3: TStaticText;
StaticText4: TStaticText;
StaticText5: TStaticText;
StaticText6: TStaticText;
StaticText7: TStaticText;
Label2: TLabel;
E_HeZhiAve: TEdit;
Label3: TLabel;
E_JianJuAve: TEdit;
Label4: TLabel;
E_JiShuAve: TEdit;
Label5: TLabel;
E_OuShuAve: TEdit;
M_LastThreeID: TEdit;
M_RedMaxCount: TEdit;
M_RedMinCount: TEdit;
M_BlueMaxCount: TEdit;
M_BlueMinCount: TEdit;
StaticText8: TStaticText;
E_NewID: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure C_BallColorChange(Sender: TObject);
procedure C_BallIDChange(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
private
{ Private declarations }
procedure SetSeriesData();
procedure ChangGuiZouShi;
procedure FenBuTu;
procedure XiangMuTu;
procedure FenXiShuJu;
procedure GetNewLotteryID;
public
{ Public declarations }
end;
var
LotteryFrm: TLotteryFrm;
RedBallInfo:array[0..32] of TBallInfo;
BlueBallInfo:array[0..15] of TBallInfo;
implementation
{$R *.dfm}
procedure TLotteryFrm.SetSeriesData();
begin
with Series1 do
begin
DataSource:= ClientDataSet;
YValues.DateTime:= False;
XValues.ValueSource:= 'X';
XValues.DateTime:= False;
YValues.ValueSource :='Y';
end;
end;
//****************************************************************************//
// *通过XML显示图* //
//****************************************************************************//
function GetXMLHead:String;
begin
Result:=Result+'<?xml version="1.0" standalone="yes"?> ';
Result:=Result+'<DATAPACKET Version="2.0">';
Result:=Result+'<METADATA>';
Result:=Result+'<FIELDS>';
Result:=Result+'<FIELD attrname="X" fieldtype="i4"/>';
Result:=Result+'<FIELD attrname="Y" fieldtype="i4"/>';
Result:=Result+'</FIELDS>';
Result:=Result+'<PARAMS/>';
Result:=Result+'</METADATA>';
Result:=Result+'<ROWDATA>';
end;
function GetXMLEnd:String;
begin
Result:=Result+'</ROWDATA>';
Result:=Result+'</DATAPACKET>';
end;
procedure TLotteryFrm.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
E_FileName.Text:=OpenDialog1.FileName;
end;
end;
procedure TLotteryFrm.Button2Click(Sender: TObject);
var
LotteryDataList : TStrings;
I,J,K,L,M : Integer;
LotteryID,
OpenTime,
RedLottery1,
RedLottery2,
RedLottery3,
RedLottery4,
RedLottery5,
RedLottery6,
BlueLottery : String;
OneLotteryData : String;
SubStr,SubStr1 : String;
Money : String;
LotteryADOQuery : TAdoQuery;
begin
K:=0;
M:=0;
SubStr:='';
SubStr1:='';
LotteryDataList:=TStringList.Create;
try
LotteryDataList.LoadFromFile(E_FileName.Text);
ProgressBar1.Max:=LotteryDataList.Count;
for I:=0 to LotteryDataList.Count-1 do
begin
OneLotteryData:=LotteryDataList.Strings[I];
M:=0;
K:=0;
//SubStr:='';
SubStr:='';
for J:=1 to Length(OneLotteryData) do
begin
SubStr1:='';
if OneLotteryData[j]=#9 then
begin
K:=K+1;
case k of
1:LotteryID:=SubStr;
2:OpenTime:=SubStr;
3:
begin
for L:=1 to Length(SubStr) do
begin
if (Copy(SubStr,L,1)=' ') or (Copy(SubStr,L,1)='+') then
begin
M:=M+1;
case M of
1:RedLottery1:=SubStr1;
2:RedLottery2:=SubStr1;
3:RedLottery3:=SubStr1;
4:RedLottery4:=SubStr1;
5:RedLottery5:=SubStr1;
6:RedLottery6:=SubStr1;
end;
SubStr1:='';
end else
begin
SubStr1:=SubStr1+Copy(SubStr,L,1);
end;
if L=Length(SubStr) then BlueLottery:=SubStr1;
end;
end;
4:Money:=SubStr;
end;
SubStr:='';
end else
begin
SubStr:=SubStr+Copy(OneLotteryData,J,1);
end;
end;
//Memo1.Lines.Add(LotteryID+' '+OpenTime+' '+RedLottery1+' '+RedLottery2+' '+RedLottery3+' '+RedLottery4+' '+RedLottery5+' '+RedLottery6+' '+BlueLottery+' '+Money)
try
LotteryADOQuery :=TAdoQuery.Create(Nil);
try
LotteryADOQuery.Connection:=ADOConnection1;
LotteryADOQuery.Close;
LotteryADOQuery.SQL.Text:='insert into Lottery (LotteryID,OpenTime,RedLottery1,RedLottery2,RedLottery3,RedLottery4,RedLottery5,RedLottery6,BlueLottery,LotteryMoney) values '
+'( '
+LotteryID+','
+''''+OpenTime+''''+','
+RedLottery1+','
+RedLottery2+','
+RedLottery3+','
+RedLottery4+','
+RedLottery5+','
+RedLottery6+','
+BlueLottery+','
+Money
+' )';
LotteryADOQuery.ExecSQL;
finally
FreeAndNil(LotteryADOQuery);
end;
except
end;
ProgressBar1.Position:=i+1;
end;
finally
FreeAndNil(LotteryDataList);
end;
end;
procedure TLotteryFrm.FormShow(Sender: TObject);
var
I:Integer;
BallAdoQuery:TAdoQuery;
begin
for I:=0 to 32 do
begin
RedBallInfo[I].BallID:=I+1;
RedBallInfo[I].BallCount:=0;
RedBallInfo[I].BallColor:='Red';
end;
for I:=0 to 15 do
begin
BlueBallInfo[I].BallID:=I+1;
BlueBallInfo[I].BallCount:=0;
BlueBallInfo[I].BallColor:='Blue';
end;
BallAdoQuery:=TAdoQuery.Create(Nil);
try
with BallAdoQuery do
begin
Connection:=ADOConnection1;
Close;
Sql.Text:='select * From Lottery order by LotteryID Desc';
Open;
for I:=0 to RecordCount-1 do
begin
RedBallInfo[FieldByname('RedLottery1').AsInteger-1].BallCount:=RedBallInfo[FieldByname('RedLottery1').AsInteger-1].BallCount+1;
RedBallInfo[FieldByname('RedLottery2').AsInteger-1].BallCount:=RedBallInfo[FieldByname('RedLottery2').AsInteger-1].BallCount+1;
RedBallInfo[FieldByname('RedLottery3').AsInteger-1].BallCount:=RedBallInfo[FieldByname('RedLottery3').AsInteger-1].BallCount+1;
RedBallInfo[FieldByname('RedLottery4').AsInteger-1].BallCount:=RedBallInfo[FieldByname('RedLottery4').AsInteger-1].BallCount+1;
RedBallInfo[FieldByname('RedLottery5').AsInteger-1].BallCount:=RedBallInfo[FieldByname('RedLottery5').AsInteger-1].BallCount+1;
RedBallInfo[FieldByname('RedLottery6').AsInteger-1].BallCount:=RedBallInfo[FieldByname('RedLottery6').AsInteger-1].BallCount+1;
BlueBallInfo[FieldByname('BlueLottery').AsInteger-1].BallCount:=RedBallInfo[FieldByname('BlueLottery').AsInteger-1].BallCount+1;
Next;
end;
end;
finally
FreeAndNil(BallAdoQuery);
end;
end;
procedure TLotteryFrm.ChangGuiZouShi;
var
I : Integer;
XMLStr : String;
begin
//常规走势
if C_BallColor.Text='红球' then
begin
For I:=0 to 32 do
begin
C_BallID.Items.Add(IntToStr(I+1));
XMLStr:=XMLStr
+'<ROW'
+' X="'+IntToStr(RedBallInfo[I].BallID)
+'" '
+' Y="'+IntToStr(RedBallInfo[I].BallCount)
+'" '
+'/>';
end;
XMLStr:=GetXMLHead+XMLStr+GetXMLEnd;
end else
begin
For I:=0 to 15 do
begin
C_BallID.Items.Add(IntToStr(I+1));
XMLStr:=XMLStr
+'<ROW'
+' X="'+IntToStr(BlueBallInfo[I].BallID)
+'" '
+' Y="'+IntToStr(BlueBallInfo[I].BallCount)
+'" '
+'/>';
end;
XMLStr:=GetXMLHead+XMLStr+GetXMLEnd;
end;
SetSeriesData;
ClientDataSet.XMLData:=XMLStr;
ClientDataSet.Open;
end;
procedure TLotteryFrm.FenBuTu;
var
CmdQuery : TAdoQuery;
I,J : Integer;
List : TListItem;
begin
//分布图
L_FenBuTu.Clear;
if C_BallColor.Text='红球' then
begin
for I:=0 to 32 do
begin
if L_FenBuTu.Columns.Count<I+3 then
begin
L_FenBuTu.Columns.Add;
L_FenBuTu.Column[I+2].Width:=24;
L_FenBuTu.Column[I+2].Caption:=IntToStr(I+1);
end;
end;
CmdQuery :=TAdoQuery.Create(NIl);
try
CmdQuery.Connection:=ADOConnection1;
CmdQuery.Close;
CmdQuery.SQL.Text:='select * From Lottery order by LotteryID Desc';
CmdQuery.Open;
for I:=0 to CmdQuery.RecordCount-1 do
begin
List:=L_FenBuTu.Items.Add;
List.Caption:=CmdQuery.FieldByName('LotteryID').AsString;
List.SubItems.Add(
CmdQuery.FieldByname('RedLottery1').AsString
+' '
+CmdQuery.FieldByname('RedLottery2').AsString
+' '
+CmdQuery.FieldByname('RedLottery3').AsString
+' '
+CmdQuery.FieldByname('RedLottery4').AsString
+' '
+CmdQuery.FieldByname('RedLottery5').AsString
+' '
+CmdQuery.FieldByname('RedLottery6').AsString
+'+'
+CmdQuery.FieldByname('BlueLottery').AsString
);
if CmdQuery.FieldByname('RedLottery1').AsInteger+1> L_FenBuTu.Items[I].SubItems.Count then
begin
for j:=0 to CmdQuery.FieldByname('RedLottery1').AsInteger-L_FenBuTu.Items[I].SubItems.Count do
begin
if CmdQuery.FieldByname('RedLottery1').AsInteger= L_FenBuTu.Items[I].SubItems.Count then
List.SubItems.Add(CmdQuery.FieldByname('RedLottery1').AsString)
else
List.SubItems.Add('');
end;
end else L_FenBuTu.Items[I].SubItems[CmdQuery.FieldByname('RedLottery1').AsInteger]
:=CmdQuery.FieldByname('RedLottery1').AsString;
if CmdQuery.FieldByname('RedLottery2').AsInteger+1> L_FenBuTu.Items[I].SubItems.Count then
begin
for j:=0 to CmdQuery.FieldByname('RedLottery2').AsInteger-L_FenBuTu.Items[I].SubItems.Count do
begin
if CmdQuery.FieldByname('RedLottery2').AsInteger= L_FenBuTu.Items[I].SubItems.Count then
List.SubItems.Add(CmdQuery.FieldByname('RedLottery2').AsString)
else
List.SubItems.Add('');
end;
end else L_FenBuTu.Items[I].SubItems[CmdQuery.FieldByname('RedLottery2').AsInteger]
:=CmdQuery.FieldByname('RedLottery2').AsString;
if CmdQuery.FieldByname('RedLottery3').AsInteger+1> L_FenBuTu.Items[I].SubItems.Count then
begin
for j:=0 to CmdQuery.FieldByname('RedLottery3').AsInteger-L_FenBuTu.Items[I].SubItems.Count do
begin
if CmdQuery.FieldByname('RedLottery3').AsInteger= L_FenBuTu.Items[I].SubItems.Count then
List.SubItems.Add(CmdQuery.FieldByname('RedLottery3').AsString)
else
List.SubItems.Add('');
end;
end else L_FenBuTu.Items[I].SubItems[CmdQuery.FieldByname('RedLottery3').AsInteger]
:=CmdQuery.FieldByname('RedLottery3').AsString;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -