Mam problem z poniższą procedurą.
procedure EditKeyPress(Sender: TObject; var Key: Char);
begin
if Key in ['a'..'z','ę','ł'] then else Key := #0;
end;
Procedura działa w D7 ale w XE już nie a to z tego powodu że typ char zajmuje 2 bajty i jest to typ widechar. I teraz jeśli Key = 'ł' to nie rozpoznaje tej literki pośród zdeklarowanych w nawiasach kwadratowych. Jakiś pomysł jak to ugryść?
Próbowałem tak ale też nie działa
If AnsiUpperCase(Key)[1] in ['ę','ó','ą','ś','ł','ż','ź','ć','ń','Ę','Ó','Ą','Ś','Ł','Ż','Ź','Ć','Ń','0'..'9','a'..'z','A'..'Z','"',' ','-',#13,#8,#2,#22] then else Key:=#0;
Oraz także tak jak w dokumentacji Delphi
var
charSet: set of AnsiChar;
begin
charSet := ['ę','ó','ą','ś','ł','ż','ź','ć','ń','Ę','Ó','Ą','Ś','Ł','Ż','Ź','Ć','Ń','0'..'9','a'..'z','A'..'Z','"',' ','-',#13,#8,#2,#22];
If AnsiChar(Key) in charSet then else Key:=#0;
end;
Rożnica taka że rozpoznaję ł oraz ń ale ś, ć nadal nie rozpoznaje