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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2017, 10:05   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Передать вводимый текст в ячейку DBGrid

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

Цитата:
Да, я знаю, что DBGrid не содержит данные, отображает и блабла. Мне и не надо это.
осталось продолжить, данные на самом деле хранятся в полях(TField) ассоциированного набора данных (DataSet).
и туда же заносятся в случае их редактирования. (DataSource.OnDataChange ???)
Код:
Dbgrid.SelectedColumn.Field.Text \Value \....
в случае DataSource.OnDataChange он сам сообщает изменяемое поле
Код:
type TDataChangeEvent = procedure(Sender: TObject; Field: TField) of object;
правда при этом надо как-то различать "источники изменений"
- "обычная" загрузка данных
- собственно редактирование DataSource.State =dbEdit ???
программа — запись алгоритма на языке понятном транслятору

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

Цитата:
Сообщение от evg_m Посмотреть сообщение
в случае DataSource.OnDataChange он сам сообщает изменяемое поле
Код:

type TDataChangeEvent = procedure(Sender: TObject; Field: TField) of object;
Да я пробовал в это событие, не получилось что-то...
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 22.06.2017, 11:04   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Да я пробовал в это событие, не получилось что-то...
Да возможно, и скорее всего, данное событие будет только раз, в КОНЦЕ редактирования.
Для постоянного "контроля" наверное подойдет
Цитата:
TDBGrid -> TcustomGrid
property InplaceEditor: TInplaceEdit;

TInplaceEdit is not a data-aware control, but can work with a data-aware grid such as TDBGrid, allowing the grid to fetch or post the text, and allowing the grid to impose a mask to limit the text of the edit control to data that is valid.
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 22.06.2017, 11:49   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Только события подходящего нет, нужно с сообщениями разбираться. А так показывает, но только текст до нажатия клавиши
Код:
type TMyGrid = Class(TDBGrid);

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if Assigned(TMyGrid(DBGrid1).InplaceEditor) then Edit1.Text:=TMyGrid(DBGrid1).InplaceEditor.Text;
end;
ADD А так нормуль:
Код:
const MY_TESTMESSAGE = WM_USER+1;
type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    ...
  private
    procedure MYTESTMESSAGE(var Message: TMessage); message MY_TESTMESSAGE;
    ...
  end;

...

type TMyGrid = Class(TDBGrid);

procedure TForm1.MYTESTMESSAGE(var Message: TMessage);
begin
  if Assigned(TMyGrid(DBGrid1).InplaceEditor) then Edit1.Text:=TMyGrid(DBGrid1).InplaceEditor.Text;
end;

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  PostMessage(Handle,MY_TESTMESSAGE,0,0);
end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 22.06.2017 в 12:21.
Аватар вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Db grid передать данные в нужную конкретную ячейку Armageddets Помощь студентам 2 25.01.2015 14:08
Как привязать вводимый символ к строке? Erlotaza Общие вопросы Delphi 9 20.02.2012 22:50
Передать данные из Excelя в DBGrid. santaIsAbsent БД в Delphi 0 14.09.2010 10:48
Вставка рисунка в ячейку DBGrid Aleksandr Компоненты Delphi 5 25.06.2007 16:25