Label in einer Unit



  • Wäre es nicht einfacher, irgendwo ein unsichtbares Label hinzupacken, dort den Text reinlegen und dann den Wert abzufragen?



  • Ich sehe hier immer noch keine Grund für diese API-Funktion.
    Dort mußt du eine Handle deines Fensters und noch diverse andere Sachen übergeben, hier nur einen Pointer auf das Canvas und den String.



  • Es war ja nur als Alternative zu VCL gedacht, da es ja (ihm) offenbar mit dem Label ärger macht.

    Es gibt ja auch noch GetTextExtentPoint32.

    Ein HDC braucht ma immer-> hier in der VCL der Canvas-> auf irgendwas muss sich ja die Berechnung stützen.

    Vielleicht doch das unsichtbare Label..



  • was ich nicht verstehe, warum man ein unsichtbares Label nehmen muss, nur um den Canvas zu brauchen.
    die Statusbar liefert doch ein Canvas schon mit TStatusBar::Canvas



  • Er braucht doch gar kein Label. Das Canvas des Objektes in das er schreiben will reicht völlig. Auch sein StatusBar hat ein Canvas.
    Die Funktion, die ich oben hingeschrieben habe läßt sich doch einfach so aufrufen

    int width = getTextLength(StatusBar1->Canvas);
    

    Wo braucht man hier ein unsichtbares Label?

    @BigNeal
    Sag ich ja die ganze Zeit 😃
    [edit]Hab deinen Post erst nach dem Abschicken gesehen[edi]



  • hallo,

    mit dem "unsichbarem Label" wollte ich nur die "grafische " Länge nutzen. Ein Label auf eine andere Form möchte ich nicht setzen, da die Routiene mit dem unsichbarem Label auch in anderen Projekte eingesetzt werden. Daher ist die Routine nur in einer Unit ohne Form geschrieben. Möchte dies später in einer Komponente verpacken, da von hier es einfacher zu verwalten ist.
    schade, das ich nicht zum Ziel gekommen bin. Trotzdem an alle vielen Dank. Muß dies dann anderst lösen.
    Gruß Siegfried 👍 👍 👍



  • Was gefällt die an der Variante mit dem Canvas nicht?



  • Hallo,
    ich verfolge alle Informationen sehr sorgfältig. Auch die Variante Canvas ist großartig. Leiter habe ich bei der Zeile

    int iWidth = canv->TextWidth(asDateTime);
    

    immer noch Fehlermeldung "hat kein übergeordnetes Fenster".
    schade.
    Gruß Siegfried 😞



  • Wo hast du das Canvas in canv denn her? Hoffentlich nicht von deinem unsichtbaren Label. Das muß schon das Canvas eines existierenden und sichtbaren Objektes sein. z.Bsp. der Statusbar deiner Form.



  • Hallo,
    du hast mich erwischt. habe dies vom unsichtbarem Label genommen. Sollte eine Pause machen.
    Gruß Siegfried


Anmelden zum Antworten