Announcement

Collapse
No announcement yet.

Zugriff auf "KeyDown" nicht möglich

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zugriff auf "KeyDown" nicht möglich

    Hallo

    hab ein Programm das mir nur das Formular zu verfügung stellt.
    Buttons und Listboxen will ich zur Laufzeit erzeugen, und zwar in einer extra Unit.
    Geht auch soweit nur auf die Ereignisse
    der Kompnenten hab ich keinen Zugriff.
    Kann mir jemand helfen

    Beispiel

    CppFile

    void Start(TObject *Sender,int x,int y)

    TForm *HForm=dynamic_cast<TForm*> (Sender);
    DateiListe= new TListBox(HForm);
    DateiListe->MultiSelect=false;
    DateiListe->Width=145;
    DateiListe->Height=105;
    DateiListe->Left=x;
    DateiListe->Top=y;
    DateiListe->Color=clWindow;
    DateiListe->Parent = HForm;
    DateiListe->Visible=true;

    ! LADE TEXTE IN DIE LISTBOX !

    DateiListe->SetFocus();
    DateiListe->KeyDown = Keypressed;

    void Keypressed(TObject *Sender, WORD &Key,TShiftState Shift)

    HeaderFile:

    void Keypressed(TObject *Sender, WORD &Key,TShiftState Shift);

  • #2
    Das Ereignis heisst OnKeyDown.

    DateiListe->OnKeyDown=....

    http://home.snafu.de/christian.marquardt/quickies.1/1_index.html#laufzei
    Christian

    Comment


    • #3
      Achso ja

      aber wie muss ich dann die Ereignisrountine
      in meiner Header deklarieren.

      __published ist ja nur in der "main header"

      Gru&#223

      Comment


      • #4
        Schau doch beim Link nac
        Christian

        Comment


        • #5
          Habs genauso deklariert
          mit einem unterschied ich hab keine Klasse sonder nur eine normale Unit, und da geht das mit __published nicht.

          DateiListe->OnKeyDown = Keypressed;

          Fehlermeldung :
          Konvertierung von 'typ1' nach 'typ2' nicht möglich

          H&#228

          Comment


          • #6
            Ach jetzt verstehe ich.

            Das hat aber nix mit published zu tun. Das sind Schlüsselwörter um die Sichtbarkeit der Methoden gegenüber anderen Klassen und nach außen zu regeln.

            M.E. hängt das Problem daran, das du zwar ein Fenster (TForm) erzeugst, dieses aber nicht bei Windows angemeldet ist und somit keine Nachrichtenverarbeitung für das Fenster stattfindet. Das passiert eigentlich mit

            Application->CreateForm(__classid(TMain),&Main);

            Denke du sollstet in dieser Richtung mal ermitteln
            Christian

            Comment

            Working...
            X