Text hinzufügen
lima-city → Forum → Programmiersprachen → Basic
basic
beitrag
button
byte
cursor
erste
gesucht hast
handle
lngen
marke
maustaste
paar buttons
recht
right
sender
single
stellen
window
zeile
zusatz
-
Hi,
ich habe folgendes Problem:
Ich weis zwar wie man einen Text in eine TextBox hinzufügt:
----------
|Lol |
|Lol |
----------
Wenn ich meinen Normalen Code verwende zum hinzufügen (2) nehme schaut das so aus:
----------
|Lol |
|Lol2 |
----------
Aber wenn ich mit der Maus hinter dem ersten Lol geklickt hab, kommt das selbe wie in dem 2ten Bild.
Also / ist jetzt mal meine Maustaste (Schreiben)
----------
|Lol/ |
|Lol2 |
----------
Und dann sollte es so ausschauen:
----------
|Lol2 |
|Lol2 |
----------
Aber das geht ja nicht, kann mir jemand helfen?
Beitrag geaendert: 19.1.2007 7:28:10 von lilwayne -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Code für VB.Net 2003:
In der Textbox steht irgendein Text. Wenn du den Einfügecursor an eine andere Stelle in der Textbox setzt, wird an dieser Stelle der Zusatz eingefügt.
Private Sub TextBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDown
If Me.TextBox1.SelectedText = "" Then
Dim Teil1 As String = Me.TextBox1.Text.Substring(0, Me.TextBox1.SelectionStart)
Dim Teil2 As String = Me.TextBox1.Text.Substring(Me.TextBox1.SelectionStart)
Dim Zusatz As String = "2"
Me.TextBox1.Text = Teil1 & Zusatz & Teil2
Me.TextBox1.SelectionStart = Teil1.Length + Zusatz.Length
End If
End Sub
Ich hoffe, es ist das, was du gesucht hast ;)
Beitrag geaendert: 19.1.2007 13:18:18 von cbhp -
Schon klar, dass der Code in VB 6 nicht geht.
Aber wenn man ihn für VB 6 anpasst, dann schon:
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Me.Text1.SelText = "" Then
Dim Teil1 As String
Teil1 = Left(Me.Text1.Text, Me.Text1.SelStart)
Dim Teil2 As String
Teil2 = Right(Me.Text1.Text, Len(Me.Text1.Text) - Me.Text1.SelStart)
Dim Zusatz As String
Zusatz = "2"
Me.Text1.Text = Teil1 & Zusatz & Teil2
Me.Text1.SelStart = Len(Teil1) + Len(Zusatz)
End If
End Sub -
Ne, du hast das falsch verstanden,
ich hab rechts ein paar Buttons.
Wenn man auf die draufklick fügt es dieses Zeichen in die TextBox hinzu!
Und ich will
das es das Zeichen da hinzufügt wo der Mousezeiger ist -
lilwayne schrieb:
Ne, du hast das falsch verstanden,
ich hab rechts ein paar Buttons.
Wenn man auf die draufklick fügt es dieses Zeichen in die TextBox hinzu!
Und ich will
das es das Zeichen da hinzufügt wo der Mousezeiger ist
Und wo ist das Problem? Das funktioniert auch mit dem Code, den ich geschrieben habe, musst nur beim Button einfügen...
Also hier nochmal gaaaaaanz ausführlich:
Button1
Private Sub Command1_Click()
Call Text_Bei_Marke_Einfügen("1")
End Sub
Button2
Private Sub Command2_Click()
Call Text_Bei_Marke_Einfügen("2")
End Sub
Funktion "Bei Marke einfügen"
Private Function Text_Bei_Marke_Einfügen(ByVal Zusatz As String) As String
If Me.Text1.SelText = "" Then
Dim Teil1 As String
Teil1 = Left(Me.Text1.Text, Me.Text1.SelStart)
Dim Teil2 As String
Teil2 = Right(Me.Text1.Text, Len(Me.Text1.Text) - Me.Text1.SelStart)
Me.Text1.Text = Teil1 & Zusatz & Teil2
Me.Text1.SelStart = Len(Teil1) + Len(Zusatz)
Me.Text1.SetFocus
End If
End Function
Das war doch gar nicht schwer, oder?
-
Ne, du hast das falsch verstanden,
ich hab rechts ein paar Buttons.
Wenn man auf die draufklick fügt es dieses Zeichen in die TextBox hinzu!
Und ich will
das es das Zeichen da hinzufügt wo der Mousezeiger ist
Dazu musst du erstmal rausfinden, wo der Mousezeiger überhaupt ist.
Habe das ganze aus einem Buch oder Internet, kann es aber jetzt gerade nicht finden. Werde es reinposten, wenn ich es gefunden habe.
Irgendwie so:
Public Sub Cursorposition_ermitteln()
Dim abytBuffer() As Byte
'Cursor-Position ermitteln:
lngCursorPos = SendMessage(lngHWnd, EM_GETSEL, 0, 0) \ &H10000
'Zeilen-Index ermitteln:
lngLineIndex = SendMessage(lngHWnd, EM_LINEFROMCHAR, lngCursorPos, 0)
'Position des erstens Zeichens in Zeile ermitteln:
lngFirstCharPos = SendMessage(lngHWnd, EM_LINEINDEX, lngLineIndex, 0)
'Laenge der Zeile ermitteln:
lngLineLength = SendMessage(lngHWnd, EM_LINELENGTH, lngFirstCharPos, 0)
'Text in Zeile ermitteln:
ReDim abytBuffer(lngLineLength)
abytBuffer(0) = lngLineLength
'SendMessage lngHWnd, EM_GETLINE, lngLineIndex, abytBuffer(0)
... -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage