Autor |
Beitrag |
Eddie
      
Beiträge: 58
WinXP SP2
Delphi 5 Standard,Delphi 2005 Architect
|
Verfasst: So 16.10.05 21:37
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.
_________________ Der Programmierer ist nur ein Tool, dass Koffein in Code konvertiert.
|
|
DarkHunter
      
Beiträge: 477
Win XP
D3 Prof, D2005 PE
|
Verfasst: 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 
      
Beiträge: 58
WinXP SP2
Delphi 5 Standard,Delphi 2005 Architect
|
Verfasst: 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
_________________ Der Programmierer ist nur ein Tool, dass Koffein in Code konvertiert.
|
|
DarkHunter
      
Beiträge: 477
Win XP
D3 Prof, D2005 PE
|
Verfasst: So 16.10.05 21:51
Das ist der Sinn von ReadOnly -> der Anwender kann nix mehr reinschreiben
Das Programm hingegen schon
|
|
Eddie 
      
Beiträge: 58
WinXP SP2
Delphi 5 Standard,Delphi 2005 Architect
|
Verfasst: 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!
_________________ Der Programmierer ist nur ein Tool, dass Koffein in Code konvertiert.
|
|
DarkHunter
      
Beiträge: 477
Win XP
D3 Prof, D2005 PE
|
Verfasst: So 16.10.05 21:56
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.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: 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. 
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Ironwulf
      
Beiträge: 733
Erhaltene Danke: 2
|
Verfasst: So 16.10.05 21:56
[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 
      
Beiträge: 58
WinXP SP2
Delphi 5 Standard,Delphi 2005 Architect
|
Verfasst: 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.
_________________ Der Programmierer ist nur ein Tool, dass Koffein in Code konvertiert.
|
|
DarkHunter
      
Beiträge: 477
Win XP
D3 Prof, D2005 PE
|
Verfasst: So 16.10.05 22:06
also möchtest du "Einfügen" verbieten, bzw STRG+V richtig?
|
|
Eddie 
      
Beiträge: 58
WinXP SP2
Delphi 5 Standard,Delphi 2005 Architect
|
Verfasst: So 16.10.05 22:08
jap.
_________________ Der Programmierer ist nur ein Tool, dass Koffein in Code konvertiert.
|
|
DarkHunter
      
Beiträge: 477
Win XP
D3 Prof, D2005 PE
|
Verfasst: So 16.10.05 22:08
Müsstest du auch über das KeyDown abfangen, sollte aber zu machen sein.
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: So 16.10.05 22:10
Hallo,
da www.delphi-forum.de/...r=asc&highlight= geht es zwar um ein EditFeld, aber das kannst Du einfach anpassen.
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Eddie 
      
Beiträge: 58
WinXP SP2
Delphi 5 Standard,Delphi 2005 Architect
|
Verfasst: So 16.10.05 22:19
Vielen Dank für den Tipp. Werd mal ausprobieren.
_________________ Der Programmierer ist nur ein Tool, dass Koffein in Code konvertiert.
|
|
Eddie 
      
Beiträge: 58
WinXP SP2
Delphi 5 Standard,Delphi 2005 Architect
|
Verfasst: 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?
_________________ Der Programmierer ist nur ein Tool, dass Koffein in Code konvertiert.
|
|
Lossy eX
      
Beiträge: 1048
Erhaltene Danke: 4
|
Verfasst: 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.
_________________ Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
|
|
Eddie 
      
Beiträge: 58
WinXP SP2
Delphi 5 Standard,Delphi 2005 Architect
|
Verfasst: 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.
_________________ Der Programmierer ist nur ein Tool, dass Koffein in Code konvertiert.
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: 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; |
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
Lossy eX
      
Beiträge: 1048
Erhaltene Danke: 4
|
Verfasst: 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.
_________________ Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
|
|
Eddie 
      
Beiträge: 58
WinXP SP2
Delphi 5 Standard,Delphi 2005 Architect
|
Verfasst: 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.
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!!
_________________ Der Programmierer ist nur ein Tool, dass Koffein in Code konvertiert.
|
|