none
Seitenränder einstellen RRS feed

  • Frage

  • Hallo,

    ich möchte gerne bei einem Textfeld die Seitenränder voreinstellen.
    Wie geht das?
    Vielen Dank im Voraus Liebe Grüße Stefan
    Montag, 15. Juni 2009 19:26

Antworten

  • Hallo giftzwockel,

    Hier ein Beispiel für Seitenränder an der RichTextBox einstellen.

    Friend Class Form1
        Inherits System.Windows.Forms.Form
        Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Integer, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer
    
    
        Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click
            'Seitenränder +30 zum Beispiel
    
            Const EC_LEFTMARGIN As Integer = &H1
            Const EC_RIGHTMARGIN As Integer = &H2
            Const EM_GETMARGINS As Integer = &HD4
            Const EM_SETMARGINS As Integer = &HD3
    
    
            Dim dwMargins As Integer
    
            dwMargins = SendMessage(RichTextBox1.Handle.ToInt32, EM_GETMARGINS, 0, 0)
    
            dwMargins = MakeDWord(30, 30) ' (Rechts, Links)
    
            Call SendMessage(RichTextBox1.Handle.ToInt32, EM_SETMARGINS, EC_RIGHTMARGIN Or EC_LEFTMARGIN, dwMargins)
    
            RichTextBox1.Text = RichTextBox1.Text & " "
    
        End Sub
    
        Private Sub Command2_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command2.Click
            'Seitenränder aufheben
    
            Const EC_LEFTMARGIN As Integer = &H1
            Const EC_RIGHTMARGIN As Integer = &H2
            Const EM_SETMARGINS As Integer = &HD3
    
            Call SendMessage(RichTextBox1.Handle.ToInt32, EM_SETMARGINS, EC_LEFTMARGIN Or EC_RIGHTMARGIN, 1)
    
            RichTextBox1.Text = RichTextBox1.Text & " "
    
        End Sub
    
    
        Function MakeDWord(ByRef wHi As Short, ByRef wLo As Short) As Integer
    
            If wHi And &H8000 Then
                MakeDWord = ((CShort(wHi And &H7FFF) * 65536) Or (wLo And &HFFFF)) Or &H80000000
            Else
                MakeDWord = (wHi * 65536) + wLo
            End If
    
        End Function
    End Class

    Grüße und Erfolg !

    • Als Antwort markiert Forenteam Mittwoch, 17. Juni 2009 23:04
    Dienstag, 16. Juni 2009 21:30
    Moderator

Alle Antworten

  • Hallo giftzwockel,


    Ist es eine Multiline oder eine einfache TextBox oder ist es ein Textfeld einer anderen Kontrolle?

    Wie möchtest du die Seitenränder einstellen? Kannst du ein bisschen mehr beschreiben?

    Danke und Grüße,

    Montag, 15. Juni 2009 19:45
    Moderator
  • Hallo,

    ja das ist eingentlich eine RichTextBox bei der Multiline auf True gestellt ist.

    Einstellen möchte ich die irgendwann auch mal über den dafür vorgesehenen Dialog. Ich denke aber, dass das Handling dieses Dialogs genauso problematisch ist wie dem Print Dialog Leben einzuhauchen. Da muss ich mich mal intensiver mit befassen wenn ich mal mehr Zeit und Muße habe.
    Jetzt geht es mir um darum, "irgendwo" im Quelltext für meine RichTextBox2 die vier Ränder einzustellen, dami bei der Texteingabe die Buchstaben nicht so am Rand hängen.


    Vielen Dank im Voraus Liebe Grüße Stefan
    Dienstag, 16. Juni 2009 16:22
  • Hallo giftzwockel,

    Hier ein Beispiel für Seitenränder an der RichTextBox einstellen.

    Friend Class Form1
        Inherits System.Windows.Forms.Form
        Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Integer, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Integer
    
    
        Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click
            'Seitenränder +30 zum Beispiel
    
            Const EC_LEFTMARGIN As Integer = &H1
            Const EC_RIGHTMARGIN As Integer = &H2
            Const EM_GETMARGINS As Integer = &HD4
            Const EM_SETMARGINS As Integer = &HD3
    
    
            Dim dwMargins As Integer
    
            dwMargins = SendMessage(RichTextBox1.Handle.ToInt32, EM_GETMARGINS, 0, 0)
    
            dwMargins = MakeDWord(30, 30) ' (Rechts, Links)
    
            Call SendMessage(RichTextBox1.Handle.ToInt32, EM_SETMARGINS, EC_RIGHTMARGIN Or EC_LEFTMARGIN, dwMargins)
    
            RichTextBox1.Text = RichTextBox1.Text & " "
    
        End Sub
    
        Private Sub Command2_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command2.Click
            'Seitenränder aufheben
    
            Const EC_LEFTMARGIN As Integer = &H1
            Const EC_RIGHTMARGIN As Integer = &H2
            Const EM_SETMARGINS As Integer = &HD3
    
            Call SendMessage(RichTextBox1.Handle.ToInt32, EM_SETMARGINS, EC_LEFTMARGIN Or EC_RIGHTMARGIN, 1)
    
            RichTextBox1.Text = RichTextBox1.Text & " "
    
        End Sub
    
    
        Function MakeDWord(ByRef wHi As Short, ByRef wLo As Short) As Integer
    
            If wHi And &H8000 Then
                MakeDWord = ((CShort(wHi And &H7FFF) * 65536) Or (wLo And &HFFFF)) Or &H80000000
            Else
                MakeDWord = (wHi * 65536) + wLo
            End If
    
        End Function
    End Class

    Grüße und Erfolg !

    • Als Antwort markiert Forenteam Mittwoch, 17. Juni 2009 23:04
    Dienstag, 16. Juni 2009 21:30
    Moderator
  • Danke, ich werde das am Wochenende ausprobieren und vor allem versuchen zu verstehen.
    Für mich ist das immer ein Problem erst mal rauszufinden wo solche Deklaratione  wie
    Friend Class Form1 und der ganze Teil danach hingehören.
    Einfack kopieren und einfügen (ausprobieren) ist auch nicht das was ich möchte. Schließlich möchte ich irgendwann mal mit weniger Hilfestellung auskommen :-)
    Vielen Dank im Voraus Liebe Grüße Stefan
    Dienstag, 16. Juni 2009 21:51