LISTVIEW的刷新问题(急用,在线等)(50分)

  • 主题发起人 主题发起人 oldwolf201
  • 开始时间 开始时间
O

oldwolf201

Unregistered / Unconfirmed
GUEST, unregistred user!
我用C++BUILDER写的一个用户注册界面。其中用LISTVIEW来显示当前数据库中所有的用户。当添加或删除用户以后LISTVIEW应该得到相应的刷新。但我的程序无法实现刷新,请指点。程序如下:
void __fastcall TForm1::ListAcctTabSheetShow(TObject *Sender)
{
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select * from USER_INFO");
ADOQuery1->Open();
StatusBar1->Panels->Items[2]->Text = IntToStr(ADOQuery1->RecordCount);
ListView1->Items->Clear();
TListItem *pItem;
ADOTable1->Open();
ADOTable1->First();
do
{
pItem = ListView1->Items->Add();
pItem->Caption = ADOTable1->FieldByName("USERCODE")->AsString;
pItem->SubItems->Add(ADOTable1->FieldByName("USERNAME")->AsString);
pItem->SubItems->Add("");
pItem->ImageIndex = 0;
ADOTable1->Next();
}
while(!(ADOTable1->Eof));
}
请问错在那里,在线等,急用。
 
ADOTable1->Open();
ADOTable1->First();
-------------------------------
------------ 用 DELPHI 习惯了 --------------
if ADOTable1.Active then
ADOTable1.Acitve := False;
ADOTable1->Open();
ADOTable1->First();
if ADOTable1.IsEmpty then
exit;
..
..
..
 
你这个函数写的有问题!
ADOTable1->First();
do
{
pItem = ListView1->Items->Add();
pItem->Caption = ADOTable1->FieldByName("USERCODE")->AsString;
pItem->SubItems->Add(ADOTable1->FieldByName("USERNAME")->AsString);
pItem->SubItems->Add("");
pItem->ImageIndex = 0;
ADOTable1->Next();
}
while(!(ADOTable1->Eof));
如果没有数据就会报错!!!
应该用while(){...}
 
既然已经用adoquery查询到了所有用户,为什么还要用adotable呢?
我想这里的问题可能就是adotable没被刷新,应该先table.close,再table.open。
另外:楼上说的是会有错误,但不应该导致不能刷新。
 
我改成:
ListView1->Items->Clear();
TListItem *pItem;
ADOTable1->Close();
ADOTable1->Open();
ADOTable1->First();
while(!(ADOTable1->Eof));
{ pItem = ListView1->Items->Add();
pItem->Caption = ADOTable1->FieldByName("USERCODE")->AsString;
pItem->SubItems->Add(ADOTable1->FieldByName("USERNAME")->AsString);
pItem->SubItems->Add("");
pItem->ImageIndex = 0;
ADOTable1->Next();
}
这次问题更大,运行后想弹出这个窗口就没响应!
错在那里啊?
 
初步看好像没有问题
可能是TListView控件刷新的问题,你可以先用LISTBOX试试看能不能刷新。
 
不会吧
TLISTVIEW控件不可能不能更新的啊
 
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("select * from USER_INFO");
ADOQuery1->Open();
StatusBar1->Panels->Items[2]->Text = IntToStr(ADOQuery1->RecordCount);
ListView1->Items->Clear();
TListItem *pItem;
ADOQuery1->Close();
ADOQuery1->Open();
ADOQuery1->First();

do
{ pItem = ListView1->Items->Add();
pItem->Caption = ADOQuery1->FieldByName("USERCODE")->AsString;
pItem->SubItems->Add(ADOQuery1->FieldByName("USERNAME")->AsString);
//pItem->SubItems->Add("");
pItem->ImageIndex = 0;
ADOQuery1->Next();
}
while(!(ADOQuery1->Eof));
这样就可以了
确实是adotable没被刷新
 
后退
顶部