📄 sd.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "sd.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmSd *frmSd;
//---------------------------------------------------------------------------
__fastcall TfrmSd::TfrmSd(TComponent* Owner)
: TForm(Owner)
{
iSdXsnumSd=0;
iSdXsnumTd=0;
}
//---------------------------------------------------------------------------
void __fastcall TfrmSd::A1Click(TObject *Sender)
{
int iPgeInx;
iPgeInx=pgeSd->ActivePageIndex;
seleItem(iPgeInx);
}
//---------------------------------------------------------------------------
void __fastcall TfrmSd::seleItem(int iPgeInx)
{
int chkCount;
switch (iPgeInx)
{
case 0:
chkCount=chkLstYgdl->Items->Count;
for(i=0;i<chkCount;i++)
chkLstYgdl->Checked[i]=true;
break;
case 1:
chkCount=chkLstWgdl->Items->Count;
for(i=0;i<chkCount;i++)
chkLstWgdl->Checked[i]=true;
break;
case 2:
chkCount=chkLstXl->Items->Count;
for(i=0;i<chkCount;i++)
chkLstXl->Checked[i]=true;
break;
case 3:
chkCount=chkLstXlsj->Items->Count;
for(i=0;i<chkCount;i++)
chkLstXlsj->Checked[i]=true;
break;
case 4:
chkCount=chkLstSs->Items->Count;
for(i=0;i<chkCount;i++)
chkLstSs->Checked[i]=true;
break;
case 5:
chkCount=chkLstDy->Items->Count;
for(i=0;i<chkCount;i++)
chkLstDy->Checked[i]=true;
break;
case 6:
chkCount=chkLstSysl->Items->Count;
for(i=0;i<chkCount;i++)
chkLstSysl->Checked[i]=true;
break;
case 7:
chkCount=chkLstQt->Items->Count;
for(i=0;i<chkCount;i++)
chkLstQt->Checked[i]=true;
break;
case 8:
chkCount=chkLstCs->Items->Count;
for(i=0;i<chkCount;i++)
chkLstCs->Checked[i]=true;
break;
}
}
void __fastcall TfrmSd::N2Click(TObject *Sender)
{
int chkCount;
chkCount=chkLstYgdl->Items->Count;
for(i=0;i<chkCount;i++)
chkLstYgdl->Checked[i]=true;
chkCount=chkLstWgdl->Items->Count;
for(i=0;i<chkCount;i++)
chkLstWgdl->Checked[i]=true;
chkCount=chkLstXl->Items->Count;
for(i=0;i<chkCount;i++)
chkLstXl->Checked[i]=true;
chkCount=chkLstXlsj->Items->Count;
for(i=0;i<chkCount;i++)
chkLstXlsj->Checked[i]=true;
chkCount=chkLstSs->Items->Count;
for(i=0;i<chkCount;i++)
chkLstSs->Checked[i]=true;
chkCount=chkLstDy->Items->Count;
for(i=0;i<chkCount;i++)
chkLstDy->Checked[i]=true;
chkCount=chkLstSysl->Items->Count;
for(i=0;i<chkCount;i++)
chkLstSysl->Checked[i]=true;
chkCount=chkLstQt->Items->Count;
for(i=0;i<chkCount;i++)
chkLstQt->Checked[i]=true;
chkCount=chkLstCs->Items->Count;
for(i=0;i<chkCount;i++)
chkLstCs->Checked[i]=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmSd::btnCancelClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmSd::chkLstYgdlClickCheck(TObject *Sender)
{
chkIndex(chkLstYgdl,lstXs,"1-");
}
//---------------------------------------------------------------------------
void __fastcall TfrmSd::chkLstWgdlClickCheck(TObject *Sender)
{
chkIndex(chkLstWgdl,lstXs,"2-");
}
//---------------------------------------------------------------------------
void __fastcall TfrmSd::chkIndex(TCheckListBox *chk,TListBox *lst,AnsiString pgeName)
{
int lstXsCount,chkIndex,j;
AnsiString chkStr,lstStr;
chkIndex=chk->ItemIndex;
chkStr=chk->Items->Strings[chkIndex];
if(chk->Checked[chkIndex])
{
lstXsCount=lst->Items->Count;
if(frmSd->Caption=="上电显示设置")
{
/*if(lstXsCount>39)
{
Application->MessageBox("电表上电最多显示40项数据!","显示卡设置", MB_OK+MB_ICONEXCLAMATION);
chk->Checked[chkIndex]=false;
return;
}*/
}
else
{
if(lstXsCount>34)
{
Application->MessageBox("电表停电最多显示35项数据!","显示卡设置", MB_OK+MB_ICONEXCLAMATION);
chk->Checked[chkIndex]=false;
return;
}
}
lst->Items->Add(pgeName+chkStr);
lstXsCount=lst->Items->Count;
lstXs->MultiSelect=true;
lstXs->Selected[lstXsCount-1]=true;
lstXs->MultiSelect=false;
}
else
{
for(j=0;j<lst->Items->Count;j++)
{
lstStr=lst->Items->Strings[j];
if(chkStr==lstStr.Delete(1,2))
break;
}
lst->Items->Delete(j);
if(j>0)
{
lstXs->MultiSelect=true;
lstXs->Selected[0]=true;
lstXs->MultiSelect=false;
}
}
}
void __fastcall TfrmSd::chkLstXlClickCheck(TObject *Sender)
{
chkIndex(chkLstXl,lstXs,"3-");
}
//---------------------------------------------------------------------------
void __fastcall TfrmSd::chkLstXlsjClickCheck(TObject *Sender)
{
chkIndex(chkLstXlsj,lstXs,"4-");
}
//---------------------------------------------------------------------------
void __fastcall TfrmSd::chkLstSsClickCheck(TObject *Sender)
{
chkIndex(chkLstSs,lstXs,"5-");
}
//---------------------------------------------------------------------------
void __fastcall TfrmSd::chkLstDyClickCheck(TObject *Sender)
{
chkIndex(chkLstDy,lstXs,"6-");
}
//---------------------------------------------------------------------------
void __fastcall TfrmSd::SpeedButton1Click(TObject *Sender)
{
int lstXsIndex,lstXsCount;
lstXsCount=lstXs->Items->Count;
lstXsIndex=lstXs->ItemIndex;
if(lstXsIndex+1<lstXsCount)
{
lstXs->Items->Move(lstXsIndex,lstXsIndex+1);
lstXs->MultiSelect=true;
lstXs->Selected[lstXsIndex+1]=true;
lstXs->MultiSelect=false;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSd::SpeedButton2Click(TObject *Sender)
{
int lstXsIndex;
lstXsIndex=lstXs->ItemIndex;
if(lstXsIndex>0)
{
lstXs->Items->Move(lstXsIndex,lstXsIndex-1);
lstXs->MultiSelect=true;
lstXs->Selected[lstXsIndex-1]=true;
lstXs->MultiSelect=false;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSd::SpeedButton3Click(TObject *Sender)
{
if(lstXs->Items->Count>0)
lstXs->Clear();
chkClear(chkLstYgdl);
chkClear(chkLstWgdl);
chkClear(chkLstXl);
chkClear(chkLstXlsj);
chkClear(chkLstDy);
chkClear(chkLstSs);
chkClear(chkLstSysl);
chkClear(chkLstQt);
chkClear(chkLstCs);
}
//---------------------------------------------------------------------------
void __fastcall TfrmSd::chkClear(TCheckListBox *chk)
{
for(int i=0;i<chk->Items->Count;i++)
{
if(chk->Checked[i])
chk->Checked[i]=false;
}
}
void __fastcall TfrmSd::btnOkClick(TObject *Sender)
{
int i,lstXsCount,pgeName,xsNumber,dataLen;
AnsiString lstStr,convStr,writeStrA,writeStrB,xyStr;
lstXsCount=lstXs->Items->Count;
if(lstXsCount==0)
{
Application->MessageBox("请先选择显示数据项!","显示卡设置", MB_OK+MB_ICONEXCLAMATION);
return;
}
if(frmSd->Caption=="上电显示设置")
{
writeStrA="";
for(i=0;i<lstXsCount;i++)
{
lstStr=lstXs->Items->Strings[i].SubString(3,5);
convStr=conv_sd_str(lstStr);
writeStrA+=convStr;
}
//dataLen=writeStrA.Length();
writeStrB=writeStrA;//+AnsiString::StringOfChar('F', 80-dataLen);
iSdXsnumSd=lstXs->Items->Count;
}
else
{
writeStrA="";
for(i=0;i<lstXsCount;i++)
{
lstStr=lstXs->Items->Strings[i].SubString(1,4);
convStr=conv_str(lstStr);
writeStrA+=convStr;
}
dataLen=writeStrA.Length();
writeStrB=writeStrA+AnsiString::StringOfChar('F', 70-dataLen);
iSdXsnumTd=lstXs->Items->Count;
}
writeStr=writeStrB;
//iSdXsnum=lstXs->Items->Count;
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmSd::conv_sd_str(AnsiString lstStr)
{
unsigned int pgeName,xsNumber,pgeConv,writeNum;
AnsiString pgeStr,numStr,tmpStr,convStr;
// numStr=lstStr.SubString(3,2);
//pgeName=StrToInt(pgeStr);
// xsNumber=StrToInt(numStr)-1;
/*switch (pgeName)
{
case 1: pgeConv=0;break;
case 2: pgeConv=32;break;
case 3: pgeConv=64;break;
case 4: pgeConv=96;break;
case 5: pgeConv=128;break;
case 6: pgeConv=160;break;
}*/
//writeNum=pgeConv+xsNumber;
//writeNum=StrToInt(lstStr);
tmpStr="0"+lstStr;
convStr=tmpStr.SubString(5,2)+tmpStr.SubString(3,2)+tmpStr.SubString(1,2);
return convStr;
}
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmSd::conv_str(AnsiString lstStr)
{
unsigned int pgeName,xsNumber,pgeConv,writeNum;
AnsiString pgeStr,numStr,convStr;
//pgeStr=lstStr.SubString(1,1);
numStr=lstStr.SubString(3,2);
//pgeName=StrToInt(pgeStr);
xsNumber=StrToInt(numStr);//-1;
/*switch (pgeName)
{
case 1: pgeConv=0;break;
case 2: pgeConv=32;break;
case 3: pgeConv=64;break;
case 4: pgeConv=96;break;
case 5: pgeConv=128;break;
case 6: pgeConv=160;break;
}*/
//writeNum=pgeConv+xsNumber;
writeNum=xsNumber;
convStr=convStr.IntToHex(writeNum,2);
if(convStr.Length()==1)
convStr="0"+convStr;
return convStr;
}
//---------------------------------------------------------------------------
void __fastcall TfrmSd::FormActivate(TObject *Sender)
{
chkLstYgdl->Clear();
chkLstWgdl->Clear();
chkLstXl->Clear();
chkLstXlsj->Clear();
chkLstSs->Clear();
chkLstDy->Clear();
chkLstSysl->Clear();
chkLstQt->Clear();
chkLstCs->Clear();
pgeSd->ActivePage=TabSheet1;
AnsiString sAppPath=GetCurrentDir();
if(frmSd->Caption=="上电显示设置")
{
pgeSd->Pages[0]->Caption="1.本月有功";
pgeSd->Pages[1]->Caption="2.本月无功";
pgeSd->Pages[2]->Caption="3.需量";
pgeSd->Pages[3]->Caption="4.需量出现时间";
pgeSd->Pages[4]->Caption="5.实时数据";
pgeSd->Pages[5]->Caption="6.电压越限记录";
pgeSd->Pages[6]->Caption="7.失压失流记录";
pgeSd->Pages[7]->Caption="8.其它数据";
pgeSd->Pages[8]->Caption="9.电表参数";
chkLstYgdl->Items->LoadFromFile(sAppPath+"\\szdat\\sd_Ygdl.dat");
chkLstWgdl->Items->LoadFromFile(sAppPath+"\\szdat\\sd_Wgdl.dat");
chkLstXl->Items->LoadFromFile(sAppPath+"\\szdat\\sd_Xl.dat");
chkLstXlsj->Items->LoadFromFile(sAppPath+"\\szdat\\sd_Xlsj.dat");
chkLstSs->Items->LoadFromFile(sAppPath+"\\szdat\\sd_Ss.dat");
chkLstDy->Items->LoadFromFile(sAppPath+"\\szdat\\sd_Dy.dat");
chkLstSysl->Items->LoadFromFile(sAppPath+"\\szdat\\sd_Sysl.dat");
chkLstQt->Items->LoadFromFile(sAppPath+"\\szdat\\sd_Qt.dat");
chkLstCs->Items->LoadFromFile(sAppPath+"\\szdat\\sd_Cs.dat");
}
else
{
pgeSd->Pages[0]->Caption="停电循显项";
pgeSd->Pages[1]->Caption="";
pgeSd->Pages[2]->Caption="";
pgeSd->Pages[3]->Caption="";
pgeSd->Pages[4]->Caption="";
pgeSd->Pages[5]->Caption="";
pgeSd->Pages[6]->Caption="";
pgeSd->Pages[7]->Caption="";
pgeSd->Pages[8]->Caption="";
chkLstYgdl->Items->LoadFromFile(sAppPath+"\\szdat\\td.dat");
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmSd::chkLstSyslClickCheck(TObject *Sender)
{
chkIndex(chkLstSysl,lstXs,"7-");
}
//---------------------------------------------------------------------------
void __fastcall TfrmSd::chkLstQtClickCheck(TObject *Sender)
{
chkIndex(chkLstQt,lstXs,"8-");
}
//---------------------------------------------------------------------------
void __fastcall TfrmSd::chkLstCsClickCheck(TObject *Sender)
{
chkIndex(chkLstCs,lstXs,"9-");
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -