Autor |
Beitrag |
acnut
      
Beiträge: 172
Erhaltene Danke: 3
Windows 7, Windows Vista, Windows XP, Ubuntu, Kubuntu, Pardus
Delphi 2010 SV, Java Editor, VS 2010 SV
|
Verfasst: Mo 04.01.10 12:02
ich kann in delphi z.b die buchstabe b bei einer texteingabe "ausschließen", aber wie kann ich eine tastenkombination für zwei tasten sperren?
(ich bräuchte ALT+E, ALT+U & ALT+I)
ich hab in der suche tastensperre geschrieben, hab leider nix gefunden
mfg
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Mo 04.01.10 12:50
Wie machst du es, um einen Buchstaben auszuschließen? Füg eine Abfrage ein, ob dabei die ALT Taste gedrückt ist.
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Mo 04.01.10 13:14
hi,
Versuchmal
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (chr(Key) = 'E') and (shift = [ssALT]) then key := 0;
end; |
Gruss Alf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
acnut 
      
Beiträge: 172
Erhaltene Danke: 3
Windows 7, Windows Vista, Windows XP, Ubuntu, Kubuntu, Pardus
Delphi 2010 SV, Java Editor, VS 2010 SV
|
Verfasst: Mo 04.01.10 13:19
ich machs so:
Delphi-Quelltext 1:
| if not (key in [#65..#90, #16, #32, #18]) then key := #0; |
darf ich also if not (key in [#65..#90, #16, #32, #18+#69]) then key := #0;?
mfg
--- Moderiert von Narses: Beiträge zusammengefasst---
ALF hat folgendes geschrieben : | Versuchmal
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (chr(Key) = 'E') and (shift = [ssALT]) then key := 0;
end; | |
ich verwende das ganze im richedit um arabische zeichen zu schreiben(ich muss zuerst die lateinischen buchstaben für die eingabe sperren, damit im richedit lateinische und arabische buchstaben sich nicht vermischen)
da jetzt das ganze alphabet voll ist, brauch ich jetzt auch "sekundärtasten" um buchstaben zu schreiben.
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (chr(Key) = 'E') and (shift = [ssALT]) then key := 0;
end; |
so hab ichs auch probiert bevir ich hier geschrieben hab, aber mit diesem code schreibt er sowohl die "primärbuchstabe" als auch die "sekundärbuchstabe"
ich hoffe ich konnte mich klar ausdrücken
mfg
|
|
DaveRidge
Hält's aus hier
Beiträge: 4
|
Verfasst: Di 02.02.10 12:27
Mahlzeit. Ich hab mal ne Frage.
In meinem Prog sollen nur so viele Zeichen eingeben werden wie man es einstellt, also müsste mein Entwurf einglich passen, oder?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var zeichen:string; begin zeichen:=IntToStr(Length(StringReplace(Memo1.Text, #13#10, ' ', [rfReplaceAll]))); max:=buffer-(StrtoInt(zeichen)); if InttoStr(max)='0' then key := 0; if InttoStr(max)>'0' then key := 0; end; |
buffer ist der Eingabe string (edit1.text).
Normal müsste das eigentlich gehen, nur er macht das nicht. Kann mir einer helfen?
MfG Dave
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Di 02.02.10 12:31
Lass die ganze String <> Integer Wandelei weg, und arbeite nur mit Integer. Die kann man auch besser miteinander vergleichen.
Und wenn das dann funktioniert, schaust du dir TMemo.MaxLength an 
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
DaveRidge
Hält's aus hier
Beiträge: 4
|
Verfasst: Di 02.02.10 12:48
Das mit dem TMemo.MaxLength hab ich auch gedacht. Nur das problem ist das Return 2 mal zählt, was bei einer sms aber nicht ist.
Die Strings hab ich mal zu Integer umgewandelt. geht aber auch net.
Auch wenn ich nur den Befehl (key:=0  eingebe, passiert nix dabei.
Ka warum
MfG Dave
EDIT: Hab hinbekommen. Hab so gemacht:
Form1.Memo1.MaxLength:=buffer+Memo1.Lines.Count-1;
einfach gehts kaum 
|
|
SvenAbeln
      
Beiträge: 334
Erhaltene Danke: 3
|
Verfasst: Di 02.02.10 13:15
Fällt dir hier was auf?
Zitat: | In meinem Prog sollen nur so viele Zeichen eingeben werden wie man es einstellt, |
Zitat: | EDIT: Hab hinbekommen. Hab so gemacht:
Form1.Memo1.MaxLength:=buffer+Memo1.Lines.Count-1; |
Ungetestet:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var zeichen:integer; begin zeichen:=Length(StringReplace(Memo1.Text, #13#10, ' ', [rfReplaceAll])); if Zeichen>=buffer then key := 0; end; |
|
|
DaveRidge
Hält's aus hier
Beiträge: 4
|
Verfasst: Di 02.02.10 13:28
SvenAbeln hat folgendes geschrieben : | Fällt dir hier was auf?
Zitat: | In meinem Prog sollen nur so viele Zeichen eingeben werden wie man es einstellt, |
Zitat: | EDIT: Hab hinbekommen. Hab so gemacht:
Form1.Memo1.MaxLength:=buffer+Memo1.Lines.Count-1; |
Ungetestet:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var zeichen:integer; begin zeichen:=Length(StringReplace(Memo1.Text, #13#10, ' ', [rfReplaceAll])); if Zeichen>=buffer then key := 0; end; | |
Mmh, müsste gehen, eigentlich. Nur key:=0 will nicht. Selbst wenn ich key:=0 sohin texte, passiert einfach nix.
Das war ja das andere Problem, hatte ich aber auch oben beschrieben
MfG Dave
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Di 02.02.10 13:29
Hast du dem Memo1 überhaupt das Ereignis OnKeyDown zugewiesen?
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
DaveRidge
Hält's aus hier
Beiträge: 4
|
Verfasst: Di 02.02.10 13:31
Xentar hat folgendes geschrieben : | Hast du dem Memo1 überhaupt das Ereignis OnKeyDown zugewiesen? |
jo, habsch gemacht, das isses ja. Ich weiss nicht warum er key:=0 nicht annimmt.
MfG Dave
|
|