![]() |
Strg+V im TEdit abfangen
hallo,
kann mir jemand sagen wie ich auf das Einfügen in ein Editfeld reagieren kann. Also wie kann ich, wenn man was über Strg+V oder über das normale PopUpMenü ("Einfügen") einfügt, auf das Einfügen reagieren. Also bevor der Text wirklich eingetragen wird soll er durch eine eigene procedure überprüft werden und ggf getrennt/gesplittet. Hoffe ihr habt verstanden was ich meine... Der eine Satz ist etwas komisch geworden ;) Danke Schonmal MfG Habs im OnKeyPress und OnKeyDown probiert, jedoch ohne Erfolg. Und außerdem bliebe da noch die Frage mit PopUpMenu was das Edit hat (wenn es möglich ist, würd ich das auch wegmachen...) |
Re: Strg+V im TEdit abfangen
|
Re: Strg+V im TEdit abfangen
aha. aber wie geht das "abfangen"?
Senden könnt ichs ja, aber abfangen.... :? MfG |
Re: Strg+V im TEdit abfangen
Entweder biegst du die WndProc um,
oder du leitest dir eine Kompo von TEdit ab, in der du eine Message-Prozedur (procedure ... (...) message EN_UPDATE;) einfügst ;) (Erster Fall ist nicht so schön, nicht sofort ersichtlich, was du gemacht hast, aber du hast weiterhin ein TEdit, und kein TMyEdit) |
Re: Strg+V im TEdit abfangen
Das mit der eigenen Komponente haut so nicht hin, weil EN_UPDATE über WM_COMMAND an das Parent des Controls gesendet wird. Also im Form (oder wo auch immer) WM_COMMAND abfangen, auf EN_UPDTAE checken und über ((FindControl(Message.lParam)) As TEdit).Text den Text bearbeiten.
Gruß, teebee |
Re: Strg+V im TEdit abfangen
eine Möglichkeit, etwas umständlicher und nicht so elegant wäre wenn du den Inhalt des Edits ein zweites mal abspeicherst. Im onChange kannst du dann überprüfen: hat sich der Text um mehr als ein Zeichen verlängert wurde etwas eingefügt, entweder übers Popup-Menü oder Strg+V. in dem Fall kannst du einfach den Text zurücksetzen.
Gemeint:
Delphi-Quellcode:
TForm1 = class(TForm)
//... Edit1Text: string; end; //... procedure Edit1Change(Sender: TObject); begin if length(Edit1.Text) > length(Edit1Text) + 1 then Edit1.Text := Edit1Text else Edit1Text := Edit1.Text; end; |
Re: Strg+V im TEdit abfangen
@Chimaira,
stimmt so "primitiv" ;) habe ich garnicht gedacht. Aber so werde ich es machen. Das Andere kapier ich net. Danke! :) |
Re: Strg+V im TEdit abfangen
Mit Mühe und Not gelingt es mir, das hier zu überlisten :
Delphi-Quellcode:
Es geht um eine Zahleneingabe. 8) Und zwar mit : rechte Maustatste -> Einfügen. Wie schalte ich jetzt diese Maustaste ab ? :shock:
ZulZeichen := [#8,#13,#27,'0'..'9'];
with Sender as TStringGrid do begin if Col in MinusCols then ZulZeichen := ZulZeichen + ['-']; if Col in KommaCols then begin if pos (DecimalSeparator,Cells [Col,Row]) < 1 then // nur 1 Komma ZulZeichen := ZulZeichen + [DecimalSeparator]; end; if col = 1 then begin if not (key in ZulZeichen) then key := #0; |
Re: Strg+V im TEdit abfangen
Hai,
eine andere möglichkeit wäre sich ein eigenes PopUp-Menü zu basteln welches mit dem Edit verknüpft ist. Für die Tastatureingabe kannst Du es zum Beispiel so machen:
Delphi-Quellcode:
uses
Clipbrd; procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: word; Shift: TShiftState); var MyString: string; begin if Shift = [ssCtrl] then begin case Key of Ord('C'): begin Edit1.CopyToClipboard end; Ord('V'): begin if (ClipBoard.HasFormat(CF_TEXT)) then begin MyString := Clipboard.AsText; if (IsOnlyHexChar(MyString)) then // Hier wird die Prüfung gemacht begin Edit1.PasteFromClipboard; end; end; end; Ord('X'): begin Edit1.CutToClipboard end; end; Key := 0; end; end; |
Re: Strg+V im TEdit abfangen
Zitat:
Der Sinn von EN_UPDATE ist, dass man über Änderungen informiert wird, bevor sie sichtbar werden. Gruß, teebee |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 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