Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2012, 01:34   #1
York
Пользователь
 
Регистрация: 23.02.2012
Сообщений: 25
По умолчанию Выделение нескольких ячеек

Здраствуйте,
Возникла проблема. Дело в том, что почитав мануалы про StringGrid, я узнал что выделение нескольких ячеек(как в Екселе, тоесть четырехугольником. Именно не строки, а произвольный четырехугольник) при включенном goEditing невозможно. Но однако и видел что данные проблемы решались, также видел на примере живой программы. Суть в том что мне нужно выделить произвольную область ячеек одной таблицы и перенести(скопировать и вставить) их в другую область ячеек таблицы. Прошу вашей помощи, как это реализовать?
York вне форума Ответить с цитированием
Старый 23.02.2012, 04:51   #2
microbit
Форумчанин
 
Аватар для microbit
 
Регистрация: 26.09.2011
Сообщений: 176
По умолчанию

попробуйте реализовать редактирование по двойному клику, включая и отключая свойство goEditing, или попробуйте отслеживать движение мыши при нажатии кнопки, то есть пользователь нажал кнопку и начал движение мышью, вы отслеживаете начальное положение и конечное и выделяете.
microbit вне форума Ответить с цитированием
Старый 23.02.2012, 11:12   #3
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

Поставьте в опциях для таблицы изначально goEditing - false, goDrawFocusSelected - true, goRangeSelect - true и выделяйте в таблице любую область. Что бы оставить возможность редактирования, запишите в обработчиках__
Код:
void __fastcall TForm1::StringGrid1DblClick(TObject *Sender)
  {        StringGrid1->Options<<goEditing;   }

void __fastcall TForm1::StringGrid1Click(TObject *Sender)
  {        StringGrid1->Options>>goEditing;   }
- по двойному щелчку в таблице режим редактирование вернется; а по щелчку отключится, и снова можно выбирать зону. Для программной обработки выбранной зоны используйте
Код:
(StringGrid1->Selection.Top)
- Top - это верхняя выбранная строка. Нижняя - Bottom, левая колонка - Left, а правая соотв. - Right.
nick42 вне форума Ответить с цитированием
Старый 23.02.2012, 13:22   #4
York
Пользователь
 
Регистрация: 23.02.2012
Сообщений: 25
По умолчанию

Спасибо за ответы, щас буду пробывать.
York вне форума Ответить с цитированием
Старый 23.02.2012, 14:13   #5
York
Пользователь
 
Регистрация: 23.02.2012
Сообщений: 25
По умолчанию

а если я захочу скопировать и вставить эту область в другую область, как быть?
York вне форума Ответить с цитированием
Старый 23.02.2012, 15:32   #6
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

Делайте сдвоенный цикл; чего непонятно-то?
Код:
for(..   tablSource->Cells[ ..Selection.Left+i][..Selection.Top+j]  -->
           tablTarget->Cells[C+i][R+j]
nick42 вне форума Ответить с цитированием
Старый 23.02.2012, 16:54   #7
York
Пользователь
 
Регистрация: 23.02.2012
Сообщений: 25
По умолчанию

Контактные данные есть какие-то? Был бы признателен если бы объяснили он-лайн
York вне форума Ответить с цитированием
Старый 23.02.2012, 18:18   #8
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

On mail.ru-agent address
nick42 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
выделение нескольких ячеек в VBA tohdom Microsoft Office Excel 22 27.06.2012 05:48
Выделение ячеек ZHDN Microsoft Office Excel 4 17.11.2011 10:35
ListView выделение нескольких элементов без Ctrl fezilk25 Общие вопросы Delphi 6 01.08.2011 07:16
StringGrid - выделение нескольких ячеек 6AZblJlb Общие вопросы Delphi 3 26.11.2010 22:48
выделение нескольких строк цветов в iwdbgrid multidron1 БД в Delphi 0 19.10.2010 12:40