1 (edited by Raspr 2023-04-14 04:16:49)

Topic: Замена одного символа другим при вводе с клавиатуры.

При редактировании в TableGrid в числовом поле разделителем должна являться запятая. При работе на нумпаде нужно заморачиваться раскладкой клавиатуры. В связи с чем вопрос: Можно ли как-то "перехватывать" точку и менять ее на запятую при работе в данных полях?

И, чтоб темы не плодить. Если числовое поле пока пустое, при входе в ячейку появляется "0". Есть ли возможность получать пустую ячейку? Или же сразу выделить все содержимое ячейки?

Re: Замена одного символа другим при вводе с клавиатуры.

Raspr wrote:

При редактировании в TableGrid в числовом поле разделителем должна являться запятая. При работе на нумпаде нужно заморачиваться раскладкой клавиатуры. В связи с чем вопрос: Можно ли как-то "перехватывать" точку и менять ее на запятую при работе в данных полях?

И, чтоб темы не плодить. Если числовое поле пока пустое, при входе в ячейку появляется "0". Есть ли возможность получать пустую ячейку? Или же сразу выделить все содержимое ячейки?

используйте замену

Переменная_куда_поместить_результат := ReplaceStr(Переменная_с_исходным_текстом,'.',',');

Re: Замена одного символа другим при вводе с клавиатуры.

Мне же нужно в процессе перехватывать символ. Вошел в ячейку, при попытке ввести "500,2" на английской раскладке я получу "5002".

Re: Замена одного символа другим при вводе с клавиатуры.

Не получится, т.к. в ячейке нет нужных событий.

5 (edited by pavlenko.vladimir.v 2023-04-14 12:19:10)

Re: Замена одного символа другим при вводе с клавиатуры.

Raspr wrote:

Мне же нужно в процессе перехватывать символ. Вошел в ячейку, при попытке ввести "500,2" на английской раскладке я получу "5002".

vovka3003 wrote:

Не получится, т.к. в ячейке нет нужных событий.

В свойства формы установить галочку
KeyPreview
 
события
// вводимую точку меняет на запятую

procedure Form1_TableGrid1_OnKeyPress (Sender: TObject; var Key: Char);
begin
  if Key = '.' then Key := ',';
end;

// при переходе в режим редактирования все точки в ячейке меняются на запятую

procedure Form1_TableGrid1_OnBeforeEdit (Sender: TObject; ACol, ARow: Integer; var Accept: Boolean);
begin
  Form1.TableGrid1.Cells[ACol,ARow] := ReplaceStr(Form1.TableGrid1.Cells[ACol,ARow],'.',',');
end;

Re: Замена одного символа другим при вводе с клавиатуры.

pavlenko.vladimir.v wrote:
vovka3003 wrote:

Не получится, т.к. в ячейке нет нужных событий.

// при переходе в режим редактирования все точки в ячейке меняются на запятую

Вопрос звучал: "как это сделать не через задницу"...

Re: Замена одного символа другим при вводе с клавиатуры.

pavlenko.vladimir.v wrote:

события
// вводимую точку меняет на запятую

Спасибо! Я пробовал аналогичный вариант. Он работает для текстового поля, но не для поля "Деньги".

Re: Замена одного символа другим при вводе с клавиатуры.

Raspr wrote:

Спасибо! Я пробовал аналогичный вариант. Он работает для текстового поля, но не для поля "Деньги".

В поле деньги не возможно поставить точку.
Редактируемая ячейка не принимает точку вовсе.
Вы точно используете поле деньги?

Re: Замена одного символа другим при вводе с клавиатуры.

pavlenko.vladimir.v wrote:

Вы точно используете поле деньги?

Точно. В том-то и дело. Если вводить в текстовое поле в форме - проблемы не возникает как с ".", так и с ",". Ставится сама. Проблема при редактирование ячейки в TableGrid.

p.s. Со мной можно "ты".

Re: Замена одного символа другим при вводе с клавиатуры.

Для всей формы и ячеек

Post's attachments

Attachment icon curr.zip 324.83 kb, 95 downloads since 2023-04-14 

11 (edited by Raspr 2023-04-14 19:37:52)

Re: Замена одного символа другим при вводе с клавиатуры.

sparrow wrote:

Для всей формы и ячеек

Спасибо, но это сильно жесткое решение. )) Однако, работает.

Re: Замена одного символа другим при вводе с клавиатуры.

Опять же, чтоб не плодить темы. Не нашел пока способ вычистить ячейку при редактировании в TableGrid (поле деньги) до ввода. Этот "0" по умолчанию портит жизнь при оперативном вводе.
Может кто-то сталкивался?

Re: Замена одного символа другим при вводе с клавиатуры.

http://myvisualdatabase.com/help_ru/pro … tions.html

Re: Замена одного символа другим при вводе с клавиатуры.

Супер! Благодарю!