我是C ++的新手,并且用于GUI wxWidget。我的问题是wxListCtrl的代码如何更改为虚拟ListCtrl的工作代码...
现在我的代码在下面并且可以工作,但是我必须尝试使用虚拟样式
wxString SQL = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '" + table + "'";
int gstate = mysql_query(conn,SQL);
if(!gstate){
res = mysql_store_result(conn);
int num = 0;
lcData->SetColumnWidth(0,wxLIST_AUTOSIZE_USEHEADER);
lcData->InsertColumn(0,"rb.");
while(row = mysql_fetch_row(res)){
lcData->SetColumnWidth(num+1, wxLIST_AUTOSIZE_USEHEADER);
lcData->InsertColumn(num+1,row[0]);
num++;
}
if(res != NULL)
mysql_free_result(res);
}
SQL = tcSQL->GetValue();
tcLog->AppendText(SQL+"\n");
gstate = mysql_query(conn,SQL);
if(!gstate){
res = mysql_store_result(conn);
long num_field = mysql_num_fields(res);
long num = 0;
lcData->SetColumnWidth(0,40);
while(row = mysql_fetch_row(res)){
lcData->InsertItem(num, wxString::Format(_T("%4d"),num+1));
for(long i = 0; i < num_field; i++){
lcData->SetItem(num,i+1,row[i] );
}
num++;
}
if(res != NULL)
mysql_free_result(res);
在我编译程序并运行的地方出现此错误: SharedScreens
Thx。 YuMERA
答案 0 :(得分:0)
虚拟wxListCtrl
的想法是,您无需将数据放入其中,而是在控件需要时按需提供数据。因此,要使用虚拟控件,您需要更改代码的结构,并首先避免从数据库中获取所有项目,而是根据需要从覆盖的OnGetItemText()
方法中检索它们。当然,为了能够覆盖它,您必须首先从wxListCtrl
派生自己的类,并且还需要告诉控件它将拥有多少项(您将从{{1 }}进行查询)。