Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.24;
Скачать: CL | DM;

Вниз

Ячейки в DBGrid   Найти похожие ветки 

 
Mike_ ©   (2001-12-19 16:55) [0]

Подкажите, как поименно обратиться к ячейкам в DBGrid? Не нашел ни свойств Col,Row, RowCount, а Fields[].AsString действует только на выделенный мышью строку...


 
DmitryA ©   (2001-12-19 17:01) [1]

Row - это текущая запись (курсор)
Col - TCustomDBGrid.Columns.Items[x]


 
Mike_ ©   (2001-12-19 17:18) [2]

Спасибо. Но по горизонтали более-менее ясно DBGrid1.FieldCount - 1, а максимальное кол-во строк в таблице? И как достать элемент - ну типа s := Cell[i,j]; э?


 
AlexSV   (2001-12-19 17:50) [3]

В DBGrid эти свойства не публикуемые.
Если есть необходимость, то их можно достать, только для каких целей, если не секрет. Потому что в зависимости от задачи, и реализация будет разной.


 
Mike_ ©   (2001-12-19 18:00) [4]

Конечно не секрет, а военная тайна ;-))) Из удаленной базы данных SQL-запросом извлекается некая инфа, которая по цепи ADOConnection-ADOQuery-DataSet попадают в DBGrid для того чтобы их помотреть - если надо - и сохранить в файл на локальном диске для другого приложения. Вот, примерно так...


 
SergVlad ©   (2001-12-19 18:14) [5]

Вообще-то из DataSet сохранение делать гораздо сподручнее


 
AlexSV   (2001-12-19 18:43) [6]

Вот примерно так:
объявим здесь -
implementation
type
THackGrid = class(TDBGrid)
public
property Col;
property Row;
property DataLink; // Хотя у меня работает и без этого
end;

и далее по тексту:

procedure TForm1.BitBtn1Click(Sender: TObject);
var
hg: THackGrid;
ar, rc, r, c: integer;
begin
hg := THackGrid(DBGrid1);
r := hg.Row;
c := hg.Col;
ar := hg.DataLink.ActiveRecord;
rc := hg.DataLink.RecordCount;
end;

Небольшие пояснения:
hg.Row - текущая строка видимой области (если Grid в середине то Row = 1 это не первая строка набора данных)
hg.Col - текущая солонка видимой области.
(не помню, но кажется фиксированые могут не входить).

Рекомендую для обхода DataSeta при не визуальном просмотре набора данных (не дергается Selection в DBGrid), но для синхронизации необходимо ActiveRecord восстановить.

hg.DataLink.RecordCount;
hg.DataLink.ActiveRecord;

А не проще-ли просто пробежаться по набору без Grid-а?

Если будут вопросы, то ответы завтра.
Пока.


 
SergVlad ©   (2001-12-20 02:20) [7]

<А не проще-ли просто пробежаться по набору без Grid-а?>

О чем и речь.



 
Mike_ ©   (2001-12-20 11:43) [8]

Большое спасибо всем, кто ответил (а ведь мог бы и послать...на WWW ;-) )
Обошелся конструкцией типа
for j:=1 to DBGrid1.DataSource.DataSet.RecordCount do
begin
DBGrid1.DataSource.DataSet.RecNo:=j;
for i := 0 to DBGrid1.DataSource.DataSet.FieldCount - 1 do
begin
Info := DBGrid1.DataSource.DataSet.Fields[i].AsString;
Топик, как я полагаю, закрыт...
ЗЫ А без грида - ну никак не можна... технические условия, млин...




Страницы: 1 вся ветка

Текущий архив: 2002.01.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
1-75603
Leviathan
2001-12-29 02:07
2002.01.24
Активация программы


1-75578
msys
2001-12-21 13:30
2002.01.24
IMAGE


14-75661
VEG
2001-11-27 21:28
2002.01.24
Проблема в XP


4-75718
Serega__2
2001-11-23 15:37
2002.01.24
Синхронизация ScrollBar`ов у двух TCheckListBox


7-75705
Lizard
2001-10-08 21:47
2002.01.24
Как узнать размер файла ?