Конференция "Базы" » Как можно узнать, какие строки показываются в DBGRID [D5]
 
  • Rax (06.03.08 16:57) [0]
    Т.е. rowid тех записей, которые реально отображаются в данный момент.
  • Правильный_Вася (06.03.08 17:05) [1]
    а запросить rowid  в селекте слабо?
    а если запрос - соединение нескольких таблиц или вообще результат работы ХП, которая нагенерила результат из воздуха, а не из таблиц?
  • Rax (06.03.08 17:14) [2]
    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 запись в датасет
    так понятнее?
  • Johnmen © (06.03.08 17:31) [3]
    Можно поинтересоваться, какой в этом сакральный смысл?
  • Rax (06.03.08 17:39) [4]
    Подстраивать высоту строки под данные
  • Правильный_Вася (06.03.08 17:40) [5]

    >  rowid тех записей
    > мне нужен Recno

    ты бы уж определился, это понятия разных категорий

    > Ферштейн?объясняю на пальцах:

    еще раз - набор данных, показываемый в гриде, НЕ ОБЯЗАН состоять из записей одной таблицы
  • sniknik © (06.03.08 17:41) [6]
    тебе нужен DataLink, в гриде, это фактически "снепшот" данных датасета. т.е. все что в нем с 1 позиции по последнюю то и отображается.

    а зачем, это действительно интересно...
  • sniknik © (06.03.08 17:43) [7]
    > Подстраивать высоту строки под данные
    а вот этого у тебя не выйдет... т.к. твои "подстройки" на количество записей в DataLink мало влияют... это ты в принципе сам должен расчитывать и устанавливать тогда.
  • Правильный_Вася (06.03.08 17:44) [8]

    > вопрос правильно понять слабо?

    я телепатор в ремонт сдал, уж больно часто глупые вопросы попадаются, у него катушки перегреваются
  • Rax (06.03.08 17:57) [9]
    2Правильный_Вася:

    > ты бы уж определился, это понятия разных категорий

    Виноват, ввёл в заблуждение.
    Мне нужен recno датасета. Соотв что там в запросе понаписано - по барабану.

    2sniknik:
    Про "все что в нем с 1 позиции по последнюю то и отображается" - глупость полная. Грид отображает то, что в нём помещается. Если в датасете 500 записей - будут показываться далеко не все. Там справа полоса прокрутки если кто не в курсе.
    Теперь представь: есть 500 записей в датасете. Я прокрутил грид до середины. У меня в первой записи грида отображается 250-я запись из датасета. Так?


    > а вот этого у тебя не выйдет... т.к. твои "подстройки" на
    > количество записей в DataLink мало влияют... это ты в принципе
    > сам должен расчитывать и устанавливать тогда.

    Очень даже выйдет!
    Смотри: я знаю, что в 1 строке грида у меня 5 запись датасета. Я смотрю данные в 5 записи датасет, и вижу что мне нужно отображать эти данные в 2 строках. Я делаю 1 строку грида =2 строкам, и всё!
  • sniknik © (06.03.08 18:04) [10]
    2sniknik:
    > Про "все что в нем с 1 позиции по последнюю то и отображается" - глупость полная.
    это не глупость это непонимание того что читаеш...
    > т.е. все что в нем с 1 позиции по последнюю то и отображается.
    пусть в датасете будет 500 записей, в даталинке будет только 18 (+-) отображаемых.

    т.е. это полный ответ на твой вопрос. пусть по глупости (сам написал) и не воспринимаемый...
  • sniknik © (06.03.08 18:06) [11]
    > Я делаю 1 строку грида =2 строкам, и всё!
    если в даталинке останется 5 то ты попросту "сломаешь" нормальную работу/отображение грида. а количество там по моему (не помню) ридонли проперти.
  • Rax (06.03.08 18:12) [12]

    > пусть в датасете будет 500 записей, в даталинке будет только
    > 18 (+-) отображаемых.

    Точняк! То, что надо! Спасибо огромное!
  • Rax (06.03.08 18:37) [13]

    > если в даталинке останется 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;

  • Johnmen © (06.03.08 19:41) [14]

    > Если в датасете 500 записей - будут показываться далеко не все.

    и

    > for c:=0 to grid.DataLink.DataSet.RecordCount-1 ...
    > grid.RowHeights[c]:=...

    Мдя...
    Рано вам ещё, барин (с)
  • sniknik © (06.03.08 19:48) [15]
    > Конечно я ничего в даталинке трогать не собираюсь!
    вот про то и говорю. и зря не собираешься...
    раз уж желаешь изменить частично стиль отрисовки должен настроить и то от чего зависит другая, невменяемая тобой часть... иначе будут перекосы.
    а вот что и как менять, звиняйте не знаю, не "надобилось" ничего подобного, а лезть просто так разбираться лень.

    > Я делаю примерно так:
    >   for c:=0 to grid.DataLink.DataSet.RecordCount-1 do begin
    и пробегаешься по реально всему датасету... тк. DataSet в даталинке это ссылка на него... (выйдет количество записей за размер грида по строкам, будет глюк)
    и потом, изменение высоты в зависимости от "ширины" строки оно както странновато, не находишь? опять таки интересен смысл действа...
  • Rax (06.03.08 20:14) [16]

    > и пробегаешься по реально всему датасету... тк. DataSet
    > в даталинке это ссылка на него... (выйдет количество записей
    > за размер грида по строкам, будет глюк)

    неверно. если грид ужат до 5 строк - grid.DataLink.DataSet.RecordCount возвращает именно эти 5 строк.


    > и потом, изменение высоты в зависимости от "ширины" строки
    > оно както странновато, не находишь? опять таки интересен
    > смысл действа...

    Конечно же я упрощаю! Не от ширины, а от количества переносов строки внутри текста. При выводе на экран делается wordwrap.
    В итоге получается вот так: http://ipicture.ru/uploads/080306/7U6RPM1cUG.gif


    > вот про то и говорю. и зря не собираешься...
    > раз уж желаешь изменить частично стиль отрисовки должен
    > настроить и то от чего зависит другая, невменяемая тобой
    > часть... иначе будут перекосы.
    > а вот что и как менять, звиняйте не знаю, не "надобилось"
    > ничего подобного, а лезть просто так разбираться лень.

    Какие перекосы? Что там настраивать? Зачем? )
  • Rax (06.03.08 20:15) [17]

    > > Если в датасете 500 записей - будут показываться далеко
    > не все.
    >
    > и
    >
    > > for c:=0 to grid.DataLink.DataSet.RecordCount-1 ...
    > > grid.RowHeights[c]:=...
    >
    > Мдя...
    > Рано вам ещё, барин (с)

    Мне в самый раз, не переживай.
    Для тех, кто в танке - это не рабочий код, это просто от руки накиданный пример использования.
  • sniknik © (06.03.08 20:27) [18]
    > Какие перекосы?
    не знаю... но чтото будет обязательно.

    > Что там настраивать?
    опять таки не знаю, т.к. не занимался конкретно этим. писал уже.

    > Зачем? )
    а вот зачем знаю. догадываюсь... например при  
    > В итоге получается вот так: http://ipicture.ru/uploads/080306/7U6RPM1cUG.gif
    в даталинке будет 18 или 19 записей, одной ты занял место 3х, 2 "спрятались" за нижним краем, и что будет если попробовать "проскролировать", мышью или клавишами записи вниз, т.е. подогнать выделение на нижнюю, видимую у тебя сейчас запись и еще вниз? на 2, 3 раза... чтото не так будет (опять таки неохота проверять что), вот для того чтобы от этого избавиться.
    может конечно тебе повезло, и дядя Борланд подобное надругательство над гридом предусмотрел. но... сомневаюсь...
  • Rax (06.03.08 20:34) [19]

    > если грид ужат до 5 строк - grid.DataLink.DataSet.RecordCount
    > возвращает именно эти 5 строк.

    Сорри, это я прогнал похоже. grid.DataLink.RecordCount выдаёт 5 строк, а grid.DataLink.DataSet.RecordCount выдаёт все. Блин (
    причём datalink RecordCount выдаёт правильный. А вот список этих строк через него не получить.
    Значит начинаем ab initio.
    Вопрос:

    Как получить соответствие recno датасета<>rownum грида?
 
Конференция "Базы" » Как можно узнать, какие строки показываются в DBGRID [D5]
Есть новые Нет новых   [134431   +15][b:0][p:0.001]