Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Манипуляция словами в TStringGrid

Delphi , Компоненты и Классы , TStringGrid и TDrawGrid

Манипуляция словами в TStringGrid


procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
var
  s: string;
  c: Byte;
begin
  with StringGrid1 do
    s := Cells[Col, Row];
  if Length(s) = 0 then
  begin
    if Key in ['a'..'z'] then
    begin
      c := Ord(Key) - 32;
      Key := Chr(c);
    end;
    exit;
  end;
  if s[Length(s)] = ' ' then
    if Key in ['a'..'z'] then
    begin
      c := Ord(Key) - 32;
      Key := Chr(c);
    end;
end;

В обработчике события onKeyPress сделайте следующее:


if length(field.text) = 0 then
  key := upCase (key);

Here's the translation of the text into Russian:

Код, который вы предоставили, является частью приложения Delphi, которое манипулирует текстом в компоненте TStringGrid при нажатии клавиши.

Обзор кода: 1. Он перехватывает событие нажатия клавиши для TStringGrid. 2. Он проверяет, содержит ли текущая ячейка какой-либо текст. Если нет, то преобразует нажатую клавишу в верхний регистр. 3. Если ячейка уже содержит текст и последняя символ в этом тексте является пробелом, то также преобразует нажатую клавишу в верхний регистр.

Однако, есть проблема с этим кодом. Используется оператор exit, когда выполняется первая условие (ячейка пуста). Это означает, что если ячейка не пуста, но последняя символ в тексте является пробелом и нажатая клавиша - маленькая буква 'a'-'z', то она не будет преобразована в верхний регистр.

Чтобы исправить это, можно удалить оператор exit и применить тот же логик для обоих условий:

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
var
  s: string;
begin
  with StringGrid1 do
    s := Cells[Col, Row];

  if Length(s) = 0 then
    Key := UpCase(Key)
  else
  begin
    if s[Length(s)] = ' ' then
      Key := UpCase(Key);
  end;
end;

Альтернативно, можно использовать свойство Text поля для проверки, содержит ли ячейка какой-либо текст и преобразовать клавишу соответственно:

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
var
  s: string;
begin
  with StringGrid1 do
    s := Cells[Col, Row];

  if Length(field.Text) = 0 then
    Key := UpCase(Key)
end;

Код предполагает, что field - это компонент TEdit или любой другой контрол, который имеет свойство Text.

Процедура TForm1.StringGrid1KeyPress модифицирует символ, вводимый в ячейку TStringGrid, если она пустая или содержит пробел, для автоматического преобразования в заглавное начало.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



:: Главная :: TStringGrid и TDrawGrid ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-19 17:53:24
2024-05-19 20:28:33/0.0054519176483154/2