Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Delphi Создание числовых блоков https://www.cyberforum.ru/ delphi-beginners/ thread671317.html
Нужно сгенерировать 300 блоков , по 6 строчек и в каждой строчке 6 цифр Пример 23 42 12 15 13 45 32 55 67 34 74 11 23 42 12 15 13 45 32 55 67 34 74 11 33 51 62 36 71 11 Это 1й блок, а...
Определение экстремальных путей на графе Шимбела Delphi
мне тема по курсовой попалась : "Определение экстремальных путей на графе Шимбела" как создать программу на DELPHI? не могу найти в инете не чего
Delphi Шифрование по системе Хилла Добрый вечер! Вот нужно сделать шифрование по системе Хилла. С теорией я кое- как разобралась, а вот реализовать программу вообще не могу. Помогите решить. Программа должна быть на Delphi. https://www.cyberforum.ru/ delphi-beginners/ thread671298.html Delphi Последнее число предыдущего месяца https://www.cyberforum.ru/ delphi-beginners/ thread671297.html
Здравствуйте, подскажите как вычислить последнее число предыдущего месяца используя Два Datetimepicker'a ?
Delphi Хендл рабочего стола
подскажите как узнать хендл рабочего стола,делаю так function GetDesktopListViewHandle: THandle; var S: string; begin Result := FindWindow('ProgMan', nil); Result := GetWindow(Result,...
Delphi Разработать программу решения четырех взаимосвязанных задач https://www.cyberforum.ru/ delphi-beginners/ thread671279.html
Разработать программу решения четырех взаимосвязанных задач частой работы: 1) расчета элементов квадратной матрицы A = (ai,j ), i,j = 1,2,...,n по заданной формуле; 2) вычисления элементов...
Delphi Как описать функцию для вычисления? вроде прикрепил картинку,если нет то вот https://www.cyberforum.ru/attachment.php?attachmentid=190847&stc=1&d=1350231928 помогите плиз https://www.cyberforum.ru/ delphi-beginners/ thread671214.html Delphi Чистильщик реестра, файлов
я начинающий в Delphi хочу практики ради написать небольшой чистильщик реестра, файлов... ну типа клинера подскажите что конкретно он вообще удалять должен? :D ну про файлы примерно знаю: *.tmp,...
Delphi График, Текстовый редактор https://www.cyberforum.ru/ delphi-beginners/ thread671185.html
Ребята помогите пожалуйста справится с задачей. Напишите программу, которая строит график функции y=tg(x) ПРИМЕЧАНИЕ: Программа должна отображать координатные оси и подписанные значения на этих...
Delphi OnEnter и Система отсчета Всем доброго времени суток. Подскажите, пожалуйста:1) как сделать так, чтобы при нажатии Enter курсор перескакивал допустим из Edit1 в Edit2; 2) можно ли задать свою систему координат (именно в... https://www.cyberforum.ru/ delphi-beginners/ thread671174.html
Delphi Задание в Делфи. Вычислить значение функции.
кто знает как делать? плииииз. не было на первой паре, как раз когда тему объясняли, теперь в непонятках как и что делать((( Вычислить значение функции. Осуществить вывод значений вводимых...
Delphi Сложное сравнение 2-х таблиц Excel Добрового времени суток! Столкнулся казалось бы с довольно банальной но опять же непростой задачей... Казалось бы чего проще сравнить 2 таблицы Excel по какому нибудь полю. Но дело обстоит гораздо... https://www.cyberforum.ru/ delphi-beginners/ thread671092.html
13070 / 5856 / 1705
Регистрация: 19.09.2009
Сообщений: 8,807
15.10.2012, 10:09 0

Столбцы StringGrid'a. Запрет ввода перечня символов в определённых строках и столбцах. - Delphi - Ответ 3562711

15.10.2012, 10:09. Показов 3532. Ответов 3
Метки (Все метки)

Ответ

Такой механизм можно реализовать, например, так. Для TstringGrid нужно определить обработчики событий: OnGetEditText, OnKeyPress, OnSetEditText и оформить их код таким образом:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
implementation
 
{$R *.dfm}
 
const
  //Запрещённые символы.
  D = ['А'..'п', 'р'..'я', 'Ё', 'ё', 'A'..'Z', 'a'..'z'];
  //Перечень индексов проверяемых столбцов и строк.
  DCol = [1, 3];
  DRow = [1, 3];
var
  //Координаты редактируемой ячейки.
  Coord : record
    Col, Row : Integer;
  end;
 
//Событие, возникающее при начале редактирования ячейки.
procedure TForm1.StringGrid1GetEditText(Sender: TObject; ACol,
  ARow: Integer; var Value: String);
begin
  //Запоминаем координаты редактируемой ячейки.
  Coord.Col := ACol;
  Coord.Row := ARow;
end;
 
//Обработка нажатий клавиш.
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  //Если координаты редактируемой ячейки не совпадают с заданными, то выходим.
  if not ( (Coord.Col in DCol) and (Coord.Row in DRow) ) then Exit;
  //Отменяем ввод запрещённых символов.
  if Key in D then Key := #0;
end;
 
//Событие, возникающее при записи очередного символа в ячейку.
//Обрабатывать это событие, в данном случае, нужно для того, чтобы предусмотреть
//случай, когда пользователь выполнил вставку текста в ячейку через буфер обмена.
procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
  ARow: Integer; const Value: String);
var
  Sg : TStringGrid;
  S : String;
  i, j, Len : Integer;
begin
  //Если координаты редактируемой ячейки не совпадают с заданными, то выходим.
  if not ( (Coord.Col in DCol) and (Coord.Row in DRow) ) then Exit;
 
  Sg := Sender as TStringGrid;
  Len := Length(Value);
  SetLength(S, Len);
  //Переписываем в S только разрешённые символы.
  j := 0;
  for i := 1 to Len do
    if not (Value[i] in D) then begin
      Inc(j);
      S[j] := Value[i];
    end;
  //Если S отличается от Value, то записываем значимую часть S в ячейку.
  if j < Len then
    Sg.Cells[ACol, ARow] := Copy(S, 1, j);
end;
 
end.
Этот код запрещает ввод запрещённых символов в ячейки, которые расположены на пересечении заданных строк и столбцов.
Если требуется запретить ввод для целых строк и столбцов (а не только для их пересечений), то условие:
Delphi
1
2
  //Если координаты редактируемой ячейки не совпадают с заданными, то выходим.
  if not ( (Coord.Col in DCol) and (Coord.Row in DRow) ) then Exit;
надо заменить на:
Delphi
1
2
  //Если ячейка не принадлежит заданным столбцам и строкам, то выходим.
  if not ( (Coord.Col in DCol) or (Coord.Row in DRow) ) then Exit;


Вернуться к обсуждению:
Столбцы StringGrid'a. Запрет ввода перечня символов в определённых строках и столбцах. Delphi
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2012, 10:09
Готовые ответы и решения:

Запрет ввода определенных символов в TextBox
Можно ли в каком-то свойстве текстбокса выбрать тип вводимых данных? Т.е., допустим текстбокс нужен...

Запрет ввода определённых символов в scanf
всем привет, я тут впервые так что не пинайте за может глупые на ваш взгляд вопросы. я только...

Запрет ввода в TextBox определенных символов
В общем проблема такая, пол дня уже пытаюсь выполнить небольшое задание... Нужно поставить защиту...

Запрет ввода определенных символов в dataGridView
У меня есть таблица. Хочу чтобы кроме цифр и запятой вводить в ячейки ничего нельзя было. Кто...

3
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.10.2012, 10:09

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Запрет ввода определенных символов в TextBox
Пожалуйста помогите как написат программу чтобы в текстбоксе нельзя было бы ставить 1)ПРОБЕЛ,...

Запрет ввода определенных символов в TextBox
Подскажите пожалуйста как с делать так чтобы при выборе в numericUpDown цифры 2 в textBox можно...

Запрет ввода определенных символов в dbgrid
Добрый вечер! Ввожу данные непосредственно dbgrid, как мне запретить ввод знаков кроме чисел в...

Запрет ввода определенных символов в Edit
Я искал на форуме и в гугле, нашел разные варианты, но не нашел который мне бы подошел... Ведь у...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.