Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Количество строк в DBGrid [D4, IB5.x]


Alex Freeman ©   (2002-10-25 14:31:00) 

Как можно узнать, сколько строк выведено в данный момент в DBGrid? Если можно, с примером!


vic_vm   (2002-10-26 14:17:00) [1]

Вот куски из моего собственного компонента
type
TExtDBGrid = class(TDBGrid)
protected
function GetGrid_Info : TGridDrawInfo;
public
constructor Create(AOwner: TComponent); override;
property Grid_Info : TGridDrawInfo read GetGrid_Info;
end;
.............................

implementation

constructor TExtDBGrid.Create(AOwner: TComponent);
begin
inherited;
end;

function TExtDBGrid.GetGrid_Info : TGridDrawInfo;
begin
CalcDrawInfo(Result);
end;


И вот что ты можешь получить
ExtDBGrid1: TExtDBGrid;
.............
ExtDBGrid1.Grid_Info.Vert.LastFullVisibleCell;
ExtDBGrid1.Grid_Info.Vert.GridCellCount;
и еще некоторые вкусности.
CalcDrawInfo - стандартная процедура Delphi
находящееся в protected какого-то из предков


Johnmen   (2002-10-25 16:47:00) [2]

TMyGrid = class(TDBGrid);
....

Количество видимых строк в DBGrid :
TMyGrid(DBGrid1).RowCount-1;




Darts   (2002-10-25 16:26:00) [3]

Да, и надо выкинуть высоту шапки, высоту горизонтального скроллбара, чтобы придти к цели. Как-то все слишком сложно.

А можно ли подобраться, используя высоту фонта грида + поправку на пару пикселов по высоте?


Darts   (2002-10-25 16:23:00) [4]

> MsGuns

Оригинальный метод. Юзер должен попотеть, выполняя такую работу. Он может просто подсчитать вслух про себя строки. ;-)

Если не ошмбаюсь, высота строки - protected? Тогда проще наследовать данный грид.


MsGuns   (2002-10-25 16:03:00) [5]

>Darts (25.10.02 15:57)

Почему же ? Прекрасно работает ! Просто для этого юзеру надо выделить (аккуратно, чтоб не съехал ползун) ВСЕ видимые строки и нажать кнопку, которую надо положить на форму и заодно написать к ней обработчик 8)


Darts   (2002-10-25 15:57:00) [6]

> Delirium

Не работает.


Delirium   (2002-10-25 15:42:00) [7]

DBGrid1.SelectedRows.Count


Johnmen   (2002-10-25 15:40:00) [8]

>MsGuns © (25.10.02 15:30)

Неск.месяцев назад был очень понравившийся мне ответ.
Если вспомню (надо поковыряться в исходниках), то скажу.
:)))))))))0


Darts   (2002-10-25 15:34:00) [9]

Наверное, приблизительно так, если число записей > числа видимых строк
VisibleRows := DBGrid1.Height div Row.Height,

где Row.Height - высота строки грида.


MsGuns   (2002-10-25 15:30:00) [10]

>Johnmen © (25.10.02 15:24)

Я понял так же. И мне также интересно узнать решение этой проблемы. Пока я знал только про один метод - через канву, но он довольно муторный и мне не нравится.


Johnmen   (2002-10-25 15:24:00) [11]

Я понимаю вопрос, как количество видимых строк в dbGrid.
А как автор ?


Anatoly Podgoretsky   (2002-10-25 15:02:00) [12]

Как минимум RecordCount содержит уже количество отффеченных срок к данному моменту, а может здесь вообще имеется ввиду количество видимых строк в dbGrid, а может еще что


stone   (2002-10-25 15:00:00) [13]

> Johnmen ©
что значит в данный момент?
Датасет содержит фильтры? или есть другие условия?


Johnmen   (2002-10-25 14:55:00) [14]

>stone © (25.10.02 14:35)

Повнимательней... >сколько строк выведено в данный момен...

>Alex Freeman

Был такой вопрос...Вот только ответ сходу не приведу....


stone   (2002-10-25 14:35:00) [15]

DBGrid служит для работы с датасетом. Поэтому количество строк в гриде равно количеству строк в датасете т.е.

Table1.RecordCount


Наверх

Титульная страница Поиск, карта сайта Написать письмо