Выберите поле из dbgrid

У меня есть DBGrid, который связан с источником данных (который связан с TADOTable). Все это проходит через TADOConnection и подключается к MS Access

Сетка содержит различные значения, и я хотел бы редактировать ее, когда нажимаю на определенное поле. У меня нет проблем с обновлением обычных текстовых полей, однако я не могу найти способ редактировать поля, содержащие объект OLE.

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

Как бы я поступил так?

1 ответ

Решение

Сам разобрался. Размещать это здесь, чтобы другие могли извлечь выгоду. Я просто пошел в свой DBGrid и в инспекторе объектов, в разделе событий, я выбрал OnCellClick:

procedure TfrmOne.dbgOneCellClick(Column: TColumn);
begin
var
  line : integer;
begin
  line := DataSource1.DataSet.FieldValues['ID'];

Как видите, строка получает значение поля выбранной строки, в данном случае идентификатор. Каждая строка имеет свой уникальный идентификатор (первичный ключ), связывающий / исходящий из базы данных. С этим первичным ключом я сделал простое утверждение IF:

tblOne.Close;
tblOne.Open;
tblOne.First
while not tblOne.Eof do
if tblOne['ID'] = line then
begin
 if OpenDialog1.Execute then
  {*Insert Code here*}
 Exit;
end else
 tblOne.Next;
end;

В основном то, что происходит во втором фрагменте кода, - это идентификатор, соответствующий текущей строке таблицы. Если это не совпадает, база данных перемещается на одну строку, пока это в конечном счете не будет совпадением. Отсюда можно специально работать с этой строкой (как изначально было видно / выбрано в DBGrid) и обновлять поля (объект OLE).

Это не замена для команды "Добавить" или "Редактировать", она просто позволяет пользователю выполнить opendialog, а затем сохранить эти файлы в выбранном поле в DBGrid. Обратите внимание, что для добавления фотографий в базу данных (jpeg) вам понадобятся потоки блобов и т. Д. Полное руководство можно найти здесь: http://delphi.about.com/od/database/l/aa030601a.htm

Другие вопросы по тегам