Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi edit mit eingabesperre & copy + paste (https://www.delphipraxis.net/3434-edit-mit-eingabesperre-copy-paste.html)

Jan 12. Mär 2003 14:57


edit mit eingabesperre & copy + paste
 
Also ich habe für mein kleines Umrecnungsprogramm eine Eingabebschränkung programmiert, die z.B. so aussieht:

Delphi-Quellcode:
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;
Um dann aber copy und paste zu ermöglichen habe ich im onkeyup folgendes geschrieben:

Delphi-Quellcode:
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;
Copy geht ganz ohne Probleme, aber paste will nicht. Das gleiche tritt auch bei edits auf.
Weiß da jemand weiter?
Gruß
Jan

[edit=Daniel B]Delphi-Tags hinzugefügt. Jan, bitte [ delphi] anstatt [ code] benutzen! Danke! MfG Daniel B.[/edit]

janjan 12. Mär 2003 15:00

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...

Jan 12. Mär 2003 15:24

hallo janjan,

Zitat:

So wie es jetzt ist müsstest du das zupastende auslesen und per SendKey an das Edit weiterleiten...
klingt doch akzeptabel!
Aber zu sendkey finde ich leider nichts in der Hilfe.
Kanst du mir da weitere Informationen geben?
Gruß
Jan

Jan 12. Mär 2003 16:13

Ich bin zu diesem Thema auf folgende Funktion gestoßen:
Code:
function GetTextBuf(Buffer: PChar; BufSize: Integer): Integer;
Wie muss ich den Buffer deklarieren und vorbereiten, damit ich da keine Exception bekomme?

Gruß
Jan

janjan 12. Mär 2003 16:24

Zu dem SendKey:

Das ist keine richtige DelphiFunktion sondern einfach ne Umschreibung für das hier:
Delphi-Quellcode:
PostMessage(Edit1.Handle, WM_KEYDOWN, VK_A, 0 );
VK_A ist eine 'virtual keycode' eine komplette Liste aller Tasten solltest du entweder in der Win32 SDK Hilfe oder bei Google finden.

flomei 12. Mär 2003 17:46

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:

Jan 12. Mär 2003 17:51

Hallo Flomei, das geht so:

Delphi-Quellcode:
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;
Das wäre jetzt zum beispiel eine Restriktion für Hex-werte.

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]

Christian Seehase 14. Mär 2003 18:32

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.

Jan 14. Mär 2003 20:32

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 16:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz