Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GotoBookmark太慢了? 我正在修复一个C++ Builder 5应用程序,我有这个代码: void __fastcall TFPrincipal::DBGModuleStartDrag(TObject *Sender, TDragObject *&DragObject) { m_pParentNodesDragDrop = NULL; DragObject = NULL; bool bAbort = false; m_ListaModulosDragDrop->Clear(); m_ListaContenedoresDragDrop->Clear(); CInfoNode *pInfoNode = NULL; CInfoModule *pInfoMod = NULL ; long l_IdContainerParent = 0; TDataSet * DataSet = NULL; m_pLastDragNode = NULL; m_bLastAccept = false; try { IProductsPtr ProductsPtr = m_pgServerConnection->Create<IProducts>( CLSID_CProducts ); if(DBGModules) { if ( DBGModules->DataSource ) { if ( DBGModules->DataSource->DataSet ) { DataSet = DBGModules->DataSource->DataSet; DataSet->DisableControls(); } else return; } else return; } else return; for (int i = 0; i < DBGModules->SelectedCount; i++) { DataSet->GotoBookmark(DBGModules->SelectedRows[i].c_str()); pInfoMod = new CInfoModule( DataSet->FieldByName("IP")->AsString, (long)DataSet->FieldByName("IdComputer")->AsInteger, (Products)DataSet->FieldByName("IdProduct")->AsInteger, DataSet->FieldByName("Host")->AsString, DataSet->FieldByName("Instance")->AsString, DataSet->FieldByName("Version")->AsString, DataSet->FieldByName("AditionalInfo")->AsString, (Antivirus)DataSet->FieldByName("IdAntivirus")->AsInteger, DataSet->FieldByName("NumNotPadmin3AV")->AsInteger, DataSet->FieldByName("NumPadmin3AV")->AsInteger, false, (long)DataSet->FieldByName("IdUnit")->AsInteger, (long)DataSet->FieldByName("IdUnitForInstall")->AsInteger); DataSet->FreeBookmark(DataSet->GetBookmark()); pInfoNode = new CInfoNode(); pInfoNode->m_pInfoModule = pInfoMod; // Platree::TPlaTreeNode *pNodoSeleccionado = pInfoNode; // if (pNodoSeleccionado) { // guardamos el padre de uno de los nodos seleccionados para // el drag & drop para que usarlo luego para que aparezca desplegada // la rama de origen del nodo movido y la rama de destino tras // el refresco (parametro del ReloadTree) // if ( ! m_pParentNodesDragDrop ) // m_pParentNodesDragDrop = pNodoSeleccionado->Parent; //CInfoNode *pInfoNodoSeleccionado; //pInfoNodoSeleccionado = (CInfoNode *)pNodoSeleccionado->Data; if (pInfoNode->IsModule()) { long l_IdContainerParent = 0; m_ListaModulosDragDrop->AddObject(pInfoMod->m_asDisplayName, (TObject*)pInfoNode); /* TESTHR(ProductsPtr->GetIDContainer(pInfoMod->m_lIdComputer, pInfoMod->m_pdIDProduct, WideString(pInfoMod->m_asInstance), &l_IdContainerParent));*/ CInfoDragNode *pInfoDragNode = new CInfoDragNode(); pInfoDragNode->m_asInstance = pInfoMod->m_asInstance; pInfoDragNode->m_lIdComputer = pInfoMod->m_lIdComputer; pInfoDragNode->m_lIdContainerParent = /*l_IdContainerParent*/0; pInfoDragNode->m_pdIDProduct = pInfoMod->m_pdIDProduct; m_ListaContenedoresDragDrop->Add( reinterpret_cast<void*>(pInfoDragNode) ); } else { bAbort = true; break; } } /* delete pInfoNode; delete pInfoMod;*/ DataSet->EnableControls(); } if (bAbort) { // alguno de los items seleccionados no es un módulo m_ListaModulosDragDrop->Clear(); } } catch (const nm_error::__com_error_ &e ) { PutDebugMessage(COMError2str(e)); m_ListaModulosDragDrop->Clear(); } } void\uu fastcall TFPrincipal::DBGModuleStartDrag(TObject*Sender, TDragObject*&DragObject) { m_pParentNodesDragDrop=NULL; DragObject=NULL; 布尔巴波特=假; m_ListaModulosDragDrop->Clear(); m_listaconenedoresdragdrop->Clear(); CInfoNode*pInfoNode=NULL; CInfoModule*pInfoMod=NULL; 长l_IdContainerParent=0; TDataSet*DataSet=NULL; m_pLastDragNode=NULL; m_bLastAccept=假; 尝试 { IPPRODUCTSPTR ProductsPtr= m_pgServerConnection->Create(CLSID_CProducts); if(DBGModules) { if(DBGModules->DataSource) { if(DBGModules->DataSource->DataSet) { DataSet=DBGModules->DataSource->DataSet; 数据集->禁用控件(); } 否则返回; } 否则返回; } 否则返回; 对于(int i=0;iSelectedCount;i++) { DataSet->GotoBookmark(DBGModules->SelectedRows[i].c_str()); pInfoMod=新的CInfoModule(数据集->字段名称(“IP”)->关联, (长)DataSet->FieldByName(“IdComputer”)->AsInteger, (产品)数据集->字段名称(“IdProduct”)->AsInteger, DataSet->FieldByName(“主机”)->关联, DataSet->FieldByName(“实例”)->关联, DataSet->FieldByName(“版本”)->关联, DataSet->FieldByName(“AditionalInfo”)->AsString, (防病毒)数据集->FieldByName(“IdAntivirus”)->AsInteger, 数据集->字段名称(“NumNotPadmin3AV”)->AsInteger, DataSet->FieldByName(“NumPadmin3AV”)->AsInteger, 假,, (长)DataSet->FieldByName(“IdUnit”)->AsInteger, (长)DataSet->FieldByName(“IdUnitForInstall”)->AsInteger; DataSet->FreeBookmark(DataSet->GetBookmark()); pInfoNode=新的CInfoNode(); pinfoode->m_pInfoModule=pInfoMod; //Platree::TPlaTreeNode*pNodoSeleccionado=pInfoNode; //如果(PNODOSELECIONADO) { //这是一个非常好的例子 //我们的拖拽和拖拽工作需要我们的帮助 //诺多·莫维多和迪斯特诺·特拉斯之家酒店 //el refresco(参数del ReloadTree) //如果(!m_pParentNodesDragDrop) //m_pParentNodesDragDrop=pNodoSeleccionado->Parent; //CInfoNode*pInfoNodoSeleccionado; //PINFONODESELECIONADO=(CInfoNode*)PNODOSELECIONADO->数据; if(pInfoNode->IsModule()) { 长l_IdContainerParent=0; m_ListaModulosDragDrop->AddObject(pInfoMod->m_asDisplayName, (TObject*)pInfoNode); /*TESTHR(ProductsPtr->GetIDContainer(pInfoMod->m_-lIdComputer), pInfoMod->m_pdIDProduct, 宽管柱(pInfoMod->m_asInstance), &l_idcontainer parent)*/ CInfoDragNode*pInfoDragNode=新CInfoDragNode(); pInfoDragNode->m_asInstance=pInfoMod->m_asInstance; pInfoDragNode->m_lIdComputer=pInfoMod->m_lIdComputer; pInfoDragNode->m_lIdContainerParent=/*l_IdContainerParent*/0; pInfoDragNode->m_pdIDProduct=pInfoMod->m_pdIDProduct; m_ListaContenedoresDragDrop->添加( 重新解释铸造(平福德拉格诺德) ); } 其他的 { 巴波特=真; 打破 } } /*删除pInfoNode; 删除pInfoMod*/ 数据集->启用控件(); } 如果(巴波特) { //所有物品的选择都是不可能的 m_ListaModulosDragDrop->Clear(); } } 捕获(常数nm_错误::_com_错误(&e) { PutDebugMessage(COMError2str(e)); m_ListaModulosDragDrop->Clear(); } }_C++_Dataset_C++builder - Fatal编程技术网 Clear(); m_listaconenedoresdragdrop->Clear(); CInfoNode*pInfoNode=NULL; CInfoModule*pInfoMod=NULL; 长l_IdContainerParent=0; TDataSet*DataSet=NULL; m_pLastDragNode=NULL; m_bLastAccept=假; 尝试 { IPPRODUCTSPTR ProductsPtr= m_pgServerConnection->Create(CLSID_CProducts); if(DBGModules) { if(DBGModules->DataSource) { if(DBGModules->DataSource->DataSet) { DataSet=DBGModules->DataSource->DataSet; 数据集->禁用控件(); } 否则返回; } 否则返回; } 否则返回; 对于(int i=0;iSelectedCount;i++) { DataSet->GotoBookmark(DBGModules->SelectedRows[i].c_str()); pInfoMod=新的CInfoModule(数据集->字段名称(“IP”)->关联, (长)DataSet->FieldByName(“IdComputer”)->AsInteger, (产品)数据集->字段名称(“IdProduct”)->AsInteger, DataSet->FieldByName(“主机”)->关联, DataSet->FieldByName(“实例”)->关联, DataSet->FieldByName(“版本”)->关联, DataSet->FieldByName(“AditionalInfo”)->AsString, (防病毒)数据集->FieldByName(“IdAntivirus”)->AsInteger, 数据集->字段名称(“NumNotPadmin3AV”)->AsInteger, DataSet->FieldByName(“NumPadmin3AV”)->AsInteger, 假,, (长)DataSet->FieldByName(“IdUnit”)->AsInteger, (长)DataSet->FieldByName(“IdUnitForInstall”)->AsInteger; DataSet->FreeBookmark(DataSet->GetBookmark()); pInfoNode=新的CInfoNode(); pinfoode->m_pInfoModule=pInfoMod; //Platree::TPlaTreeNode*pNodoSeleccionado=pInfoNode; //如果(PNODOSELECIONADO) { //这是一个非常好的例子 //我们的拖拽和拖拽工作需要我们的帮助 //诺多·莫维多和迪斯特诺·特拉斯之家酒店 //el refresco(参数del ReloadTree) //如果(!m_pParentNodesDragDrop) //m_pParentNodesDragDrop=pNodoSeleccionado->Parent; //CInfoNode*pInfoNodoSeleccionado; //PINFONODESELECIONADO=(CInfoNode*)PNODOSELECIONADO->数据; if(pInfoNode->IsModule()) { 长l_IdContainerParent=0; m_ListaModulosDragDrop->AddObject(pInfoMod->m_asDisplayName, (TObject*)pInfoNode); /*TESTHR(ProductsPtr->GetIDContainer(pInfoMod->m_-lIdComputer), pInfoMod->m_pdIDProduct, 宽管柱(pInfoMod->m_asInstance), &l_idcontainer parent)*/ CInfoDragNode*pInfoDragNode=新CInfoDragNode(); pInfoDragNode->m_asInstance=pInfoMod->m_asInstance; pInfoDragNode->m_lIdComputer=pInfoMod->m_lIdComputer; pInfoDragNode->m_lIdContainerParent=/*l_IdContainerParent*/0; pInfoDragNode->m_pdIDProduct=pInfoMod->m_pdIDProduct; m_ListaContenedoresDragDrop->添加( 重新解释铸造(平福德拉格诺德) ); } 其他的 { 巴波特=真; 打破 } } /*删除pInfoNode; 删除pInfoMod*/ 数据集->启用控件(); } 如果(巴波特) { //所有物品的选择都是不可能的 m_ListaModulosDragDrop->Clear(); } } 捕获(常数nm_错误::_com_错误(&e) { PutDebugMessage(COMError2str(e)); m_ListaModulosDragDrop->Clear(); } },c++,dataset,c++builder,C++,Dataset,C++builder" /> Clear(); m_listaconenedoresdragdrop->Clear(); CInfoNode*pInfoNode=NULL; CInfoModule*pInfoMod=NULL; 长l_IdContainerParent=0; TDataSet*DataSet=NULL; m_pLastDragNode=NULL; m_bLastAccept=假; 尝试 { IPPRODUCTSPTR ProductsPtr= m_pgServerConnection->Create(CLSID_CProducts); if(DBGModules) { if(DBGModules->DataSource) { if(DBGModules->DataSource->DataSet) { DataSet=DBGModules->DataSource->DataSet; 数据集->禁用控件(); } 否则返回; } 否则返回; } 否则返回; 对于(int i=0;iSelectedCount;i++) { DataSet->GotoBookmark(DBGModules->SelectedRows[i].c_str()); pInfoMod=新的CInfoModule(数据集->字段名称(“IP”)->关联, (长)DataSet->FieldByName(“IdComputer”)->AsInteger, (产品)数据集->字段名称(“IdProduct”)->AsInteger, DataSet->FieldByName(“主机”)->关联, DataSet->FieldByName(“实例”)->关联, DataSet->FieldByName(“版本”)->关联, DataSet->FieldByName(“AditionalInfo”)->AsString, (防病毒)数据集->FieldByName(“IdAntivirus”)->AsInteger, 数据集->字段名称(“NumNotPadmin3AV”)->AsInteger, DataSet->FieldByName(“NumPadmin3AV”)->AsInteger, 假,, (长)DataSet->FieldByName(“IdUnit”)->AsInteger, (长)DataSet->FieldByName(“IdUnitForInstall”)->AsInteger; DataSet->FreeBookmark(DataSet->GetBookmark()); pInfoNode=新的CInfoNode(); pinfoode->m_pInfoModule=pInfoMod; //Platree::TPlaTreeNode*pNodoSeleccionado=pInfoNode; //如果(PNODOSELECIONADO) { //这是一个非常好的例子 //我们的拖拽和拖拽工作需要我们的帮助 //诺多·莫维多和迪斯特诺·特拉斯之家酒店 //el refresco(参数del ReloadTree) //如果(!m_pParentNodesDragDrop) //m_pParentNodesDragDrop=pNodoSeleccionado->Parent; //CInfoNode*pInfoNodoSeleccionado; //PINFONODESELECIONADO=(CInfoNode*)PNODOSELECIONADO->数据; if(pInfoNode->IsModule()) { 长l_IdContainerParent=0; m_ListaModulosDragDrop->AddObject(pInfoMod->m_asDisplayName, (TObject*)pInfoNode); /*TESTHR(ProductsPtr->GetIDContainer(pInfoMod->m_-lIdComputer), pInfoMod->m_pdIDProduct, 宽管柱(pInfoMod->m_asInstance), &l_idcontainer parent)*/ CInfoDragNode*pInfoDragNode=新CInfoDragNode(); pInfoDragNode->m_asInstance=pInfoMod->m_asInstance; pInfoDragNode->m_lIdComputer=pInfoMod->m_lIdComputer; pInfoDragNode->m_lIdContainerParent=/*l_IdContainerParent*/0; pInfoDragNode->m_pdIDProduct=pInfoMod->m_pdIDProduct; m_ListaContenedoresDragDrop->添加( 重新解释铸造(平福德拉格诺德) ); } 其他的 { 巴波特=真; 打破 } } /*删除pInfoNode; 删除pInfoMod*/ 数据集->启用控件(); } 如果(巴波特) { //所有物品的选择都是不可能的 m_ListaModulosDragDrop->Clear(); } } 捕获(常数nm_错误::_com_错误(&e) { PutDebugMessage(COMError2str(e)); m_ListaModulosDragDrop->Clear(); } },c++,dataset,c++builder,C++,Dataset,C++builder" />

GotoBookmark太慢了? 我正在修复一个C++ Builder 5应用程序,我有这个代码: void __fastcall TFPrincipal::DBGModuleStartDrag(TObject *Sender, TDragObject *&DragObject) { m_pParentNodesDragDrop = NULL; DragObject = NULL; bool bAbort = false; m_ListaModulosDragDrop->Clear(); m_ListaContenedoresDragDrop->Clear(); CInfoNode *pInfoNode = NULL; CInfoModule *pInfoMod = NULL ; long l_IdContainerParent = 0; TDataSet * DataSet = NULL; m_pLastDragNode = NULL; m_bLastAccept = false; try { IProductsPtr ProductsPtr = m_pgServerConnection->Create<IProducts>( CLSID_CProducts ); if(DBGModules) { if ( DBGModules->DataSource ) { if ( DBGModules->DataSource->DataSet ) { DataSet = DBGModules->DataSource->DataSet; DataSet->DisableControls(); } else return; } else return; } else return; for (int i = 0; i < DBGModules->SelectedCount; i++) { DataSet->GotoBookmark(DBGModules->SelectedRows[i].c_str()); pInfoMod = new CInfoModule( DataSet->FieldByName("IP")->AsString, (long)DataSet->FieldByName("IdComputer")->AsInteger, (Products)DataSet->FieldByName("IdProduct")->AsInteger, DataSet->FieldByName("Host")->AsString, DataSet->FieldByName("Instance")->AsString, DataSet->FieldByName("Version")->AsString, DataSet->FieldByName("AditionalInfo")->AsString, (Antivirus)DataSet->FieldByName("IdAntivirus")->AsInteger, DataSet->FieldByName("NumNotPadmin3AV")->AsInteger, DataSet->FieldByName("NumPadmin3AV")->AsInteger, false, (long)DataSet->FieldByName("IdUnit")->AsInteger, (long)DataSet->FieldByName("IdUnitForInstall")->AsInteger); DataSet->FreeBookmark(DataSet->GetBookmark()); pInfoNode = new CInfoNode(); pInfoNode->m_pInfoModule = pInfoMod; // Platree::TPlaTreeNode *pNodoSeleccionado = pInfoNode; // if (pNodoSeleccionado) { // guardamos el padre de uno de los nodos seleccionados para // el drag & drop para que usarlo luego para que aparezca desplegada // la rama de origen del nodo movido y la rama de destino tras // el refresco (parametro del ReloadTree) // if ( ! m_pParentNodesDragDrop ) // m_pParentNodesDragDrop = pNodoSeleccionado->Parent; //CInfoNode *pInfoNodoSeleccionado; //pInfoNodoSeleccionado = (CInfoNode *)pNodoSeleccionado->Data; if (pInfoNode->IsModule()) { long l_IdContainerParent = 0; m_ListaModulosDragDrop->AddObject(pInfoMod->m_asDisplayName, (TObject*)pInfoNode); /* TESTHR(ProductsPtr->GetIDContainer(pInfoMod->m_lIdComputer, pInfoMod->m_pdIDProduct, WideString(pInfoMod->m_asInstance), &l_IdContainerParent));*/ CInfoDragNode *pInfoDragNode = new CInfoDragNode(); pInfoDragNode->m_asInstance = pInfoMod->m_asInstance; pInfoDragNode->m_lIdComputer = pInfoMod->m_lIdComputer; pInfoDragNode->m_lIdContainerParent = /*l_IdContainerParent*/0; pInfoDragNode->m_pdIDProduct = pInfoMod->m_pdIDProduct; m_ListaContenedoresDragDrop->Add( reinterpret_cast<void*>(pInfoDragNode) ); } else { bAbort = true; break; } } /* delete pInfoNode; delete pInfoMod;*/ DataSet->EnableControls(); } if (bAbort) { // alguno de los items seleccionados no es un módulo m_ListaModulosDragDrop->Clear(); } } catch (const nm_error::__com_error_ &e ) { PutDebugMessage(COMError2str(e)); m_ListaModulosDragDrop->Clear(); } } void\uu fastcall TFPrincipal::DBGModuleStartDrag(TObject*Sender, TDragObject*&DragObject) { m_pParentNodesDragDrop=NULL; DragObject=NULL; 布尔巴波特=假; m_ListaModulosDragDrop->Clear(); m_listaconenedoresdragdrop->Clear(); CInfoNode*pInfoNode=NULL; CInfoModule*pInfoMod=NULL; 长l_IdContainerParent=0; TDataSet*DataSet=NULL; m_pLastDragNode=NULL; m_bLastAccept=假; 尝试 { IPPRODUCTSPTR ProductsPtr= m_pgServerConnection->Create(CLSID_CProducts); if(DBGModules) { if(DBGModules->DataSource) { if(DBGModules->DataSource->DataSet) { DataSet=DBGModules->DataSource->DataSet; 数据集->禁用控件(); } 否则返回; } 否则返回; } 否则返回; 对于(int i=0;iSelectedCount;i++) { DataSet->GotoBookmark(DBGModules->SelectedRows[i].c_str()); pInfoMod=新的CInfoModule(数据集->字段名称(“IP”)->关联, (长)DataSet->FieldByName(“IdComputer”)->AsInteger, (产品)数据集->字段名称(“IdProduct”)->AsInteger, DataSet->FieldByName(“主机”)->关联, DataSet->FieldByName(“实例”)->关联, DataSet->FieldByName(“版本”)->关联, DataSet->FieldByName(“AditionalInfo”)->AsString, (防病毒)数据集->FieldByName(“IdAntivirus”)->AsInteger, 数据集->字段名称(“NumNotPadmin3AV”)->AsInteger, DataSet->FieldByName(“NumPadmin3AV”)->AsInteger, 假,, (长)DataSet->FieldByName(“IdUnit”)->AsInteger, (长)DataSet->FieldByName(“IdUnitForInstall”)->AsInteger; DataSet->FreeBookmark(DataSet->GetBookmark()); pInfoNode=新的CInfoNode(); pinfoode->m_pInfoModule=pInfoMod; //Platree::TPlaTreeNode*pNodoSeleccionado=pInfoNode; //如果(PNODOSELECIONADO) { //这是一个非常好的例子 //我们的拖拽和拖拽工作需要我们的帮助 //诺多·莫维多和迪斯特诺·特拉斯之家酒店 //el refresco(参数del ReloadTree) //如果(!m_pParentNodesDragDrop) //m_pParentNodesDragDrop=pNodoSeleccionado->Parent; //CInfoNode*pInfoNodoSeleccionado; //PINFONODESELECIONADO=(CInfoNode*)PNODOSELECIONADO->数据; if(pInfoNode->IsModule()) { 长l_IdContainerParent=0; m_ListaModulosDragDrop->AddObject(pInfoMod->m_asDisplayName, (TObject*)pInfoNode); /*TESTHR(ProductsPtr->GetIDContainer(pInfoMod->m_-lIdComputer), pInfoMod->m_pdIDProduct, 宽管柱(pInfoMod->m_asInstance), &l_idcontainer parent)*/ CInfoDragNode*pInfoDragNode=新CInfoDragNode(); pInfoDragNode->m_asInstance=pInfoMod->m_asInstance; pInfoDragNode->m_lIdComputer=pInfoMod->m_lIdComputer; pInfoDragNode->m_lIdContainerParent=/*l_IdContainerParent*/0; pInfoDragNode->m_pdIDProduct=pInfoMod->m_pdIDProduct; m_ListaContenedoresDragDrop->添加( 重新解释铸造(平福德拉格诺德) ); } 其他的 { 巴波特=真; 打破 } } /*删除pInfoNode; 删除pInfoMod*/ 数据集->启用控件(); } 如果(巴波特) { //所有物品的选择都是不可能的 m_ListaModulosDragDrop->Clear(); } } 捕获(常数nm_错误::_com_错误(&e) { PutDebugMessage(COMError2str(e)); m_ListaModulosDragDrop->Clear(); } }

GotoBookmark太慢了? 我正在修复一个C++ Builder 5应用程序,我有这个代码: void __fastcall TFPrincipal::DBGModuleStartDrag(TObject *Sender, TDragObject *&DragObject) { m_pParentNodesDragDrop = NULL; DragObject = NULL; bool bAbort = false; m_ListaModulosDragDrop->Clear(); m_ListaContenedoresDragDrop->Clear(); CInfoNode *pInfoNode = NULL; CInfoModule *pInfoMod = NULL ; long l_IdContainerParent = 0; TDataSet * DataSet = NULL; m_pLastDragNode = NULL; m_bLastAccept = false; try { IProductsPtr ProductsPtr = m_pgServerConnection->Create<IProducts>( CLSID_CProducts ); if(DBGModules) { if ( DBGModules->DataSource ) { if ( DBGModules->DataSource->DataSet ) { DataSet = DBGModules->DataSource->DataSet; DataSet->DisableControls(); } else return; } else return; } else return; for (int i = 0; i < DBGModules->SelectedCount; i++) { DataSet->GotoBookmark(DBGModules->SelectedRows[i].c_str()); pInfoMod = new CInfoModule( DataSet->FieldByName("IP")->AsString, (long)DataSet->FieldByName("IdComputer")->AsInteger, (Products)DataSet->FieldByName("IdProduct")->AsInteger, DataSet->FieldByName("Host")->AsString, DataSet->FieldByName("Instance")->AsString, DataSet->FieldByName("Version")->AsString, DataSet->FieldByName("AditionalInfo")->AsString, (Antivirus)DataSet->FieldByName("IdAntivirus")->AsInteger, DataSet->FieldByName("NumNotPadmin3AV")->AsInteger, DataSet->FieldByName("NumPadmin3AV")->AsInteger, false, (long)DataSet->FieldByName("IdUnit")->AsInteger, (long)DataSet->FieldByName("IdUnitForInstall")->AsInteger); DataSet->FreeBookmark(DataSet->GetBookmark()); pInfoNode = new CInfoNode(); pInfoNode->m_pInfoModule = pInfoMod; // Platree::TPlaTreeNode *pNodoSeleccionado = pInfoNode; // if (pNodoSeleccionado) { // guardamos el padre de uno de los nodos seleccionados para // el drag & drop para que usarlo luego para que aparezca desplegada // la rama de origen del nodo movido y la rama de destino tras // el refresco (parametro del ReloadTree) // if ( ! m_pParentNodesDragDrop ) // m_pParentNodesDragDrop = pNodoSeleccionado->Parent; //CInfoNode *pInfoNodoSeleccionado; //pInfoNodoSeleccionado = (CInfoNode *)pNodoSeleccionado->Data; if (pInfoNode->IsModule()) { long l_IdContainerParent = 0; m_ListaModulosDragDrop->AddObject(pInfoMod->m_asDisplayName, (TObject*)pInfoNode); /* TESTHR(ProductsPtr->GetIDContainer(pInfoMod->m_lIdComputer, pInfoMod->m_pdIDProduct, WideString(pInfoMod->m_asInstance), &l_IdContainerParent));*/ CInfoDragNode *pInfoDragNode = new CInfoDragNode(); pInfoDragNode->m_asInstance = pInfoMod->m_asInstance; pInfoDragNode->m_lIdComputer = pInfoMod->m_lIdComputer; pInfoDragNode->m_lIdContainerParent = /*l_IdContainerParent*/0; pInfoDragNode->m_pdIDProduct = pInfoMod->m_pdIDProduct; m_ListaContenedoresDragDrop->Add( reinterpret_cast<void*>(pInfoDragNode) ); } else { bAbort = true; break; } } /* delete pInfoNode; delete pInfoMod;*/ DataSet->EnableControls(); } if (bAbort) { // alguno de los items seleccionados no es un módulo m_ListaModulosDragDrop->Clear(); } } catch (const nm_error::__com_error_ &e ) { PutDebugMessage(COMError2str(e)); m_ListaModulosDragDrop->Clear(); } } void\uu fastcall TFPrincipal::DBGModuleStartDrag(TObject*Sender, TDragObject*&DragObject) { m_pParentNodesDragDrop=NULL; DragObject=NULL; 布尔巴波特=假; m_ListaModulosDragDrop->Clear(); m_listaconenedoresdragdrop->Clear(); CInfoNode*pInfoNode=NULL; CInfoModule*pInfoMod=NULL; 长l_IdContainerParent=0; TDataSet*DataSet=NULL; m_pLastDragNode=NULL; m_bLastAccept=假; 尝试 { IPPRODUCTSPTR ProductsPtr= m_pgServerConnection->Create(CLSID_CProducts); if(DBGModules) { if(DBGModules->DataSource) { if(DBGModules->DataSource->DataSet) { DataSet=DBGModules->DataSource->DataSet; 数据集->禁用控件(); } 否则返回; } 否则返回; } 否则返回; 对于(int i=0;iSelectedCount;i++) { DataSet->GotoBookmark(DBGModules->SelectedRows[i].c_str()); pInfoMod=新的CInfoModule(数据集->字段名称(“IP”)->关联, (长)DataSet->FieldByName(“IdComputer”)->AsInteger, (产品)数据集->字段名称(“IdProduct”)->AsInteger, DataSet->FieldByName(“主机”)->关联, DataSet->FieldByName(“实例”)->关联, DataSet->FieldByName(“版本”)->关联, DataSet->FieldByName(“AditionalInfo”)->AsString, (防病毒)数据集->FieldByName(“IdAntivirus”)->AsInteger, 数据集->字段名称(“NumNotPadmin3AV”)->AsInteger, DataSet->FieldByName(“NumPadmin3AV”)->AsInteger, 假,, (长)DataSet->FieldByName(“IdUnit”)->AsInteger, (长)DataSet->FieldByName(“IdUnitForInstall”)->AsInteger; DataSet->FreeBookmark(DataSet->GetBookmark()); pInfoNode=新的CInfoNode(); pinfoode->m_pInfoModule=pInfoMod; //Platree::TPlaTreeNode*pNodoSeleccionado=pInfoNode; //如果(PNODOSELECIONADO) { //这是一个非常好的例子 //我们的拖拽和拖拽工作需要我们的帮助 //诺多·莫维多和迪斯特诺·特拉斯之家酒店 //el refresco(参数del ReloadTree) //如果(!m_pParentNodesDragDrop) //m_pParentNodesDragDrop=pNodoSeleccionado->Parent; //CInfoNode*pInfoNodoSeleccionado; //PINFONODESELECIONADO=(CInfoNode*)PNODOSELECIONADO->数据; if(pInfoNode->IsModule()) { 长l_IdContainerParent=0; m_ListaModulosDragDrop->AddObject(pInfoMod->m_asDisplayName, (TObject*)pInfoNode); /*TESTHR(ProductsPtr->GetIDContainer(pInfoMod->m_-lIdComputer), pInfoMod->m_pdIDProduct, 宽管柱(pInfoMod->m_asInstance), &l_idcontainer parent)*/ CInfoDragNode*pInfoDragNode=新CInfoDragNode(); pInfoDragNode->m_asInstance=pInfoMod->m_asInstance; pInfoDragNode->m_lIdComputer=pInfoMod->m_lIdComputer; pInfoDragNode->m_lIdContainerParent=/*l_IdContainerParent*/0; pInfoDragNode->m_pdIDProduct=pInfoMod->m_pdIDProduct; m_ListaContenedoresDragDrop->添加( 重新解释铸造(平福德拉格诺德) ); } 其他的 { 巴波特=真; 打破 } } /*删除pInfoNode; 删除pInfoMod*/ 数据集->启用控件(); } 如果(巴波特) { //所有物品的选择都是不可能的 m_ListaModulosDragDrop->Clear(); } } 捕获(常数nm_错误::_com_错误(&e) { PutDebugMessage(COMError2str(e)); m_ListaModulosDragDrop->Clear(); } },c++,dataset,c++builder,C++,Dataset,C++builder,我注意到行DataSet->GotoBookmark(DBGModules->SelectedRows[I].c_str());执行速度很慢。为什么会这样?所使用的网格来自DevExpress,很可能是GotoBookmark导致数据集后面的查询一次又一次地运行。根据所选行执行更具体的查询可能比在更一般的查询结果中转到书签更好。很可能是GotoBookmark导致数据集后面的查询被反复运行。最好是根据所选行执行一个更具体的查询,而不是在一个更通用查询的结果中去书签。 < P> GooDooBoo

我注意到行DataSet->GotoBookmark(DBGModules->SelectedRows[I].c_str());执行速度很慢。为什么会这样?所使用的网格来自DevExpress

,很可能是GotoBookmark导致数据集后面的查询一次又一次地运行。根据所选行执行更具体的查询可能比在更一般的查询结果中转到书签更好。

很可能是GotoBookmark导致数据集后面的查询被反复运行。最好是根据所选行执行一个更具体的查询,而不是在一个更通用查询的结果中去书签。

< P> GooDooBook功能和Delphi和C++ Builder中的数据集中使用过滤器是一个非常严重的性能瓶颈。p>
我的建议是使用不同的机制跳转到所需的记录。也许只使用查询和ID。如果不可能的话,确保你有索引作为字段的书签键。

< P> GooDooBook功能和Delphi和C++ Builder中的数据集中使用过滤器是一个非常严重的性能瓶颈。p>
我的建议是使用不同的机制跳转到所需的记录。可能只是使用查询和ID。如果不可能,请确保在用作书签键的字段上有索引。

您使用的是哪个数据库?您使用的是哪个数据库?