2011-12-07 13 views
0

私は現在、リストビュー項目の1つに4つの項目を含むリストビューを持っています。別のリストビューを実装したいのですが、別のフォームマネージャを実行する必要がありますか?それとも、どうやってやるの?また、別のクラスでクラスの関数をどのように呼び出すのですか?あるクラスから別のクラスへ情報を渡すための参照(ポインタ)を行うか?badaプログラミング - リストビュー内のコールリストビュー

答えて

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 
+0

こんにちは、応答に感謝します!私はあなたが私を理解していると思う。私は現在リストビューを持っています。ユーザーがアイテムの1つをクリックすると、elementIDが取得され、2番目のフォームに表示される内容が分かるように2番目のフォームにelementIDが渡されます。私は実際にこれをどうやって行うのか分かりません。 .hと.cppファイルに何が含まれる必要があるのか​​分かりません。手伝って頂けますか?ありがとう! – Winona

+0

こんにちは、私は質問を理解してうれしい。答えは、最初のもので何かが選択されたときに2番目のリストビューに値を設定する関数を作成することです。この関数が同じフォーム上にある場合、両方のビューが存在すると、両方のリストビューがプライベートセクションのどこかにポインタを持つ必要があるため、スコープの問題は発生しません。ビューが別のフォームにまとめられている場合は、選択された要素のIDをレコードを取得するために2番目のビューに渡す必要があると思います...残念ながら、行のスペースを持たずにここで説明するのは簡単な答えではありませんコード行: – George

+0

のように、1番目のフォームに2番目のフォームを作成する関数を作成しますか?ああ、私はこれで失われています:( – Winona