Форум: "Базы";
Текущий архив: 2002.01.24;
Скачать: [xml.tar.bz2];
ВнизЯчейки в 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c