Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-75573
Lotus
2002-01-05 15:27
2002.01.24
Проверка выражения на true/false НУЖНА ПОМОЩЬ!!!


14-75653
NetBreaker666
2001-11-25 20:49
2002.01.24
А что начсет NNTP ??


3-75521
Alexandr
2001-12-21 10:44
2002.01.24
Печать ценников


3-75536
Reals
2001-12-21 19:53
2002.01.24
Определение остановки и запуска MSSQL сервера...


1-75599
Velocity
2002-01-07 07:28
2002.01.24
IntToStr и конечно StrToInt





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский