Entwickler-Ecke
Sonstiges (Delphi) - Tasten in Memo verbieten
Eddie - So 16.10.05 21:37
Titel: Tasten in Memo verbieten
Hi Leute,
Ich würde gerne wissen wie ich in einem Memo folgende Tasten "verbieten" kann:
- Backspace
- Entfernen
- Pfeiltasten
Außerdem würde ich es gerne so machen, dass man nichts mehr in das Memo einfügen kann.
Wär schön wenn ihr mir helfen könnt.
Vielen Dank schon mal.
DarkHunter - So 16.10.05 21:39
Wenn du das Memo auf readonly stellst kann der Anwender nix mehr einfügen
die Tasten kannst du verbieten indem du sie über keydown abfängst
Eddie - So 16.10.05 21:44
Wenn ich das Memo auf ReadOnly stelle kann ich aber auch nichts mehr reinschreiben!
Das andere werd ich mal probieren. Danke
DarkHunter - So 16.10.05 21:51
Das ist der Sinn von ReadOnly -> der Anwender kann nix mehr reinschreiben
Das Programm hingegen schon
Eddie - So 16.10.05 21:54
Das ist aber nicht dass was ich bezwecken will!!!
Der nutzer soll ja noch alle Tasten (außer die oben genannten) benutzen können und da nützt ReadOnly nix!
DarkHunter - So 16.10.05 21:56
Titel: Re: Tasten in Memo verbieten
Eddie hat folgendes geschrieben: |
Außerdem würde ich es gerne so machen, dass man nichts mehr in das Memo einfügen kann.
|
dann hab ich den Satz falsch verstanden, sorry
Christian S. - So 16.10.05 21:56
Dann hilft DarkHunters zweiter Hinweis: Im OnKeyDown-Ereignis abfangen. Dazu am Besten mal die Suche im Forum bemühen. :-)
Ironwulf - So 16.10.05 21:56
Titel: Re: Tasten in Memo verbieten
[quote="
Eddie"]
Außerdem würde ich es gerne so machen, dass man nichts mehr in das Memo einfügen kann.
quote]
Was soll der Satz dann aussagen?
EDIT:
mal wieder zu spät...
Eddie - So 16.10.05 22:04
Sorry. Da hab ich mich wohl etwas unverständlich ausgedrückt.
Ich meinte das man nichts mehr aus dem Zwischenspeicher einfügen kann.
DarkHunter - So 16.10.05 22:06
also möchtest du "Einfügen" verbieten, bzw STRG+V richtig?
Eddie - So 16.10.05 22:08
jap.
DarkHunter - So 16.10.05 22:08
Müsstest du auch über das KeyDown abfangen, sollte aber zu machen sein.
Eddie - So 16.10.05 22:19
Vielen Dank für den Tipp. Werd mal ausprobieren.
Eddie - Mi 19.10.05 10:51
Ich hab das jetzt mal ausprobiert. Das mit der Zwischenablage von Lannes hat hervorragend funktioniert.
Die Sache mit den Tasten funktioniert aber nicht ganz.
Ich habs folgendermaßen probiert (In KeyPress):
Delphi-Quelltext
1: 2:
| If Key = Char(vk_Backspace) then Key := #0; |
Mein Problem ist jetzt folgendes: Die Tasten Entf, Pos1, Ende und die Pfeiltasten funktionieren trotzdem noch.
Hab schon alles mögliche Probiert und es hat einfach nicht funktioniert. Kann mir vielleicht jemand sagen was ich falsch mache?
Lossy eX - Mi 19.10.05 11:02
Also ich bin ganz ehrlich der Meinung du solltest das Memo komplett sperren und zusätzliche Eingaben über ein Editfeld oder anderweitig ermöglichen. Der Grund ist recht simple. Du musst unter anderem Strg+A blocken. Du musst die Mausmarkierungen blocken. Sobald etwas markiert wird und eine Taste gedrückt wird musst du dies abfangen und darauf reagieren. Du möchtest zu viel verhindern. Mir stellt sich da die Frage ob das so sinnvoll ist und ob der Benutzer da nicht vielleicht eine total verkrüppelte Steuerung vorgesetzt bekommt und es letzten endes nicht mehr sinnvoll benutzen kann.
Wäre auch mal interessant zu wissen was du damit vor hast. Vielleicht gibt es ja eine besser Möglichkeit als ihn so umstänndlich zu beschneiden. Vor allem da du recht viel Zeit investieren musst und es dann doch noch irgendwelche Schlupflöcher gibt.
Eddie - Mi 19.10.05 11:06
Ich bin dabei einen Schreibtrainer um das 10-Fingersystem zu lernen, zu schreiben.
Die Tasten möchte ich verbieten weil es einen Modus gibt wo keine korrektur erlaubt ist.
Lannes - Mi 19.10.05 11:39
Hallo,
zu deinem Code,
vk_Backspace ist falsch, so ist es richtig:
Delphi-Quelltext
1: 2:
| If Key = Char(vk_Back) then Key := #0; |
@
Lossy eX: richtig :!:
@
Eddie:
Probier mal dies:
- ein Panel auf die Form
- Panel.Enabled auf False
- auf das Panel das Memo
- den folgenden Code in das Ereignis OnKeyPress der
Form
Delphi-Quelltext
1: 2:
| if Key in ['a'..'z','A'..'Z','0'..'9',' '] then Memo.Text := Memo.Text + Key; |
Lossy eX - Mi 19.10.05 11:50
Ähh. Lanes. War schneller. In etwa so etwas würde ich auch empfehlen.
Du könntest das Memo auch auf ReadOnly stellen und beim OnKeyPress des Memos dann die Buchstaben hinzufügen. Je nachdem was dir optisch besser gefällt und wie das besser in dein Programm passt könntest du bei einem solchen Test ein extra Fenster aufpoppen lassen und in einem Label den zu tippenden Text und in einem anderen die Zeichen von Form.OnKeyPress darstellen. Also Möglichkeiten gibt es genügend. Es kommt nur darauf an was für den Benutzer offensichtlicher ist und was besser aussieht.
Eddie - Do 20.10.05 19:57
Lannes hat folgendes geschrieben: |
Hallo,
zu deinem Code, vk_Backspace ist falsch, so ist es richtig:
Delphi-Quelltext 1: 2:
| If Key = Char(vk_Back) then Key := #0; |
|
So stands natürlich auch bei mir im Quelltext. Ich saß zu dem Zeitpunkt nur grad nicht vor dem Programm sonder in der Schule vorm PC. :D
Auf jeden fall hab ich die Tipps ein wenig abgewandelt und habs jetzt so hingekommen, dass alles so funktioniert wie ichs haben wollte.
Vielen Dank!!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!