![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как можно узнать, какие строки показываются в DBGRID [D5]
Rax © (2008-03-06 16:57:00)Т.е. rowid тех записей, которые реально отображаются в данный момент.
Rax (2008-03-06 20:14:00) [21]
> и пробегаешься по реально всему датасету... тк. DataSet
> в даталинке это ссылка на него... (выйдет количество записей
> за размер грида по строкам, будет глюк)
неверно. если грид ужат до 5 строк - grid.DataLink.DataSet.RecordCount возвращает именно эти 5 строк.
> и потом, изменение высоты в зависимости от "ширины" строки
> оно както странновато, не находишь? опять таки интересен
> смысл действа...
Конечно же я упрощаю! Не от ширины, а от количества переносов строки внутри текста. При выводе на экран делается wordwrap.
В итоге получается вот так: http://ipicture.ru/uploads/080306/7U6RPM1cUG.gif
> вот про то и говорю. и зря не собираешься...
> раз уж желаешь изменить частично стиль отрисовки должен
> настроить и то от чего зависит другая, невменяемая тобой
> часть... иначе будут перекосы.
> а вот что и как менять, звиняйте не знаю, не "надобилось"
> ничего подобного, а лезть просто так разбираться лень.
Какие перекосы? Что там настраивать? Зачем? )
sniknik (2008-03-06 19:48:00) [22]> Конечно я ничего в даталинке трогать не собираюсь!
вот про то и говорю. и зря не собираешься...
раз уж желаешь изменить частично стиль отрисовки должен настроить и то от чего зависит другая, невменяемая тобой часть... иначе будут перекосы.
а вот что и как менять, звиняйте не знаю, не "надобилось" ничего подобного, а лезть просто так разбираться лень.
> Я делаю примерно так:
> for c:=0 to grid.DataLink.DataSet.RecordCount-1 do begin
и пробегаешься по реально всему датасету... тк. DataSet в даталинке это ссылка на него... (выйдет количество записей за размер грида по строкам, будет глюк)
и потом, изменение высоты в зависимости от "ширины" строки оно както странновато, не находишь? опять таки интересен смысл действа...
Johnmen (2008-03-06 19:41:00) [23]
> Если в датасете 500 записей - будут показываться далеко не все.
и
> for c:=0 to grid.DataLink.DataSet.RecordCount-1 ...
> grid.RowHeights[c]:=...
Мдя...
Рано вам ещё, барин (с)
Rax (2008-03-06 18:37:00) [24]
> если в даталинке останется 5 то ты попросту "сломаешь" нормальную
> работу/отображение грида. а количество там по моему (не
> помню) ридонли проперти.
Конечно я ничего в даталинке трогать не собираюсь!
Я делаю примерно так:
for c:=0 to grid.DataLink.DataSet.RecordCount-1 do begin
if length(grid.DataLink.DataSet.FieldByName('field').AsString)>100 then
grid.RowHeights[c]:=grid.RowHeight*5;
end;
Rax (2008-03-06 18:12:00) [25]
> пусть в датасете будет 500 записей, в даталинке будет только
> 18 (+-) отображаемых.
Точняк! То, что надо! Спасибо огромное!
sniknik (2008-03-06 18:06:00) [26]> Я делаю 1 строку грида =2 строкам, и всё!
если в даталинке останется 5 то ты попросту "сломаешь" нормальную работу/отображение грида. а количество там по моему (не помню) ридонли проперти.
sniknik (2008-03-06 18:04:00) [27]2sniknik:
> Про "все что в нем с 1 позиции по последнюю то и отображается" - глупость полная.
это не глупость это непонимание того что читаеш...
> т.е . все что в немс 1 позиции по последнюю то и отображается.
пусть в датасете будет 500 записей, в даталинке будет только 18 (+-) отображаемых.
т.е. это полный ответ на твой вопрос. пусть по глупости (сам написал) и не воспринимаемый...
Rax (2008-03-06 17:57:00) [28]2Правильный_Вася:
> ты бы уж определился, это понятия разных категорий
Виноват, ввёл в заблуждение.
Мне нужен recno датасета. Соотв что там в запросе понаписано - по барабану.
2sniknik:
Про "все что в нем с 1 позиции по последнюю то и отображается" - глупость полная. Грид отображает то, что в нём помещается. Если в датасете 500 записей - будут показываться далеко не все. Там справа полоса прокрутки если кто не в курсе.
Теперь представь: есть 500 записей в датасете. Я прокрутил грид до середины. У меня в первой записи грида отображается 250-я запись из датасета. Так?
> а вот этого у тебя не выйдет... т.к. твои "подстройки" на
> количество записей в DataLink мало влияют... это ты в принципе
> сам должен расчитывать и устанавливать тогда.
Очень даже выйдет!
Смотри: я знаю, что в 1 строке грида у меня 5 запись датасета. Я смотрю данные в 5 записи датасет, и вижу что мне нужно отображать эти данные в 2 строках. Я делаю 1 строку грида =2 строкам, и всё!
Правильный_Вася (2008-03-06 17:44:00) [29]
> вопрос правильно понять слабо?
я телепатор в ремонт сдал, уж больно часто глупые вопросы попадаются, у него катушки перегреваются
sniknik (2008-03-06 17:43:00) [30]> Подстраивать высоту строки под данные
а вот этого у тебя не выйдет... т.к. твои "подстройки" на количество записей в DataLink мало влияют... это ты в принципе сам должен расчитывать и устанавливать тогда.
sniknik (2008-03-06 17:41:00) [31]тебе нужен DataLink, в гриде, это фактически "снепшот" данных датасета. т.е. все что в нем с 1 позиции по последнюю то и отображается.
а зачем, это действительно интересно...
Правильный_Вася (2008-03-06 17:40:00) [32]
> rowid тех записей
> мне нужен Recno
ты бы уж определился, это понятия разных категорий
> Ферштейн?объясняю на пальцах:
еще раз - набор данных, показываемый в гриде, НЕ ОБЯЗАН состоять из записей одной таблицы
Rax (2008-03-06 17:39:00) [33]Подстраивать высоту строки под данные
Johnmen (2008-03-06 17:31:00) [34]Можно поинтересоваться, какой в этом сакральный смысл?
Rax (2008-03-06 17:14:00) [35]2Правильный_Вася:
вопрос правильно понять слабо?
мне нужен Recno ТОЛЬКО ТЕХ ЗАПИСЕЙ, КОТОРЫЕ В ДАННЫЙ МОМЕНТ ВИДНЫ В ГРИДЕ. Ферштейн?
объясняю на пальцах:
у меня есть выборка
1
2
3
4
5
6
это записи в Dataset, 6 штук
Но в гриде видны только со 2 по 5:
2
3
4
5
т.е. в первой строке грида отображается запись №2, в последней - №5.
Вот мне нужно получить это соответствие
1 строка грида = 2 запись в датасет
2 строка грида = 3 запись в датасет
3 строка грида = 4 запись в датасет
4 строка грида = 5 запись в датасет
так понятнее?
Правильный_Вася (2008-03-06 17:05:00) [36]а запросить rowid в селекте слабо?
а если запрос - соединение нескольких таблиц или вообще результат работы ХП, которая нагенерила результат из воздуха, а не из таблиц?