0

現在、4 つのアイテムを含むリストビューがあります。リストビュー アイテムの 1 つに、別のリストビューを実装したいのですが、別のフォーム マネージャーを実行する必要がありますか? または、どうすればそれを行うことができますか?また、あるクラスの関数を別のクラスで呼び出すにはどうすればよいですか? または、あるクラスから別のクラスに情報を渡すために参照 (ポインター) を行いますか?

4

1 に答える 1

0

質問を 100% 理解しているかどうかわかりません。

つまり、あるリスト ビューから別のリスト ビューへのポインタが必要になります。フォームを使用している場合は、リスト ビューへのローカル ポインターで十分です。

同じことがクラス インスタンスの参照にも当てはまります。

class Apple() {
  private Basket* basket;
  public Apple() { 
    basket = null;
  }
  public void setBasket(Basket* basket) {
    this->basket = basket;
  }
  public Basket* getBasket() {
    return this->basket;
  }
}

class Basket() {
  private Apple* apple;
  public Basket() {
    apple = null;
  }
  public setApple(Apple* apple) {
    this->apple = apple;
    this->apple->setBasket(this);
  }
}

...
Apple* apple = new Apple();
Basket* basket = new Basket()
basket->setApple(apple);

それが少し役立つことを願っています。

さて、それが役立つかどうかを確認するために、ここにさらにコードを追加しています。

FormA.h

class FormA : 
    public Osp::Ui::Controls::Form, 
    public Osp::Ui::IItemEventListener 
{

    // Other stuff including list
protected:
  void  OnItemStateChanged (const Osp::Ui::Control &source, int index, int itemId, Osp::Ui::ItemStatus status);   
}

FormA.cpp

    // Other stuff including constructor and list control creation/population

void FormA::OnItemStateChanged (const Osp::Ui::Control &source, int index, int itemId, Osp::Ui::ItemStatus status) {

  // Construct and show other form
  FormB* b = new FormB(itemId);
  // Add to frame and set formb as current

}

FormB.h

class FormA : 
    public Osp::Ui::Controls::Form, 
    public Osp::Ui::IItemEventListener 
{
private int itemId;
public:
  FormA(int itemId);  
}

FormB.cpp

FormA::FormA(int itemId) {
 this->itemId = itemId;
}

// Now somewhere in your form initialization read the itemId
// value (this->itemId) and decide what you want to show in the form's list view
于 2011-12-07T13:51:19.957 に答える