![]() |
edit mit eingabesperre & copy + paste
Also ich habe für mein kleines Umrecnungsprogramm eine Eingabebschränkung programmiert, die z.B. so aussieht:
Delphi-Quellcode:
Um dann aber copy und paste zu ermöglichen habe ich im onkeyup folgendes geschrieben:
procedure TForm2.Memo2KeyPress(Sender: TObject; var Key: Char);
begin If not(key in [#48..#57,#65..#70,#97..#102,#8]) then begin beep; key := #0; end; end;
Delphi-Quellcode:
Copy geht ganz ohne Probleme, aber paste will nicht. Das gleiche tritt auch bei edits auf.
procedure TForm2.Memo2KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if (Shift = [ssCtrl]) then begin if (Key = 67) then memo2.CopyToClipboard else if (Key = 118) then memo2.PasteFromClipboard; end; end; Weiß da jemand weiter? Gruß Jan [edit=Daniel B]Delphi-Tags hinzugefügt. Jan, bitte [ delphi] anstatt [ code] benutzen! Danke! MfG Daniel B.[/edit] |
Anstatt die Eingabebeschränkung beim Tastendruck einzusetzen solltest du das Ganze ins OnChange-Ereignis packen.
So wie es jetzt ist müsstest du das zupastende auslesen und per SendKey an das Edit weiterleiten... |
hallo janjan,
Zitat:
Aber zu sendkey finde ich leider nichts in der Hilfe. Kanst du mir da weitere Informationen geben? Gruß Jan |
Ich bin zu diesem Thema auf folgende Funktion gestoßen:
Code:
Wie muss ich den Buffer deklarieren und vorbereiten, damit ich da keine Exception bekomme?
function GetTextBuf(Buffer: PChar; BufSize: Integer): Integer;
Gruß Jan |
Zu dem SendKey:
Das ist keine richtige DelphiFunktion sondern einfach ne Umschreibung für das hier:
Delphi-Quellcode:
VK_A ist eine 'virtual keycode' eine komplette Liste aller Tasten solltest du entweder in der Win32 SDK Hilfe oder bei Google finden.
PostMessage(Edit1.Handle, WM_KEYDOWN, VK_A, 0 );
|
So was ähnliches
Wie kann ich einstellen, dass im Edit nur Zahlen oder nur Buchstaben erlaubt sind???
Das wäre manchmal ganz praktisch. Thx! MfG Florian :hi: |
Hallo Flomei, das geht so:
Delphi-Quellcode:
Das wäre jetzt zum beispiel eine Restriktion für Hex-werte.
procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
begin If not(key in [#48..#57,#65..#70,#97..#102,#8]) then begin beep; key := #0; end; end; Um die Werte zu finden, die du haben willst, kannst du ja mein freeware tool benutzen, welches du hier in der freeware Sektion findest :] Gruß Jan [edit=Daniel B]Delphi-Tags hinzugefügt. MfG Daniel B.[/edit] |
Moin Jan,
um noch einmal auf Dein Eingangsposting zurückzukommen: Hättest Du dort statt 118 (v) 86 (V) genommen, so hätte es auch mit dem Einfügen geklappt. Der virtuelle Tastencode für die Buchstaben (ohne Umlaute) ist jeweils ord(Grossbuchstabe). Das gilt somit auch für solche Codes, wenn man sie, z.B., mit SendMessage benutzen will. |
Danke Christian,
das habe ich dann nach einiger Zeit auch herausgefunden :] Jetzt klappt ja alles. Gruß Jan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:24 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