|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
|
Реализация через PopupMenu функций copy and paste в DrawGrid14.03.2016, 13:06. Показов 3230. Ответов 42
Метки нет (Все метки)
Доброго дня! Встала задача реализовать данный сабж в пределах одного DrawGrid. При выделение одной, а еще лучше диапазона ячеек. В голову приходит некий еще один, временный DrawGrid (промежуточный хранитель). Как это правильно реализовать вообще? Может есть пример где - не найти. Спасибо.
0
|
|
| 14.03.2016, 13:06 | |
|
Ответы с готовыми решениями:
42
Реализация Copy/Paste Copy >> Paste Copy/Paste |
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
|
| 14.03.2016, 23:37 [ТС] | |
|
Огромное спасибо. Все получилось! GridData у меня уже был оказываетя, только в другой переменной) Оставалось заносить в него изменения(заполнять новые данныев соотв. члены массива) и перерисовывать. Спасибо!
Добавлено через 12 минут Одна только осталась проблема - у меня изначально свойство goRangeSelect стоит false и все это не работало. Поставив его в true все заработало, но перестало выделять по коду некоторые вещи(желтым по периметру например выделенные ячейки) Как то можно побороть?
0
|
|
|
Супер-модератор
|
||||||
| 15.03.2016, 00:32 | ||||||
|
Для того, чтобы сделать тот функционал, который у тебя был - нужно как минимум видеть, что именно было. В частности, никто не мешает по OnMouseUp грида (после того, как выбор ячеек закончен) отрисовать это самое выделение выбранных ячеек по периметру:
1
|
||||||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
||||||||||||||||
| 15.03.2016, 10:06 [ТС] | ||||||||||||||||
|
Там проблема есть в том, что DrawGrid1->Selection , я так понял, позволяет выделить прямоугольную область и с ней работать.
У меня выделение работает таким образом, что можно выделить например всю нулевую строку и например 5 ячеек первой строки.Есть переменная int Grid1SelectCell[20][10]; (DrawGrid1 20 на 10) В DrawGrid1SelectCell
Добавлено через 7 минут Пробую в циклах проходить copy paste меняя DrawGrid1->Selection на пложение ячейки, если Grid1SelectCell[i][j] != 0 , но пока как то не то. Добавлено через 7 часов 12 минут вот так написал - вроде работает. в DrawGrid1DrawCell
но мне это не совсем подходит(
0
|
||||||||||||||||
|
Супер-модератор
|
|
| 15.03.2016, 10:17 | |
|
Каким образом у тебя происходило выделение ячеек, расскажи? То есть, дословно: вот нужно тебе выбрать ячейки от предпоследней в нулевой строке до третьей в первой строке, что ты делал для этого? Просто поодиночке щелкал по ячейкам с каким-нибудь Ctrl-ом зажатым?
Сам понимаешь, чтобы копировать ячейки, они должны быть выбраны либо подряд (построчно, дошел до конца строки - начинаешь следующую с начала), либо прямоугольником. Все остальные варианты (выбрать несколько ячеек в первом ряду, потом еще несколько в третьем, и еще в седьмом ряду парочку) довольно сложны для реализации, да и не представляю, зачем это может понадобиться. Поэтому могу предложить вариант: при клике и протягивании мыши с зажатым Shift-ом выбирать последовательно клетки от той, на которой был изначальный клик до той, над которой мышь отпустили, при клике и протягивании с зажатым Ctrl-ом выбирать ячейки так же, как они выбираются при goRangeSelect = true, то есть, в виде прямоугольника. А потом, когда выбран пункт меню Paste, вставлять так, как я показал выше, начиная от выбранной ячейки и сколько было запомнено. Если тебя такой вариант устроит - чуть позже набросаю проект, как это реализовать (не очень хочется делать, если оно тебе изначально не подходит)
1
|
|
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
|||||||
| 15.03.2016, 10:48 [ТС] | |||||||
|
Единственный вопрос - возможно ли сделать copy paste не через DrawGrid1->Selection У меня при нажатой левой кнопки мыши и елозанью мышью по гриду в DrawGrid1SelectCell заполняется массив интовый 20 на 10 Grid1SelectCell[ACol][ARow]=1 при выборе ячеек. Далее он используется много где, в том числе и для подсветки выделенных ячеек. Теперь задача определить(задать) TGridRect sel Я пробую делать для copy вместо TGridRect sel = DrawGrid1->Selection; что то типа
смысл всего этого - оставить goRangeSelect = 0
0
|
|||||||
|
Супер-модератор
|
||||||
| 15.03.2016, 11:04 | ||||||
|
Сделал вот так:
Потом из этих двух TPoint-ов запросто собирается TRect, если нужно.
1
|
||||||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
|
| 15.03.2016, 11:21 [ТС] | |
|
0
|
|
|
Супер-модератор
|
||||||
| 15.03.2016, 11:24 | ||||||
|
А чего там кидать-то? Все уже сделано, осталось только подставить нужную TRect вместо Selection
1
|
||||||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
|||||||||||||||||
| 15.03.2016, 11:41 [ТС] | |||||||||||||||||
|
да, все пашет.поставил уже
а чем отличается
Добавлено через 11 минут
0
|
|||||||||||||||||
|
Супер-модератор
|
||
| 15.03.2016, 11:48 | ||
|
1
|
||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
||||||
| 15.03.2016, 11:52 [ТС] | ||||||
|
чегото не понятно..не узнает в paste переменной
0
|
||||||
|
Супер-модератор
|
|||||||||||||
| 15.03.2016, 12:03 | |||||||||||||
1
|
|||||||||||||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
||||||||
| 15.03.2016, 12:10 [ТС] | ||||||||
|
код на paste
[BCC32 Error] Unit1.cpp(11971): E2316 'Left' is not a member of 'TPoint'
0
|
||||||||
|
Супер-модератор
|
||||||
| 15.03.2016, 12:55 | ||||||
|
Ну да. Вот что значит создавать код прямо тут, в редакторе форума. Поправь:
1
|
||||||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
||
| 15.03.2016, 13:00 [ТС] | ||
|
А можно при paste присваивать нужным Grid1SelectCell единицы, начиная с места вставки?
0
|
||
|
Супер-модератор
|
||||||
| 15.03.2016, 13:04 | ||||||
|
Ну, так там же, где заполняешь CurrDevImageFllename, по тем же координатам выставляй единицы в Grid1SelectCell
1
|
||||||
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
|
| 16.03.2016, 13:33 [ТС] | |
|
Спасибо, все работает.
Добавлено через 23 часа 0 минут Еще такой вопросик - а можно сделать, что бы если попадало на выделенную ячейку (Grid1SelectCell[A][B] == 1), снимался признак, то есть становилось Grid1SelectCell[A][B] = 0 ?
0
|
|
|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
|
| 16.03.2016, 13:43 [ТС] | |
|
выделении ячеек. я веду по гриду мышью - например в нулевой строке - с 0 по 10 ячейку выделил, потом передумал и на две влево сдвинул мышь. По типу, как при Selection чтобы работало. Если это конечно реально.
0
|
|
|
Супер-модератор
|
|
| 16.03.2016, 13:56 | |
|
Проблема вся в том, что ты вообще не рассказал, как у тебя тот массив Grid1SelectCell заполняется 1-цами, вот когда расскажешь, где именно (в каком событии, при каких условиях) происходит его заполнение - тогда можно будет что-то советовать.
Не верю, что просто по OnMouseMove проверяется признак "кнопка мыши зажата", и если да, то для ячейки, над которой находится мышь, выставляется 1 в Grid1SelectCell.
1
|
|
| 16.03.2016, 13:56 | |
|
Copy-Paste VIM RichTextBox и Copy/Paste Запрет на copy/paste Не работает Copy\paste
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|