Text per Entf löschen?
-
Hast Du dir die Hilfe zu CaretPos und Delete überhaupt schon mal angesehen??? Du bekommst eine x und y Koordinate aus CaretPos. Ein AnsiString ist aber eindimensional. AnsiString::Delete(startpunkt,laenge) erwartet eine Startpunkt und die Länge, keine x und y Koordinaten.
Um die Koordinaten aus CaretPos nutzen zu können, solltest Du TRichEdit::Lines[] verwenden. Hier kannst Du die Koordinaten verwenden.
-
Ich gebs auf Mein letzter versuch war das hier:
txt_eingabe->Lines->Text = txt_eingabe->Lines->Text.Delete(StrToInt(txt_eingabe->SelText),1);Aber auch das geht nicht. Was mache ich falsch?
@ Joe_M.: Ja habe ich. Kannst es mal bei dir versuchen? Vielleicht bin ich ja gar nicht so doof.

-
Lines**[]**
TRichEdit::Lines ist ein 'Array aus AnsiStrings' (TStrings).
RichEdit->Lines[x] = RichEdit->Lines[x].Delete(y,1);
-
Nimms mir nicht übel, aber hast du es jemals bei dir selbst probiert? Wenn du Zeit hast, dann starte mal ein neues projekt und baue ein Richedit und eine menüleiste ein mit einem Löscheintrag und einem Shortcut auf die Entf-Taste. Dann probiere es selber mal, was du mir gesagt hast. Du wirst merken, es geht nicht.
Es kann auch gar nicht gehen. Zudem kommen etliche Fehlermeldungen.
-
Ein Blick in die Hilfe zu TStrings hätte Dir gezeigt was ich vergegessen habe:
RichEdit->Lines->Strings[y] = RichEdit->Lines[y].Delete(x + 1,1);Löscht jeweils das rechte Zeichen vom Cursor. Bereichsüberprüfungen solltest du auch noch machen und z.B. eine Sonderbehandlung, falls der Cursor am Zeilenende steht...
-
txt_eingabe->Lines->Strings[txt_eingabe->CaretPos.x] = txt_eingabe->Lines-> Strings[txt_eingabe->CaretPos.x].Delete(txt_eingabe->CaretPos.y,1);Bei deiner version kommt als fehlermeldung „Kein zulässiger Typ“ und Borland markiert dabei das „=“.
Auf meine Art scheint es zu klappen…. zu 50%. Es gibt nur zwei probleme. 1) es werden die Buchstaben links neben des Cursors gelöscht und 2) ich muss vorher den text markieren. Ohne Markierung passiert gar nichts.
Wenn ich y mit x vertausche und andersrum wird gar nichts gelöscht.
Ring frei für die nächste Runde!
-
So ich hab meinen Source mal auspropiert. Funktioniert wie ich es beschrieben habe.
TPoint CaretPoint = RichEdit->CaretPos; RichEdit->Lines->Strings[CaretPoint.y] = RichEdit->Lines[CaretPoint.y].Delete(CaretPoint.x + 1,1);
-
http://www.simonology.de/sonstiges/bug.jpg
ALso, was hab ich diesmal falsch gemacht?
-
Hallo
Beachten : die Fehlermeldung spricht von **TStrings::**Delete(), nicht vom gewünschten (denk ich mal) AnsiString::Delete()
also einfach
[cpp]RichEdit->Lines->Strings[CaretPoint.y] = RichEdit->Lines->Strings[CaretPoint.y].Delete(CaretPoint.x + 1,1);
[/cpp]
bis bald
akari
-
Sorry mein Fehler, ich glaub ich sollte das posten einstellen, bis ich die Grippe überstanden hab...
-
@ akari: Das hatte ich selbst bereits probiert. Ergebnis: NICHTS passiert. Auch nicht, wenn ich etwas markiere. Aber es kommt auch keine fehlermeldung.
Nächster.