■スレッドリストへ戻る■ 全部 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);
  }
 }

316KB
新着レスの表示

スレッドリストへ戻る 全部 前100 次100 最新50

0ch BBS 2004-10-30