Control unter Mauszeiger identifizieren (war: Warum klappt das nicht)



  • void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    TControl* Klasse;
    ShortString Klassit;
    Label1->Caption="HWND";
    Mouse->CursorPos;
    Klasse=ControlAtPos(Mouse->CursorPos, true, true);
    Klassit=Klasse->ClassName(ClassType());
    Label2->Caption="Klasse "+Klassit;
    }
    

    Ich möchte das die Name der Klasse beim Mauszeiger ausgegeben wird, doch ich bekomme immer nur TForm. Wieso?

    Edit:
    Bitte aussagekräftige Überschriften wählen. Danke!
    -Jansen



  • Starker Titel. So aussagekräftig...



  • a) Lies nochmal nach, welche Koordinaten TMouse::CursorPos genau liefert. Tip: ClientToScreen/ScreenToClient

    b) Methoden-Aufrufe ohne expliziten Zusatz beziehen sich immer auf die Klasse, in deren Methode du dich gerade befindest. Dein ClassType kann also nur Information über die Form liefern.

    c) Du solltest prüfen, ob ControlAtPos überhaupt ein gültiges Ergebnis zurückgibt, sonst fliegt dir die ClassName-Abfrage ruckzuck um die Ohren.


Anmelden zum Antworten