-
Т.е. rowid тех записей, которые реально отображаются в данный момент.
-
а запросить rowid в селекте слабо? а если запрос - соединение нескольких таблиц или вообще результат работы ХП, которая нагенерила результат из воздуха, а не из таблиц?
-
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 запись в датасет так понятнее?
-
Можно поинтересоваться, какой в этом сакральный смысл?
-
Подстраивать высоту строки под данные
-
> rowid тех записей > мне нужен Recno
ты бы уж определился, это понятия разных категорий
> Ферштейн?объясняю на пальцах:
еще раз - набор данных, показываемый в гриде, НЕ ОБЯЗАН состоять из записей одной таблицы
-
тебе нужен DataLink, в гриде, это фактически "снепшот" данных датасета. т.е. все что в нем с 1 позиции по последнюю то и отображается.
а зачем, это действительно интересно...
-
> Подстраивать высоту строки под данные а вот этого у тебя не выйдет... т.к. твои "подстройки" на количество записей в DataLink мало влияют... это ты в принципе сам должен расчитывать и устанавливать тогда.
-
> вопрос правильно понять слабо?
я телепатор в ремонт сдал, уж больно часто глупые вопросы попадаются, у него катушки перегреваются
-
2Правильный_Вася:
> ты бы уж определился, это понятия разных категорий
Виноват, ввёл в заблуждение. Мне нужен recno датасета. Соотв что там в запросе понаписано - по барабану.
2sniknik: Про "все что в нем с 1 позиции по последнюю то и отображается" - глупость полная. Грид отображает то, что в нём помещается. Если в датасете 500 записей - будут показываться далеко не все. Там справа полоса прокрутки если кто не в курсе. Теперь представь: есть 500 записей в датасете. Я прокрутил грид до середины. У меня в первой записи грида отображается 250-я запись из датасета. Так?
> а вот этого у тебя не выйдет... т.к. твои "подстройки" на > количество записей в DataLink мало влияют... это ты в принципе > сам должен расчитывать и устанавливать тогда.
Очень даже выйдет! Смотри: я знаю, что в 1 строке грида у меня 5 запись датасета. Я смотрю данные в 5 записи датасет, и вижу что мне нужно отображать эти данные в 2 строках. Я делаю 1 строку грида =2 строкам, и всё!
-
2sniknik: > Про "все что в нем с 1 позиции по последнюю то и отображается" - глупость полная. это не глупость это непонимание того что читаеш... > т.е. все что в нем с 1 позиции по последнюю то и отображается. пусть в датасете будет 500 записей, в даталинке будет только 18 (+-) отображаемых.
т.е. это полный ответ на твой вопрос. пусть по глупости (сам написал) и не воспринимаемый...
-
> Я делаю 1 строку грида =2 строкам, и всё! если в даталинке останется 5 то ты попросту "сломаешь" нормальную работу/отображение грида. а количество там по моему (не помню) ридонли проперти.
-
> пусть в датасете будет 500 записей, в даталинке будет только > 18 (+-) отображаемых.
Точняк! То, что надо! Спасибо огромное!
-
> если в даталинке останется 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;
-
> Если в датасете 500 записей - будут показываться далеко не все.
и
> for c:=0 to grid.DataLink.DataSet.RecordCount-1 ... > grid.RowHeights[c]:=...
Мдя... Рано вам ещё, барин (с)
-
> Конечно я ничего в даталинке трогать не собираюсь! вот про то и говорю. и зря не собираешься... раз уж желаешь изменить частично стиль отрисовки должен настроить и то от чего зависит другая, невменяемая тобой часть... иначе будут перекосы. а вот что и как менять, звиняйте не знаю, не "надобилось" ничего подобного, а лезть просто так разбираться лень.
> Я делаю примерно так: > for c:=0 to grid.DataLink.DataSet.RecordCount-1 do begin и пробегаешься по реально всему датасету... тк. DataSet в даталинке это ссылка на него... (выйдет количество записей за размер грида по строкам, будет глюк) и потом, изменение высоты в зависимости от "ширины" строки оно както странновато, не находишь? опять таки интересен смысл действа...
-
> и пробегаешься по реально всему датасету... тк. DataSet > в даталинке это ссылка на него... (выйдет количество записей > за размер грида по строкам, будет глюк)
неверно. если грид ужат до 5 строк - grid.DataLink.DataSet.RecordCount возвращает именно эти 5 строк. > и потом, изменение высоты в зависимости от "ширины" строки > оно както странновато, не находишь? опять таки интересен > смысл действа...
Конечно же я упрощаю! Не от ширины, а от количества переносов строки внутри текста. При выводе на экран делается wordwrap. В итоге получается вот так: http://ipicture.ru/uploads/080306/7U6RPM1cUG.gif > вот про то и говорю. и зря не собираешься... > раз уж желаешь изменить частично стиль отрисовки должен > настроить и то от чего зависит другая, невменяемая тобой > часть... иначе будут перекосы. > а вот что и как менять, звиняйте не знаю, не "надобилось" > ничего подобного, а лезть просто так разбираться лень.
Какие перекосы? Что там настраивать? Зачем? )
-
> > Если в датасете 500 записей - будут показываться далеко > не все. > > и > > > for c:=0 to grid.DataLink.DataSet.RecordCount-1 ... > > grid.RowHeights[c]:=... > > Мдя... > Рано вам ещё, барин (с)
Мне в самый раз, не переживай. Для тех, кто в танке - это не рабочий код, это просто от руки накиданный пример использования.
-
> Какие перекосы? не знаю... но чтото будет обязательно. > Что там настраивать? опять таки не знаю, т.к. не занимался конкретно этим. писал уже. > Зачем? ) а вот зачем знаю. догадываюсь... например при > В итоге получается вот так: http://ipicture.ru/uploads/080306/7U6RPM1cUG.gifв даталинке будет 18 или 19 записей, одной ты занял место 3х, 2 "спрятались" за нижним краем, и что будет если попробовать "проскролировать", мышью или клавишами записи вниз, т.е. подогнать выделение на нижнюю, видимую у тебя сейчас запись и еще вниз? на 2, 3 раза... чтото не так будет (опять таки неохота проверять что), вот для того чтобы от этого избавиться. может конечно тебе повезло, и дядя Борланд подобное надругательство над гридом предусмотрел. но... сомневаюсь...
-
> если грид ужат до 5 строк - grid.DataLink.DataSet.RecordCount > возвращает именно эти 5 строк.
Сорри, это я прогнал похоже. grid.DataLink.RecordCount выдаёт 5 строк, а grid.DataLink.DataSet.RecordCount выдаёт все. Блин ( причём datalink RecordCount выдаёт правильный. А вот список этих строк через него не получить. Значит начинаем ab initio. Вопрос:
Как получить соответствие recno датасета<>rownum грида?
|