📄 form_techanalysel.pas
字号:
end;////for i
/////给偏度>8的添加颜色////////////////////////
for i:=3 to grid1.RowCount-1 do
begin
if strToint(grid1.cells[10,i].foretext)>=8 then
begin
grid1.Cells[10,i].Color:=rgb(255,0,0);
end;///if
end;/////
/////给散度>8的添加颜色////////////////////////
for i:=3 to grid1.RowCount-1 do
begin
if strToint(grid1.cells[11,i].foretext)>=8 then
begin
grid1.Cells[11,i].Color:=rgb(0,255,0);
end;///if
end;/////
/////给AC>8的添加颜色////////////////////////
for i:=3 to grid1.RowCount-1 do
begin
if strToint(grid1.cells[12,i].foretext)>=8 then
begin
grid1.Cells[12,i].Color:=rgb(255,128,0);
end;///if
end;/////
/////给AC>8的添加颜色////////////////////////
for i:=3 to grid1.RowCount-1 do
begin
if strToint(grid1.cells[13,i].foretext)>0 then
begin
grid1.Cells[13,i].Color:=rgb(255,128,255);
end;///if
end;/////
///////存储最近28期的偏度、散度、AC值//////////////
for i:=grid1.RowCount-28 to grid1.RowCount-1 do
begin
_DrawPD[i-(grid1.RowCount-29)]:=strToInt(grid1.cells[10,i].foretext);
_DrawSD[i-(grid1.RowCount-29)]:=strToInt(grid1.cells[11,i].foretext);
_DrawAC[i-(grid1.RowCount-29)]:=strToInt(grid1.cells[12,i].foretext);
end;///for i
_DrawPD[1]:=2;
_DrawSD[1]:=2;
_DrawAC[1]:=2;
///////////////////////////////////////////////
grid1.Refresh;
///////////////////////////////////////////////////
end;
procedure TForm_TechAnalyse.TabCtrlDrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
TabTitle:Array[0..50] of string;
begin
TabTitle[0]:='数据偏散度';
TabTitle[1]:='偏散度曲线';
TabTitle[2]:='分球偏度曲线';
TabTitle[3]:='计算法选号';
TabTitle[4]:='偏散度余数图';
TabTitle[5]:='偏度分布图';
TabTitle[6]:='散度分布图';
TabTitle[7]:='AC值分布图';
//TabTitle[4]:='工龄段查询';
with Control.Canvas do
begin
if active then
begin
Font.Color:=clRed;
Font.Name:='宋体';
Font.Size:=10;
end
else
begin
Font.Style:=[];
Font.Name:='宋体';
Font.Size:=10;
end;
TextRect(Rect,Rect.Left+20,Rect.Top+3,TabTitle[TabIndex]);////输出标题
ImageList1.Draw(Control.Canvas,Rect.Left+2,Rect.Top+2,TabIndex);///画图标
end;///with
end;
procedure TForm_TechAnalyse.TabCtrlChange(Sender: TObject);
Function GetMinValue(x:integer;A:Array of integer):string;
var
i:integer;
y:integer;
_Value:TStringList;
begin
_Value:=TStringList.Create;
_Value.Clear;
//showmessage(inttostr(A[1]));
for i:=0 to 5 do
begin
if abs((x-a[i]))<10 then
begin
_Value.Add('0'+trim(Inttostr(abs(x-a[i]))));
end
else
_Value.Add(trim(Inttostr(abs(x-a[i]))));
end;
_Value.Sort;
//showmessage(_Value.text);
result:=inttostr(x)+':'+trim(_Value[0]);
end;///function
var
PD_Data:Array[1..30] of integer; ////记录偏度数据
SD_Data:Array[1..30] of integer; ////记录散度数据
AC_Data:Array[1..30] of integer; ////记录AC值数据
QH_Data:Array[1..30] of string; /////记录每一期的期号
i,j,m:integer;
R_CpData1:Array[1..6,0..100] of integer;/////记录彩票数据
R_CPID:Array[0..100] of string;////记录彩票的期号
FieldIndex:string;////记录字段索引
CurrentPath:string;////记录当前数据库路径
strSql:string; /////记录SQL语句
sBeginID:string;////取得数据的上限6106...
sEndID:string;////取得数据的下限
//////////////////////////////////////////////
R_CPFirstQ:TStringList;
R_CPFirstQL:Array[0..30] of integer; ////存储红球的偏度值
/////存储球之间的偏度差//////////////
R_CPPDSub:Array[0..30] of integer;
/////
sMax:string;/////存储在计算选号法中甬道的本期期号////////////
_LastID:Array[1..7] of integer;
/////计算偏度所用的///////////
_LeastValue1:TStringList;
_LeastValue2:TStringList;
_LeastValue3:TStringList;
_LeastValue4:TStringList;
_LeastValue5:TStringList;
_LeastValue6:TStringList;
_LeastValue7:TStringList;
////////////////////////////////
//////计算散度用的//////////////
_LeastPDValue:Array[1..7,1..7] of TStringList;////存储相减,想加得到的数值
_LeastPDValue1:Array[1..7] of TStringList;/////存储相减想加合并后无重复值的组合
_Area1_Value:Array[1..7] of TStringList;
_Area2_Value:Array[1..7] of TStringList;
_Area3_Value:Array[1..7] of TStringList;
///////
_Area1:Array[1..7] of string;
_Area2:Array[1..7] of string;
_Area3:Array[1..7] of string;
/////下面是用语计算必出号码所用的///////////
_EqualPD:Array[1..7] of TStringList;
_EqualPD1:Array[1..7] of TStringList;
_R:Array[1..6] of integer;
_Tmp_x:string;
//////用于计算TabCtrl.index=4中偏度与散度除3余数/////
_DivPD:Array[1..200] of integer;/////存储偏度
_DivSD:Array[1..200] of integer;/////存储散度
_DivAC:Array[1..200] of integer;////存储AC值
_DivPD1:Array[1..200] of integer;////存储除3后偏度
_DivSD1:Array[1..200] of integer;////存储除3后散度
_DivAC1:Array[1..200] of integer;////存储除3后AC
////用于计算偏度号码差值和偏度号码尾数差//////////
_PD_Sub:Array[1..100] of integer;
_PD_Sub_Last:Array[1..100] of integer;
_PD_Sub_Value:Array[1..100] of integer;
/////////////////////////////////
begin
Currentpath:=ExtractFilePath(paramstr(0));
sBeginID:=S_BeginID;
sEndID:=s_EndID;
//////////TabCtrl.Tabindex=1 是偏散度曲线then//////////////////
if TabCtrl.TabIndex=1 then
begin
////取得数据/////////
for i:=grid1.RowCount-27 to grid1.RowCount do
begin
PD_Data[i+28-grid1.RowCount]:=strtoint(grid1.cells[10,i-1].foretext);
SD_Data[i+28-grid1.RowCount]:=strtoint(grid1.cells[11,i-1].foretext);
AC_Data[i+28-grid1.RowCount]:=strtoint(grid1.cells[12,i-1].foretext);
QH_Data[i+28-grid1.RowCount]:=trim(grid1.cells[1,i-1].foretext);
end;//for i
//showmessage(inttostr(SD_Data[1]));
/////画散度曲线//////////////////////
chart1.Series[0].Clear;
for i:=0 to 27 do
begin
series1.Add(SD_Data[1+i],QH_Data[i+1],clteecolor);
end;//for i
/////画偏度曲线//////////////////////
chart2.Series[0].Clear;
for i:=0 to 27 do
begin
Lineseries1.Add(PD_Data[1+i],'',clteecolor);
end;//for i
/////画AC曲线//////////////////////
chart3.Series[0].Clear;
for i:=0 to 27 do
begin
Lineseries2.Add(AC_Data[1+i],'',clteecolor);
end;//for i
end;////TabCtrl.index=1
//////Tabctrl.index=2是分球的偏度曲线/////////////////////
if TabCtrl.TabIndex=2 then
begin
///首先得到彩票的数据//////////
for j:=1 to 6 do
begin
with AdoQuery1 do
begin
connectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+CurrentPath+'\sale.mdb;Persist Security Info=False';
close;
sql.Clear;
strSql:='Select * From CPData where sID>="'+sbeginID+'" and sID<="'+sEndID+'" order by sID';
sql.Add(strSql);
prepared;
open;
if recordcount<>0 then
begin
i:=0;
while not eof do
begin
FieldIndex:='r'+inttostr(j);
R_CPData1[j,i]:=FieldByName(FieldIndex).AsInteger;
//R_CPData2[i]:=FieldByName('r2').AsInteger;
//R_CPData3[i]:=FieldByName('r3').AsInteger;
//R_CPData4[i]:=FieldByName('r4').AsInteger;
//R_CPData5[i]:=FieldByName('r5').AsInteger;
//R_CPData6[i]:=FieldByName('r6').AsInteger;
R_CPID[i]:=FieldByName('sID').AsString;
next;
inc(i);
end;///while
end;//if
end;///with
end;//forj
/////开始计算第一个球的偏度////////////////
R_CPFirstQ:=TStringList.Create;
for i:=0 to 27 do
begin
R_CPFirstQ.Clear;
for j:=1 to 6 do
begin
if length(trim(formatFloat('##0',abs(R_CPData1[1,i+1]-R_CPData1[j,i]))))=1 then
begin
R_CPFirstQ.Add('0'+trim(formatFloat('##0',abs(R_CPData1[1,i+1]-R_CPData1[j,i]))));
end
else
begin
R_CPFirstQ.Add(trim(formatFloat('##0',abs(R_CPData1[1,i+1]-R_CPData1[j,i]))));
end;
end;//for j
R_CPFirstQ.Sort;
//showmessage(R_CPFirstQ.Text);
R_CPfirstQL[i+1]:=strtoint(R_CPFirstQ[0]);
//showmessage(inttostr(R_CPFirstQ2[i-1]));
end;//for i
/////画第一个红球偏度的曲线/////////////////////
R_CPFirstQL[0]:=2;
chart4.Series[0].Clear;
for i:=0 to 27 do
begin
lineSeries3.Add(R_CPFirstQL[i],R_CPID[i],clteecolor);
end;
///////计算两个球之间偏度变化的曲线////////////////////////////
///首先取得两个球之间的偏度差//////////////////////////////////
R_CPPDSub[0]:=2;
for i:=0 to 27 do
begin
R_CPPDSub[i+1]:=abs(R_CPFirstQL[i+1]-R_CPFirstQL[i]);
end;///
chart5.Series[0].Clear;
for i:=0 to 27 do
begin
lineSeries4.Add(R_CPPDSub[i],'',clteecolor);
end;
////////////////////////////////////////////////////////////////
end;/////if tabctrl=2
//////tabctrl.index=2结束//////////////////////////////////
//////tabctrl.tabindex=3是计算法选号开始//////////////////////
if TabCtrl.TabIndex=3 then
begin
//////初始化表格Grid3_1//////////////////////
grid3_1.RowHeights[1]:=30;
grid3_1.SetMerges(rect(1,1,grid3_1.ColCount-1,1));
grid3_1.Cells[1,1].FontSize:=14;
grid3_1.Cells[1,1].ForeText:='偏散度计算方法';
grid3_1.ColWidths[1]:=100;
grid3_1.Cells[1,2].ForeText:='本期期号';
grid3_1.SetMerges(rect(2,2,grid3_1.ColCount-1,2));
grid3_1.Cells[1,3].ForeText:='本期开奖号码';
grid3_1.Cells[1,4].ForeText:='本期偏度';
grid3_1.SetMerges(rect(2,4,grid3_1.ColCount-1,4));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -