需要将 wxListCtrl 的代码更改为虚拟样式 wxListCtrl 的工作代码
Need code for wxListCtrl change to working code for virtual style wxListCtrl
我是 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
谢谢。
YuMERA
虚拟 wxListCtrl
的想法是您不将数据放入其中,而是在控件需要时根据请求提供数据。因此,要使用虚拟控件,您需要更改代码结构并避免首先从数据库中获取所有项目,而是根据需要从覆盖的 OnGetItemText()
方法中检索它们。当然,为了能够覆盖它,您必须先从 wxListCtrl
派生出您自己的 class 并且您还需要告诉控件它将有多少项(您将获得来自 select count(*) ...
您的查询)。
我是 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
谢谢。 YuMERA
虚拟 wxListCtrl
的想法是您不将数据放入其中,而是在控件需要时根据请求提供数据。因此,要使用虚拟控件,您需要更改代码结构并避免首先从数据库中获取所有项目,而是根据需要从覆盖的 OnGetItemText()
方法中检索它们。当然,为了能够覆盖它,您必须先从 wxListCtrl
派生出您自己的 class 并且您还需要告诉控件它将有多少项(您将获得来自 select count(*) ...
您的查询)。