■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50
monazilla
- 114 :98 :2001/02/14(水) 18:08
- かなり戻るけど、>>93のTBoardCategoryは必要ないと思う。
というのは、いずれ、貼りつけられたスレへのリンクからTBoardItemを
検索したくなるだろうから。
鯖移転にも対応するために、板名で検索できること
(さらに、mac板やbike板に対応すること)を考えると、
TBoardItemはどっかでまとめて持ち、
TreeNode->Dataに細工するのがいいと思う。
もしかしたら参考になるかもしれないので、
俺の使っている部分をそのまま載せます。
VCLも知らないので、批判もよろしく。
Board型はstaticメンバーで全体を保持。
Board::BoardCount()で全板数、
Board::At()で順アクセス、Board::Find()で検索、etc
Boardのインスタンスは、Name()がnilならカテゴリ名、
Name()の中身があればそれぞれの板。
stringとSTLを使っているのは、それらの勉強も目的だから。
TTreeNodes *tree = BoardTree->Items;
tree->Clear();
#if 0
TTreeNode *root = tree->Add(NULL, "2ちゃんねる");
//root->Data = NULL;
#else
TTreeNode *root = NULL;
#endif
int n = Board::BoardCount();
string catename;
vector<Board *> boards;
for (int i = 0; i < n; ++i) {
Board *bd = Board::At(i);
if (bd->Name().empty()) {
if (!boards.empty()) { //カテゴリ名の連続に対処するため
TTreeNode *cate = tree->AddChild(root, catename.c_str());
cate->Data = NULL;
vector<Board *>::iterator it;
for (it = boards.begin(); it != boards.end(); ++it) {
TTreeNode *tmp = tree->AddChild(cate, (*it)->Title().c_str());
tmp->Data = *it;
}
}
boards.clear();
catename = bd->Title();
} else {
boards.push_back(bd);
}
}
317KB
新着レスの表示
スレッドリストへ戻る 全部 前100 次100 最新50
0ch BBS 2004-10-30