|
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
|
|
Реализация через PopupMenu функций copy and paste в DrawGrid14.03.2016, 13:06. Показов 3262. Ответов 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
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|