Wenn es für alle TEdits gelten soll, kann man es im FormCreate so machen:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
i : Integer;
...
begin
...
for i := 0 to ComponentCount - 1
do begin
if Components[i] is TEdit then
with (Components[i] as TEdit) do
begin
MaxLength := 1;
CharCase := ecUpperCase;
Text := '';
OnKeyPress := EditKeyPress;
end;
end;
...
end;
Dann lässt sich nur ein Zeichen eingeben und Buchstaben werden großgeschrieben. Andere Zeichen werden im OnKeyPress abgefangen. Vielleicht so:
Delphi-Quellcode:
procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
begin
case Key of
#0.. #7 : Key := #0; // Steuerzeichen
#9..#31 : Key := #0; // Steuerzeichen
#34 : Key := #0; // "
#42 : Key := #0; // *
#47 : Key := #0; // /
#58 : Key := #0; // :
#60 : Key := #0; // <
#62 : Key := #0; // >
#63 : Key := #0; // ?
#92 : Key := #0; // \
#124 : Key := #0; // |
#127 : Key := #0; // Sonderzeichen
#129 : Key := #0; // Sonderzeichen
#131..#195 : Key := #0; // Sonderzeichen
#197..#213 : Key := #0; // Sonderzeichen
#215..#219 : Key := #0; // Sonderzeichen
#223 : Key := #0; // ß
#224..#227 : Key := #0; // Sonderzeichen
#229..#245 : Key := #0; // Sonderzeichen
#247..#251 : Key := #0; // Sonderzeichen
#253..#255 : Key := #0; // Sonderzeichen
end;
end;
Bei der Form1 sollte unter private noch
procedure EditKeyPress(Sender: TObject; var Key: Char);
deklariert werden.