Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 19.05.2011
Сообщений: 89
1

Реализация Copy/Paste

23.05.2011, 22:18. Показов 2250. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!!!!!

уважаемые форумчане подскажите кто как реализует copy/paste??????

Есть грид, в нем можно выделять несколько строк. Я хочу реализовать копирование этих строк и потом вставку их, не обязательно в этот же набор данных.

Посоветуйте как лучше сделать?????
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2011, 22:18
Ответы с готовыми решениями:

Copy/Cut/Paste в DbGrid
такая тема, создал базу данных, сделал все самое основное, а вот с 3 вопросами разобраться не могу!...

Не работает процедура Copy File
Доброго времени суток! Помогите пожалуйста! Я пишу: CopyFile(PChar(puty_pic),PChar(put),false);...

команда подобная команде Copy в MS-DOS
При закрытии формы нужно скопировать определенный файл из одной папки в другую. Вопрос: имеется ли...

Реализация через PopupMenu функций copy and paste в DrawGrid
Доброго дня! Встала задача реализовать данный сабж в пределах одного DrawGrid. При выделение одной,...

7
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
24.05.2011, 05:49 2
Если вы умеете вделять строки, вы, полагаю, знаете, что коллекция указателей на выделенные строки хранится в свойстве DBGrid.SelectedRows. При этом позиционирование на выделенную i - ю выделенной строку можно выполнить так
Delphi
1
DBGrid.DataSource.DataSet.GotoBookmark(pointer(DBGrid.SelectedRows.Items[i]);
Здесь i может изменяться на множестве 0...DBGrid.SelectedRows.Count-1, где DBGrid.SelectedRows.Count - количество выделенных строк.
Если вы программно исполнили позицонирование на i - ю строку грида, то перенести данные строки в другой набор (таблицу) - дело техники.
0
0 / 0 / 0
Регистрация: 19.05.2011
Сообщений: 89
24.05.2011, 09:25  [ТС] 3
Цитата Сообщение от SAMZ Посмотреть сообщение
Если вы программно исполнили позицонирование на i - ю строку грида, то перенести данные строки в другой набор (таблицу) - дело техники.
Как раз вот эту технику и хочется понять, как лучше делать использовать промежуточный датасет или стандартными методами винды с какими-то маркерами... какой способ наиболее оптимальный и универсальный????

Хорошо, сейчас мне надо организовать копирование данных в таблицу с такой же структурой, а если понадобится просто скопированные данные использовать в другом месте...
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,255
24.05.2011, 11:18 4
Если предполагать, что вы используете компонеты доступа BDE (на чем на самом деле вы работаете не известно), то я бы это делал через TQuery. В свойстве SQL прописываем вставку новой записи
SQL
1
2
INSERT INTO SomeTabel (Field1, Field2, ... FieldN)
VALUES(:PARAM1, :PARAM2,...,:PARAMN)
Здесь Field1, Field2, ... FieldN имена копируемых полей
Перед исполнением этого запроса параметрам задаются значения из текущей записи копируемого датасета.
После исполнения датасет, в котором отображаются вставленные записи необходимо обновить (переоткрыть).
Если используете другие срадства доступа к данным, то компонента будет другой, но реализация мало изменится. Влзможно придется после исполнения коммитить тразакцию, в контексте которой производилассь вставка, но это зависит от СУБД и библиотеки доступа к данным!
1
0 / 0 / 0
Регистрация: 19.05.2011
Сообщений: 89
24.05.2011, 14:07  [ТС] 5
я использую Access. Компоненты ADO-шные. Имеется ввиду что хочется в приложении это делать, не используя запросы...

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

Добавлено через 1 час 34 минуты
к тому же не исключается возможность, скопировать данные и в этот же детеил и вставить потом изменив какие-нибудь данные
0
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
24.05.2011, 15:41 6
Ту же тенологию, что описал SAMZ, можно повторить без "великих и ужасных" запросов, используя для целевой таблицы TADOTable. Тогда вместо запроса у Вас будет примерно такой код:

Delphi
1
2
3
4
5
TargetADOTable.Insert;
TargetADOTable.FieldByName('Field1').Value := SourceADOTable.FieldByName('Field1').Value;
TargetADOTable.FieldByName('Field2').Value := SourceADOTable.FieldByName('Field2').Value;
   ...
TargetADOTable.Post;
Но по большому счету Мастер Вам правильно советует и бояться "запросов" не нужно ибо не бывает в наше время программистов-базовиков, умеющих писать "базовые" программы без "запросов"
1
0 / 0 / 0
Регистрация: 19.05.2011
Сообщений: 89
24.05.2011, 17:53  [ТС] 7
Дело не в боязни запросов...

Просто во-первых когда идет копирование не известно еще куда будут вставляться данные (в детеил нового мастера или того же)

Во-вторых при использовании запросов невозможны откаты, а если пользователь передумал вставлять то что вставил, например...
0
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
24.05.2011, 17:55 8
>Во-вторых при использовании запросов невозможны откаты, а если пользователь передумал >вставлять то что вставил, например...

Вы будете удивлены, но первое сделать много проще, чем второе
0
24.05.2011, 17:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2011, 17:55
Помогаю со студенческими работами здесь

Copy/Paste
доброго! вот у меня тут возник такой вопрос: 1.Сopy 2.Paste итак вот вопросы 1.Как сделать...

Copy >> Paste
Тянет ли копи паст под низкочастотники? Не в ту категорию пост запихал ( Как исправить?

Не работает Copy\paste
Доброго времени суток. Не ожидал что увижу такое... в базе не работает Copy\Paste Посмотрел...

Copy-Paste VIM
Как выделить и сделать копи-пейст?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru