![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
Nike0 |
![]() ![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 61 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
Доброго времени суток, нужна небольшая помощь: у меня есть 9 эдитов, для пяти из них у меня есть условиеЮ, что можно записывать числа от 1 до 5 включительно и только 1 раз, вот эта процедура:
procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);
var
edit:TEdit;
b:integer;
begin
edit:= Sender as TEdit;
if (key = #8) and (edit.Text<>'') then
include(Number,StrToInt(edit.Text));
if not (Key in ['1'..'5',#8]) then
Key :=#0
else
begin
if key<>#8 then
b := StrToInt(Key);
if not (b in Number) and (key<>#8) then
Key := #0
else
if key<>#8 then
exclude(Number,b);
end;
end;
type
TNumber = Set of Byte;
procedure TForm2.FormCreate(Sender: TObject);
begin
Number := [1..5];
end;
но тут начинается самое интересное, я хотел сделать также и для 4 символов (+,-,*,/) в оставшиеся эдиты, но ничего толкового не получилось, прошу помочь разобраться с этой проблемкой |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
В чем проблема - непонятно, вот так все прекрасно работает:
type
TCharSet = Set Of Char;
var
Chars: TCharSet = ['+', '-', '*', '/']; // Можно это сделать и в FormCreate
procedure TForm1.Edit6KeyPress(Sender: TObject; var Key: Char);
var
edit: TEdit;
b: Char;
begin
edit:= Sender as TEdit;
if (key = #8) and (edit.Text<>'') then
begin
include(Chars, AnsiChar(edit.Text[edit.SelStart]));
end;
if not (Key in ['+', '-', '*', '/', #8]) then
Key :=#0
else
begin
if key<>#8 then
b := Key;
if not (b in Chars) and (key<>#8) then
Key := #0
else
if key<>#8 then
exclude(Chars, AnsiChar(b));
end;
end;
|
Nike0 |
![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 61 Пол: Мужской Реальное имя: Илья Репутация: ![]() ![]() ![]() |
спасибо, у меня как раз ругалось на AnsiChar и TCaption
|
![]() ![]() |
![]() |
Текстовая версия | 28.07.2025 3:09 |