604
社区成员
发帖
与我相关
我的任务
分享
1.数据添加函数
void TfrmMain::AddDatas(TAdvListView* lv, const AnsiString Str, int &Value)
{
int Port = Str.ToIntDef(0);
if( Port <= 0 ) return;
if( m_CommForms[Port]->MeasValue == Value ) return;
Value = m_CommForms[Port]->MeasValue; // 这里是获取采集数据
m_Error[Port] = m_CommForms[Port]->m_Error; //m_Error为异常标识
static int tt = 0;
int Row = lv->Items->Count-1;
TListItem* Item = lv->Items->operator [](Row);
if( NULL == Item ) {
Item = lv->Items->Add(); Item->Caption = tt++;
for( int i=0; i<10; i++ ) Item->SubItems->Add("-1");
}
else {
if( Item->SubItems->Strings[9] != "-1" ) {
Item = lv->Items->Add(); Item->Caption = tt++;
for( int i=0; i<10; i++ ) Item->SubItems->Add("-1");
// 上一句,本来想用Item->SubItems->Add("");结果发现添加不成功,
// 如果后面直接往SubItem里填入数据会报错,指针溢出;
}
}
AnsiString tmp = IntToStr(Value);
for( int i=0; i<10; i++ )
{
if( Item->SubItems->Strings[i] != "-1") continue;
Item->SubItems->Strings[i] = tmp;
break;
}
}
2.添加过程函数
void __fastcall TfrmMain::lvList1AdvancedCustomDrawSubItem(
TCustomListView *Sender, TListItem *Item, int SubItem,
TCustomDrawState State, TCustomDrawStage Stage, bool &DefaultDraw)
{
SubItem -= 1;
static int temp = 0;
if( m_Start[0] ) {temp = Item->SubItems->Strings[SubItem].ToInt()-1;m_Start[0]=false;}
int Port = edtMeter1->Text.ToIntDef(0);
SubItemDrawFun(Sender,temp,Item,SubItem,DefaultDraw, m_Error[Port]);
}
void TfrmMain::SubItemDrawFun( TCustomListView *Sender, int &pData,
TListItem *Item, int SubItem, bool &DefaultDraw, bool bFlag)
{
Sender->Canvas->Brush->Color = clInfoBk;
int data = Item->SubItems->Strings[SubItem].ToInt();
if( bFlag ) Sender->Canvas->Brush->Color = clLime;
else {
int K0 = (int)(abs(data-pData)+0.5);
if( K0 != RIGHTVALUE ) Sender->Canvas->Brush->Color = clRed; // #define RIGHTVALUE 1
}
pData = data;
DefaultDraw = true;
}