DBGrid: Как получить содержимое колонки N в текущей строке

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

DBGrid: Как получить содержимое колонки N в текущей строке

Сообщение ESC » 05.09.2007 13:09:33

Собственно, уже сутки пытаюсь получить содержимое колонки N в текущей строке по событию DBGrid1CellClick.
Просьба сильно не пинать, так как поиск ничего не дал, а Lazarus, FPC, да и Object Pascal в первый раз я увидел только позавчера.

Если не сложно, ткните, пожалуйста, носом, в какое свойство чего надо заглянуть.
ESC
незнакомец
 
Сообщения: 6
Зарегистрирован: 04.09.2007 17:44:52

Сообщение alexs » 05.09.2007 13:37:15

в первую очередь - почиать теорию работы с БД из delphi - без этого никак
потом смотреть функцию в наборе данных, к которому подлючен DBGrid - FieldByName
и т.д.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение Browny » 05.09.2007 14:00:01

Например, вот такой код:

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
Label1.Caption:= Column.Field.DataSet.FieldByName(Column.Field.FieldName).AsString;
end;

Но будет работать только с учетом того, что при CellClick будет сдвигаться соответственно курсор связанного DataSet'а.
Аватара пользователя
Browny
новенький
 
Сообщения: 37
Зарегистрирован: 31.08.2007 10:42:55

Сообщение v-t-l » 05.09.2007 14:18:49

Если именно по щелчку мыши, то
Код: Выделить всё
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
  Label1.Caption := Column.Field.AsString;
end;

А если вообще при перемещении по DBGrid, то например так
Код: Выделить всё
procedure TForm1.Dbf1AfterScroll(DataSet: TDataSet);
begin
  if DBGrid1.SelectedField <> nil then
    Label1.Caption := DBGrid1.SelectedField.AsString;
end;

procedure TForm1.DBGrid1ColEnter(Sender: TObject);
begin
  Dbf1AfterScroll(nil);
end;
v-t-l
энтузиаст
 
Сообщения: 734
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение ESC » 05.09.2007 14:36:29

>> почиать теорию работы с БД из delphi

линком в меня не кинете?
гуглевание ничего толкового не дало...
ESC
незнакомец
 
Сообщения: 6
Зарегистрирован: 04.09.2007 17:44:52

Сообщение alexs » 05.09.2007 15:56:57

http://www.delphiplus.org/
а оттуда по линкам можно найти
если совсем начинающий - то в первую очередь надо выучить pascal (язык программирования)
и если плаинируется работать долго и серьёзно - то лучше всего купить хороший букварь с описанием иерархи классов, примерами типовых задач.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение ESC » 05.09.2007 16:51:25

Вроде бы нашел выход: через Sqlite3Dataset1.FieldValues['имя_поля']

Но вылезла другая проблема: все компилится без ошибок и предупреждений, запускается, а далее, при работе с DBGrid, происходит такая фишка - если кликать мышом только в первую строку, на которой курсор стоит по умолчанию, то все прекрасно работает, события обрабатываются и жизнь кажется прекрасной. Но стоит только попытаться перейти на другую строку (независимо от того, мышь при этом используется, или клавиатура), программа вываливается с воплем "Unknown Runtime Error: 202".

В чем может быть баг?
Или нужно писать вручную навигацию по гриду?
ESC
незнакомец
 
Сообщения: 6
Зарегистрирован: 04.09.2007 17:44:52

Сообщение alexs » 05.09.2007 20:45:11

что ты хочеш сделать?
просто обработать клик мышки погриду или вывести текущее значение поля при перемещении курора по гриду?
вобщем специально сделал комплексны пример - забери файл с адреса
http://alexs75.narod.ru/fpc/other/demo_db.zip
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4060
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 45

Рейтинг@Mail.ru