Я добавляю индикатор прогресса в каждую строку столбца табличного представления моей первой таблицы.
Как я это делаю => Я поместил 4 индикатора в форму и
btvArrProgGetProperties(TcxCustomGridTableItem *Sender, TcxCustomGridRecord *ARecord,
TcxCustomEditProperties *&AProperties)
присваивание свойств определенной строке путем изменения помещенных свойств индикатора выполнения.
вот мой код
void __fastcall TfMain::btvArrProgGetProperties(TcxCustomGridTableItem *Sender, TcxCustomGridRecord *ARecord,
TcxCustomEditProperties *&AProperties)
{
if ( StrToInt(ARecord->Values[ARecord->RecordIndex,1])==4 ){
ARecord->Values[ARecord->RecordIndex,0]=100;
AProperties=pCancel->Properties;
}
else
if ( StrToInt(ARecord->Values[ARecord->RecordIndex,1])==2) {
ARecord->Values[ARecord->RecordIndex,0]=100;
AProperties=pDep->Properties;
}
else {
if (StrToInt(ARecord->Values[ARecord->RecordIndex,1])==1) {
if ((ARecord->Values[ARecord->RecordIndex,7])!=0 && (ARecord->Values[ARecord->RecordIndex,12])!=0) {
//now time
nwTm=Now().FormatString("hh:mm:ss");
//get dep time
dpTm=StrToDateTime(ARecord->Values[ARecord->RecordIndex,7]);
dpTm.DecodeTime(&dpH,&dpM,&dpS,&dpMS);
//get reg time
rgTm=StrToDateTime(ARecord->Values[ARecord->RecordIndex,12]);
//find difference between dep and reg
dif=(1.0 + Double(dpTm)-Double(rgTm));
//get difference hours and mins
dif.DecodeTime(&difH,&difM,&difS,&difMS);
//diff between dep and reg in seconds
pReg->Properties->Max=difH*3600+difM*60+difS;
nwTm=Now().FormatString("hh:mm:ss");
nwTm.DecodeTime(&nwH,&nwM,&nwS,&nwMS);
if ((dpH>nwH) || ((dpH>nwH) && (dpM>=nwM ||dpM<=nwM)) || (dpH==nwH && dpM>nwM) ) {
fltRem =(1.0 + Double(dpTm)-Double(nwTm));
fltRem.DecodeTime(&remH,&remM,&remS,&remMS);
_result=remH*3600+remM*60+remS;
pReg->Properties->Text=getTimeBySecs(_result);
ARecord->Values[ARecord->RecordIndex,0]=pReg->Properties->Max-_result;
pReg->Position=- _result;
}
else
{
pReg->Properties->Max=100;
ARecord->Values[ARecord->RecordIndex,0]=100;
pReg->Properties->Text="Готово";
/*
ARecord->Values[ARecord->RecordIndex,0]=pReg->Properties->Max;
pReg->Position=pReg->Properties->Max;
*/
}
AProperties=pReg->Properties;
}
}
}
}
Я думаю, что это не очень хороший подход для решения моей проблемы (добавление индикатора выполнения в столбец, для которого его позиция изменяется динамически), потому что, когда я нажимаю на строку строки, позиция индикатора прогресса изменяется из-за последнего значения, установленного в прогрессбар !!
Я предпочитаю динамически создавать имя набора индикаторов выполнения и другие свойства для него во время выполнения и назначать определенную строку в событии GetProperties
.
Какой подход является лучшим?
Есть ли демоверсия по этому вопросу? Если да, не могли бы вы поделиться, пожалуйста!
Заранее спасибо!