Ereignisse per Button oder Aufruf auslösen



  • Hallo,

    ich brauche dringend Hilfe:
    Ich möchte bestimmte Ereignisse anders als vorgesehen aufrufen.
    Beispiel: Ich habe eine ListViev im Stil vsReport, 3 Spalten.
    Nach der 3. Spalte soll sortiert werden. Ich bin auch soweit, dass das Ganze mit Klick auf die Spaltenüberschrift richtig sortiert wird.
    Da das aber IMMER und NUR nach der 3. Spalte sortiert wird, wäre es mir ganz recht, wenn ich dieses Ereignis, das beim Klick auf die 3. Spalte ausgelöst wird, dadurch auslösen kann, indem ich einen Aufruf ans Ende der Funktion setze, die das ListView füllt. Sprich: "Wenn der letzte Eintrag drin ist, sortiere nach Spalte 3".

    Auch möchte ich verschiedene Einträge selektieren. Dafür habe ich Checkboxes = true gesetzt, diese sind in Spalte 1.
    Wenn alles erforderliche ausgewählt ist, soll ein Button gedrückt werden und die ausgählten Einträge dann in ein neues ListView geschrieben werden (wo sie dann später noch bestätigt und anschliessend (es handelt sich um Dateien und Pfadangaben) gelöscht werden sollen).

    Da meine Programmierkenntnisse in Sachen C++ (vorsichtig gesagt) ziemlich am Anfang sind, bin ich im Moment relativ aufgeschmissen.

    Wer kann mir da bitte ein bisschen unter die Arme greifen ?

    Danke schon mal im Voraus.

    Gruß Markus



  • Alle Ereignisse sind Methoden der TForm-Klasse. Du kannst sie wie normale Methoden aufrufen, also z.B.:

    OnListView1HeaderClick(<paramerter> );
    


  • Hallo, danke erst mal.
    Ich weiss, das klingt jetzt fürchterlich blöd und ich bitte untertänigst um Verzeihung 🙂
    Aber ich hab 2 Probleme:
    1. Wie komme ich an die erforderlichen Parameter ran ?
    2. Sobald ich Deinen Code einfach rauskopier und einfüge, also so:

    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    OnListView1HeaderClick();
    }
    //-------------
    

    Sagt er mir sofort: [C++ Fehler] Unit1.cpp(73): E2268 Aufruf der undefinierten Funktion 'OnListView1HeaderClick'.
    Ich nehme mal an, es fehlt die Funktionsdefinition im Header. Aber wie mach ich das samt Parameter ?
    Ich hab schon die halbe Hilfe durch, aber ich find da leider kein einziges Beispiel.

    [ Dieser Beitrag wurde am 21.06.2003 um 19:35 Uhr von Markus Pelloth editiert. ]



  • Vielleicht kannst du's anders probieren:

    Im Objektinspektor, Kartei "Ereignisse", kannst du Ereignisse von anderen Kompos (hier ListView1) mit dem TButton auslösen. Dazu klickst du zweimal darauf (Vorsicht! Kein Doppelklick!), dann erscheint eine Liste unterm Feld. Bei mehreren Komponentenereignisse wählst du das gewünschte Ereignis aus.

    Hinweis: Es kann vorkommen, dass die Ereignisse auswählbar sind, jedoch nicht miteinander kompatibel sind (Es erscheint dann eine Fehlermeldung). Wenn es ganz andere Ereignisse (OnMouse, OnKey,...) sind, ist keine Eintragung vorhanden.

    Hope it helps.



  • Also, das mit den Aufrufen über den Objektinspektor lässt er nicht zu. (Fehlermeldung: Ist nicht kompatibel)

    Ich habe jetzt mal folgenden Code eingegeben, da meckert er nicht, aber er macht auch nix.

    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
            ListView1ColumnClick(ListView1, ListView1->Column[2]);
    
            ColumnToSort = 2;
            ListView1->AlphaSort();
    
    }
    

    Irgendwas ist da wahrscheinlich falsch. Aber ich krieg nicht raus, was.

    -----------------
    Jetzt funzt es. Ich hab nochmal den Button2 per Doppelklick dran erinnert, dass er nach den draufklicken auch was tun muss.

    [ Dieser Beitrag wurde am 22.06.2003 um 00:28 Uhr von Markus Pelloth editiert. ]


Anmelden zum Antworten