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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2017, 09:37   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Вставка текста из буфера в позицию курсора, находящегося в DBGrid

Добрый день!
Дано: 2 сетки DBGrid. Из 2 таблицы должно браться текстовое значение и вставляться в ту ячейку 1 таблицы, где находится курсор.
Задача: скопировать текст из выбранной ячейки таблицы №2 в буфер обмена и вставить скопированный текст из буфера обмена в ячейку таблицы №1, в которой включено AllwaysShowEditor и мигает курсор. Вот в это место и должен вставиться текст, т.е. туда, где курсор.

Как это можно сделать?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 06.07.2017, 09:46   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
DBgrid1.SelectColumn.Field.AsString:=Clipboard.AsText;
посмотрел автора, вспомнил его темы
www.programmersforum.ru/showthread.php?t=310179
и понял что нужно нечто большее (работа с "встроенным" редактором).

Код:
TMyGrid(DBGrid1).InplaceEditor.SelText:=ClipBoard.AsText;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 06.07.2017 в 10:00.
evg_m вне форума Ответить с цитированием
Старый 06.07.2017, 10:05   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Код:
DBgrid1.SelectColumn.Field.AsString:=Clipboard.AsText;
посмотрел автора, вспомнил его темы
www.programmersforum.ru/showthread.php?t=310179
и понял что нужно нечто большее (работа с "встроенным" редактором).

Код:
TMyGrid(DBGrid1).InplaceEditor.SelText:=ClipBoard.AsText;
Да, я забыл про свою ту тему и ответы в ней.
Попробую разобраться.

Добавлено
Посмотрел ту тему свою.
Но в ней было другое немного.
В этой же теме я интересуюсь как, имея уже текстовое значение, через буфер обмена вставить в ячейку, которая находится в режиме редактирования.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 06.07.2017 в 10:15.
artemavd вне форума Ответить с цитированием
Старый 06.07.2017, 11:30   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

а ctrl-v пробовал если текст уже в буфере обмена?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.07.2017, 12:15   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
а ctrl-v пробовал если текст уже в буфере обмена?
В том-то и фишка, что мне не надо через комбинацию
Значение ячейки из таблицы №2 я получаю без проблем, его можно занести либо в строковую переменную, либо в Edit.Text, из которого легко скопировать в буфер.
Загвоздка в том, чтобы из буфера вставить значение в ячейку таблицы №1, где мигает курсор.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 06.07.2017, 12:28   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Т.е. проблема в том в какое событие завернуть последний код из #2?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.07.2017, 12:35   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

как, имея уже текстовое значение, через буфер обмена вставить в ячейку
Код:
DBgrid1.SelectColumn.Field.AsString:=Clipboard.AsText;
Код:
DBgrid.SelectField.AsString:=....;
и нам здесь БЕЗ разницы редактируем мы это или нет.
Цитата:
которая находится в режиме редактирования.
главное то, что данная ячейка определяет текущее ПОЛЕ(как колонка) и ЗАПИСЬ(как строка).
мы целиком меняем весь текст в ячейке( в поле данных связанной с данной ячейкой).

P.S. все-таки первый вариант ответа был верен, или все-таки нет?
или вопрос КАК увидеть вновь вставленный текст в этом "окне редактирования" (увидеть измененное значение поля).
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 06.07.2017 в 12:40.
evg_m вне форума Ответить с цитированием
Старый 06.07.2017, 12:37   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Т.е. проблема в том в какое событие завернуть последний код из #2?
Грубо говоря да.
Значение из буфера должно быть вставлено под курсор в таблице №1 при получении фокуса таблицей №1 через
Код:
DBGrid1.SetFocus;
Цитата:
Сообщение от evg_m Посмотреть сообщение
P.S. все-таки первый вариант ответа был верен, или все- таки нет?
Он немного не для моей задачи)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось artemavd; 06.07.2017 в 12:39.
artemavd вне форума Ответить с цитированием
Старый 06.07.2017, 12:46   #9
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Значение из буфера должно быть вставлено под курсор в таблице №1 при получении фокуса таблицей №1 через
DBgrid.SetFocus ---> DBgrid.OnEnter
DBGrid.OnColEnter

может лучше не связываться с "clipboard" copy + "возврат в таблицу" SetFocus
а повесить все это на какую-нибудь кнопку(горячую клавишу), которая сделает "прямой" перенос выделенных данных одной таблицы(одного редактора) в другую таблицу(редактор).
Код:
Dbgrid1..... := DbGrid2.....;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 06.07.2017 в 12:54.
evg_m вне форума Ответить с цитированием
Старый 06.07.2017, 12:54   #10
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
DBgrid.SetFocus ---> DBgrid.OnEnter
DBGrid.OnColEnter
Так эти же события уже сработали, когда я попал в ячейку нужную.
У меня по попаданию в ячейку (когда курсор уже мигает), срабатывает проверка, результат которой может быть отображение таблицы №2 со связанными значениями, выбрав которое и должно вставить на позицию курсора таблицы №1.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка текста из буфера werovulv Microsoft Office Word 4 11.09.2015 07:24
В позицию курсора MyLastHit Общие вопросы Delphi 8 31.08.2010 21:16
Как отловить позицию курсора (|). X,Y Alex Cones Общие вопросы Delphi 9 27.12.2009 20:44
Как узнать позицию курсора в файле? DarkEvil Win Api 3 21.09.2009 00:10
Delphi 7 вставка текста в Richedit в позицию курсора newbee-dust Помощь студентам 3 10.06.2009 12:58