Markierte ListBox-Einträge 2er ListBoxen sollen Synchron bleiben...



  • @Eßer: Ich soll ein neues Event einführen, wie stellst du dir das vor? Wie soll ich das bitte machen?
    bzw. Wann soll denn das Event ausgelöst werden? Krieg ich ne Message, wenn der aktive Eintrag geändert wird der was?

    @derAltenburger: Weiß nich, muss ich mal gucken...

    [ Dieser Beitrag wurde am 17.05.2003 um 13:14 Uhr von aaaabyx editiert. ]



  • Original erstellt von Eßer:
    Das Event würd ich dann in der Methode SetItemIndex(), die du dann natürlich neu schreiben musst, auslösen.



  • Was ich brauche ist ein Ereignis, das AUTOMATISCH auslöst, wenn ein anderer Eintrag selektiert wird, ne Methode wie SetItemIndex brauche ich nicht...



  • Hat niemand ne Ahnung? 😕 😕 😕



  • Probier mal:

    void __fastcall TForm1::ListBox1Click(TObject *Sender)
    {
      for (int i=0;i<ListBox1->Items->Count;i++)
      {
        ListBox2->Selected[i]=ListBox1->Selected[i];
      }
    }
    

    Beide ListBox->MultiSelect=true!!!
    Anzahl der Eintraege muss stimmen.

    PS: Nimm besser 1x ListView!!!



  • @aaaabyx: Das Ereignis wird automatisch ausgelöst! Du musst ihm das nur sagen! Und das machst du in SetItemIndex!



  • @Eßer:
    OK aber wie denn???



    • Neue Kompo von TListBox ableiten
    • unter private: TNotifyEvent FOnChange;
    • unter protected: virtual void __fastcall SetItemIndex(const int value);
    • unter __published: TNotifyEvent OnChange = {read = FOnChange; write = FOnChange};
    • Im Konstruktor: OnChange = NULL;
    • In der SetItemIndex:
    virtual void __fastcall TMyListBox::SetItemIndex(const int value)
    {
        inherited::SetItemIndex(value);
        if(OnChange)
            OnChange(this);
    }
    

    [ Dieser Beitrag wurde am 18.05.2003 um 21:19 Uhr von Eßer editiert. ]



  • warum nicht im OnClick die indizes gleich setzen?



  • Original erstellt von Sunday:
    warum nicht im OnClick die indizes gleich setzen?

    Weil man die Auswahl auch per Tastatur oder per Code ändern kann? 😉



  • @Eßer: Danke, aber ich bekomme da genze 5 Compilerfehler...
    Und ich weiß nicht genau, wie du dir das gedacht hast, könntest du bitte mal kurz schildern, was genau da dann ablaufen soll?
    Danke...



  • bei mir wird OnClick sowohl für maus als auch tastatur ausgelöst. nur net für explizites setzen im code, aber da hilft folgendes. ist doch viel einfacher, als ne extra-komponente zu erstellen...

    //---------------------------------------------------------------------------
    // wird beim klicken mit der maus in der listbox auf ein item ausgelöst
    // und beim ändern des indizes über die tastatur
    //---------------------------------------------------------------------------
    void __fastcall TForm1::ListBox1Click(TObject *Sender)
    {
      ListBox2->ItemIndex = ListBox1->ItemIndex;
    }
    
    //---------------------------------------------------------------------------
    // beim klick auf nen button soll der index geändert werden
    // änderung erzwingen
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      ListBox1->ItemIndex = 2;
      ListBox1Click(Sender);
    }
    //---------------------------------------------------------------------------
    


  • Danke SUnday, das funzt prima!


Anmelden zum Antworten