Guten Abend,
ich benötige von einem Textfeld mit Zeilenumbruch in einem Formular die Anzahl der vorhanden Zeilen des Textes. Leider bekomme ich das nicht hin. Hier mein Versuch (aus dem I-Net / http://www.shadoware.de/vb/linecount.html):
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
Const EM_GETLINECOUNT = &HBA
Const EM_LINELENGTH = &HC1
Const EM_LINEINDEX = &HBB
Const EM_LINEFROMCHAR = &HC9
Const EM_GETLINE = &HC4
Const EM_GETFIRSTVISIBLELINE = &HCE
Function LineCount(Ctrl As Control) As Long
LineCount = SendMessage(Ctrl.hWnd, EM_GETLINECOUNT, 0, 0)
End Function
Das versuche ich wie folgt aufzurufen:
MsgBox LineCount(textfeld.value)
Bekomme dann einen Fehler bei Zeile: LineCount = SendMessage(Ctrl.hWnd, EM_GETLINECOUNT, 0, 0)
Laufzeitfehler 438
Objekt unsterstützt diese Eigenschaft oder Methode nicht.
Oder gibt es vielleicht eine andere Lösung?
Vielen Dank
gruß Christoph
Hallo
mit diesem Code kommst du nicht weiter da die Accesscontrols kein Handle liefern welches du dann in der SendMessagefunktion verwenden kanst.
probiers mal so ( ungetestet ):
Function LineCount() As Long
dim s as string
dim sf() as string
s = me.DeineTextbox
sf() = split(s, vbcrlf)
LineCount= ubound(sf()) + 1
End Function
Hallo,
(noch 'ne) andere Lösung:
Public Function fctRowCount ( strString as String) as Long
fctRowCount = Len(strString) - Len(Replace(strString, vbCrLf, " "))
End Function
Evtl. noch 1 addieren, wenn nicht auch die letzte Zeile mit einem Zeilenumbruch abgeschlossen wird..
Hi,
danke für dein Hinweis und das Beispiel.
Habs ausprobiert. Geht - bedingt.
Ich bekomme nur die Zeilen raus, die im Text schon als Umruch sind. Jedoch nicht, wenn z.b. ein längerer Text von der Textbox umgebrochen werden, da das feld nicht so breit ist.
Gruß Christoph
PS: Antwort betrifft den Eintrag von daolix. Die andere Variante teste ich auch gleich mal.
Hallol,
virtuelle Zeilenumbrüche festzustellen, dürfte schwierig werden. Da reden der benutzte Font und die Windows-Einstellungen bzgl. Auflösung und Zoomfaktor ein Wörtchen mit....
Was ist der Sinn, der dahinter steckt?
Da die Datenbank nicht mehr als Vollbild läuft, sondern nur auf einer Hälfte des Bildschirms (27" Monitor) habe ich Probleme mit den MsgBoxen. Diese werden weiterhin Mittig auf dem Bildschirm angezeigt. Komme dann mit anderen Tools in Konflikt.
Deshalb habe ich eine Form-MesgBox gebastelt (Popup). Und alle Meldungen möchte ich darüber ausgeben. Problem ist nur nur, dass die Inhalte extrem abweichen können.
Ich möchte kein riesiges Form für kurze Meldungen. Weiterhin brauche ich aber auch manchmal etwas größer.
Mit Me.Insideheight =... kann ich die Höhe des Detailbereichs festlegen. z.B. zeilenzahl * x
Gruß Christoph
Hallo,
vielleicht ist das ja eine brauchbare Lösung:
http://www.vbarchiv.net/tipps/tipp_736-msgbox-beliebig-positionieren.html