TStringGrid - перехват изменения текста ячейки

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

TStringGrid - перехват изменения текста ячейки

Сообщение Awkward » 16.01.2020 18:42:47

Когда я жму Ctrl-C на ячейке или группе ячеек, они не только заносятся в буфер обмена, но и вызывают перехватчик OnCellProcess. А вот если после этого я пытаюсь вставить их через Ctrl-V, данный перехват не срабатывает. Насколько я понимаю, т.к. ЛСЛ пытается копировать содержимое не только текстом, но и в виде HTML, а при вставке разметки данный перехватчик не вызывается, только для обычного текста.
Есть ли какой-то нормальный способ всё же отслеживать эти изменения? По идее, т.к. ячейки заполняются по одной, должно что-то вызываться, но я совсем запутался с обработчиками, похоже, и не соображу никак, как это сделать.
Помогите, плиз.
(Задача-то - скопировать несколько ячеек из одного столбца и вставить в другой, при этом занося инфу и в "связанный" мой массив)
Awkward
новенький
 
Сообщения: 43
Зарегистрирован: 19.01.2017 00:06:47

Re: TStringGrid - перехват изменения текста ячейки

Сообщение sign » 17.01.2020 12:42:09

Awkward писал(а):Когда я жму Ctrl-C на ячейке или группе ячеек

Каких ячеек?

А увидел.

1.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
sign
энтузиаст
 
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Re: TStringGrid - перехват изменения текста ячейки

Сообщение Awkward » 17.01.2020 15:27:06

Ну, это хорошо для назначения одной ячейке, такое я и делал себе. А суть в том, что если выделить в столбце несколько ячеек, скопировать по Ctrl-C, а потом вставлять по Ctrl-V в другом столбце (даже если выделив несколько ячеек), то OnCellProcess не вызывается. Т.е. мы можем перехватить спокойно назначаемый текст в целом, но т.к. вставляться будет HTML-код, мы не получим простой способ перехвата в цикле назначения отдельных значений каждой ячейке.
Awkward
новенький
 
Сообщения: 43
Зарегистрирован: 19.01.2017 00:06:47

Re: TStringGrid - перехват изменения текста ячейки

Сообщение vada » 17.01.2020 17:35:27

Я с этим бился в свое время. Толком не получилось.
Напрочь закрыл всяческие Ctrl-V, и только через контекстное меню.
А по теме, не знаю как сделать.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: TStringGrid - перехват изменения текста ячейки

Сообщение Awkward » 17.01.2020 18:45:24

Ну, образец в Grids.pas самом же есть, как исправить, но патч для LCL делать и посылать... а можно как-то попроще?
Awkward
новенький
 
Сообщения: 43
Зарегистрирован: 19.01.2017 00:06:47

Re: TStringGrid - перехват изменения текста ячейки

Сообщение LearnMagic » 19.01.2020 22:46:32

Awkward писал(а):Ну, образец в Grids.pas самом же есть, как исправить, но патч для LCL делать и посылать... а можно как-то попроще?

Исправляете Grid.pas и пересобираете Lazarus. Желательно сохранить оригинальный файл, чтобы при следующем обновлении Lazarus мучительно не вспоминать, что же было изменено
LearnMagic
новенький
 
Сообщения: 66
Зарегистрирован: 10.11.2016 23:13:38


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25

Рейтинг@Mail.ru