WxWidgets/wxListCtrl

出典: YKAwiki

目次

概要

ExcelやJTableみたいな表を作れるコントロールです。

生成・配置

次のインクルードが必要です

#include <wx/listctrl.h>

ぶっちゃけて言うと一個一個手で配置するのは超面倒なので、 wxGladeを使って配置・生成しましょう。 以下生成されたコントロールオブジェクトのインスタンス

wxListCtrl* samplectrl

とします。

初期化・全削除

カラムも全て削除したい場合

samplectrl->ClearAll();

カラムは残して要素だけ削除したい場合

samplectrl->DeleteAllItems();

カラム追加

例としてCOLUMN_NUM=3個のカラムを追加します。

char names[][100] = { "ID", "Name", "NickName"};
for(int index = 0; index < COLUMN_NUM; index ++){
 samplectrl->InsertColumn(index, wxConvertMB2WX(names[index]));
}

ロウ追加

例としてROW_NUM=10個の行を追加します。

const int BUF_MAX = 100;
for(int i = 0; i < ROW_NUM; i ++){
 wxListItem item;
 
 //行番号
 item.SetId(i);
 //列番号
 item.SetColumn(0);
 
 char buf[BUF_MAX];
 sprintf(buf, "%d", i);
 item.SetText(wxConvertMB2WX(buf));
 samplectrl->InsertItem(item);
 
 for(int column = 1; column < COLUMN_NUM; columnt ++){
  item = wxListItem();
  item.SetId(i);
  item.SetId(column);
  item.SetText(wxConvertMB2WX(buf));
  samplectrl->SetItem(item);
 }
}

コツは、最初だけ挿入を行い、それ以降はSetItem()を使う点です。 そうしないと問題が生じます。