Thema: Delphi Clipboard Paste Prüfung

Einzelnen Beitrag anzeigen

zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#4

AW: Clipboard Paste Prüfung

  Alt 8. Feb 2020, 17:27
Erstmal mußt du schauen wo/wann Strg+V von der Komponente ausgeführt wird.
> jeweils KeyDown, KeyUp, KeyPress und FormKeyDown, FormKeyUp, FormKeyPress (KeyPreview=True) ein Key=0 rein, einzeln und Kombinationen und schauen wann Strg+V nicht mehr verarbeitet wird (meist reicht KeyDown und/oder KeyUp)

Dann hast du erstmal das Sperren und dann würde ich die eigene Bearbeitung an der selben Stelle einfügen, um im System ein einheitliches Verhalten der Komponente zu beizubehalten.



Dazu gehört auch wie und vorallem wo man einfügt.
Und gerade bei solchen Kompoenten ist es doch irrsinnig die Setter viele Male pro Zeichen aufzurufen.

Delphi-Quellcode:
S := ClipBoard.AsText;
for i := Length(S) downto 1 do
  if not CharInSet(S, ['0'..'9'] then // ausmisten
    Delete(S, i);
if S <> 'then begin // nur machen, wenn es was zum Machen gibt (hier wegen dem eventuellen Löschen, was man nicht immer machen sollte)
  Edit.SelText := S; // an aktueller Stelle einfügen und eventuell Selektiertes überscheiben
  Edit.SelStart := Edit.SelStart + Edit.SelLength; // Cursor hinter das Eingefügte
end;
Key := 0; // hier mal immer das Standardverhalten aus ... normal schalte ich das nur aus, wenn die eigene Aktion lief, also im IF
Danke für den Tipp. Ich habe das nun mit der Abfrage
  if (Shift = [ssCtrl]) and (Key=ord('V')) then begin ins KeyDown eingebaut. Nun scheint es zu gehen. Will nochmal alle Konstellationen durchprobieren.
Anfangs hatte ich ein MaskEdit drin. Da war dann schon alles fertig. Aber meine Kollegen wollten eine Box mit Auswahl.


Also im KeyUp funktioniert der Code (Dein Beispiel 2) bei mir.

VG ZYL
Warum das jetzt geht? War wohl gestern nicht mein Tag. Habe es, wie oben beschrieben, ins KeyDown geschrieben. Aber in KeyUp sollte es genauso gehen.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain

Geändert von zeras ( 8. Feb 2020 um 17:35 Uhr)
  Mit Zitat antworten Zitat