Выберите поле из 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