Главная страница
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.013 c
1-75620
EViruS
2002-01-01 11:26
2002.01.24
Ищу компонент Delphi 6


6-75639
krimer
2001-11-02 16:35
2002.01.24
console server


14-75683
IvanIvanov
2001-11-27 22:44
2002.01.24
Может здесь кто знает?????


6-75635
Dmitry V. Averuanov
2001-11-02 15:42
2002.01.24
Мучительный вопрос:


3-75472
Дмитрий Демиденков
2001-12-18 10:39
2002.01.24
Как прописать источник данных ODBC программно?