![]() |
Überschreib-Funktion von Zeichen im TEdit-Feld
Hallo gibt es beim Edit-Feld die Möglichkeit, dass wenn etwas hinein geschrieben wird nur überschrieben wird und nicht eingefügt wird?
|
Re: Überschreib Funktion von Zeichen im TEdit-Feld
Hi!
Also das quasi immer das nächste Zeichen gelöscht wird und dann das aktuelle eingefügt wird? Da gibt es doch eigentlich die Einf.-Taste für - vllt. lässt sich damit was machen? Ansonsten "zu Fuß" Wenn neues Zeichen kommt (onKeyDown/Press) zuerst ein Zeichen löschen, also Entf-Taste senden, dann das neue Zeichen durchlassen. Grüße, Frederic |
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
Ja habe ich auch schon überlegt, werds mal testen danke.
|
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
Hi!
Die Frage wäre, ob du nicht das drücken der Entf-Taste simulieren kannst... Grüße, Frederic |
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
Hi ich habs mal so versucht:
Delphi-Quellcode:
klappt aber nicht.... :?procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin tmp := chr(Key); Key := 127; end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin Key := tmp; end; |
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
Ginge das nicht auch so?
Delphi-Quellcode:
Wobei man vielleicht vorher die Länge des enthaltenen Textes untersuchen sollte.
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin Edit1.Text := Copy(Edit1.Text, 1, Length(Edit1.Text) - 1) + Key; end; |
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
Nein klappt leider nicht
|
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
Soll denn immer nur das eingegebene Zeichen im Edit stehen?
|
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
Hi!
Nein, ich denke, er meint sowas. Alter Inhalt: AB|CDE - Cursor an der Stelle, wo der | ist Eingabe von F - dann soll da stehen: ABFDE Grüße, Frederic |
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
Ich weiß nicht, wie Du zu der Annahme kommst. Allerdings sehe ich außer editierten Beiträgen und "klappt nicht" nicht Verwertbares :?
|
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
Ja genau so meinte ich es wie fkerber es schreibt. Also genau wie wenn man in Delphi mal ausversehen auf die "Einfg" Taste kommt und alles beim Tippen überschrieben wird und man sich furchtbar aufregt...
|
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
Achso. Neue Idee:
Delphi-Quellcode:
Edit1.Text := Copy(Edit1.Text, 1, Edit1.SelStart) + Key + Copy(Edit1.Text, Edit1.SelStart + 1, Length(Edit1.Text));
|
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
Mit SelStart bekommt man nur die Position wenn ein Zeichen auch selektiert ist, klappt also nicht.
|
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
Sicher? Ich hab gerade kein Delphi zur Hand, aber war der Meinung, dass man damit die Cursorposition innerhalb des Edits bekommt.
|
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
Ja sicher habs getestet ohne das was markiert ist steht SelStart immer auf der Endnummer des Strings, also auf Length(Edit1.Text).
|
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
Auch, wenn Du vorher mal die "Pos1" bzw. "HOME"-Taste drückst?
|
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
Nein bringt auch nix, ich denk nochmal drüber nach
Hab es, es ist doch einfacher als ich dachte trotzdem danke :
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin keybd_event(VK_DELETE, 0, 0, 0); keybd_event(VK_DELETE, 0, KEYEVENTF_KEYUP, 0); end; das wars schon... |
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
Das wäre durch Einfügen und Löschen aber auch gegangen, statt in den Tastaturpuffer zu schreiben. Aber meinetwegen.
|
DP-Maintenance
Dieses Thema wurde von "Daniel" von "Object-Pascal / Delphi-Language" nach "VCL / WinForms / Controls" verschoben.
Scheint eine VCL-Frage zu sein |
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
Hallo,
Zitat:
Der imho beste Weg das Überschreiben zu realisieren, ist es in OnKeyDown eine entsprechende Selektion vorzunehmen:
Delphi-Quellcode:
if (Key > 31) and (Edit.SelLength = 0) then
Edit.SelLength := 1; |
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
Ein etwas anderer Ansatz, aber immerhin Unterstützung, thx ;) (hatte schon an meinem Verstand gezweifelt)
|
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
die Unterstützung hast Du dir auch redlich verdient, mit Deiner Engelsgeduld :angel2:
|
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
Hoffentlich zahlt sich die auch mal aus ;)
|
Re: Überschreib-Funktion von Zeichen im TEdit-Feld
Ja da hab ich scheinbar irgendwas falsch gemacht :roll:
Danke Lannes, die Lösung ist natürlich um einiges besser als meine, allerdings kann ich die Cursortaste jetzt mit den Pfeiltasten immer nur um eins nach links verschieben gibts da ne Lösung für ? [Edit] Hat sich geklärt mit den Pfeiltasten, die sind ja über Ascii 31 noch mit drinn also rausmachen dann klappts... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz