Текущий архив: 2005.03.20;
Скачать: CL | DM;
Вниз
Скроллинг в DBGrid Найти похожие ветки
← →
Shizuku © (2005-02-11 12:21) [0]В некоторые из строк DbGrid сохранены достаточно длинные строки, которые не влазят целиком на экран. Как добавить в DBGrid горизонтальный скролинг?
← →
msguns © (2005-02-11 12:35) [1]Расширить соотв. колонку грида
Если текст очень длинный, то, ИМХО, проще повесить окно (StayOnTop), где его отображать (например, как TDBMemo)
Юзер может переместить окно куда ему угодно или вообще закрыть.
← →
Ega23 © (2005-02-11 12:45) [2]AFAIK, стандартный TQuery всё, что больше 255 символов - считает BLOB"ом. По крайней мере мне не удавалось такие строки в грид впихнуть.
Ну а самое главное - для пользователя это серьёзное неудобство такие строки читать.
Если ты неприменно хочешь, чтобы это поле данных обязательно отображалось в гриде, то заведи "сокращённое" поле, допутим, 50 символов от исходного. И показывай уже его. А если нужно будет посмотреть всё поле целиком - делай, как msguns © посоветовал.
Я бы сделал именно так.
← →
Shizuku © (2005-02-11 12:49) [3]У меня эта таблица одна на всю форму, а форма открывается в полноэкранном режиме
BorderStyle := bsNone;
//FormStyle := fsStayOnTop;
Left := 0;
Top := 0;
Height := Screen.Height;
Width := Screen.Width;
Плюс скрывается панель задач. И всё равно строчка целиком не видна. Расширить колонку? Так ведь не все строчки длинные... Разве что отлавливать размер самых-самых, но это сложно. Да, если даже расширить, то просто часть колонки уйдёт за границу экрана. Нужна линейка прокрутки.
← →
ЮЮ © (2005-02-11 12:53) [4]>Да, если даже расширить, то просто часть колонки уйдёт за границу экрана.
В этом случае и линейка прокрутки не поможет, т.к. при дальнейшем скроллинге будет просто переход к следующему столбцу. Склоллинг, когда слева грида не начало столбца в гриде невозможен
← →
Shizuku © (2005-02-11 12:55) [5]to EGA23>Приложение работает целиком на ibx-компонентах, без использования BDE.
← →
Sergey13 © (2005-02-11 13:02) [6]2 [5] Shizuku © (11.02.05 12:55)
Ты ответы читаешь? В [1] и [2] все написано. При чем тут " на ibx-компонентах, без использования BDE"?
← →
Shizuku © (2005-02-11 13:04) [7]to Yuuuu> У меня в DBGrid справа, есть скрытый столбец. Когда я установила его свойство Visible в True, то появилась строка прокрутки. Но этот столбец нужен мне скрытым, он используется при построении запросов и иной смысловой нагрузки не несёт.
← →
Shizuku © (2005-02-11 13:07) [8]to Sergey13> Конечно читаю! Поэтому и пишу. Это намёк на то, что я использую не TQuery, а TIBQuery.
← →
Danilka © (2005-02-11 13:07) [9][2] Ega23 © (11.02.05 12:45)
Можно и без отдельного поля, запросом с substr и три точки на конце. :))
[6] Sergey13 © (11.02.05 13:02)
Оффтопик.
Ветку про удаление из двух таблиц прикрыли не успел туда написать. Есть варианты без промежуточных таблиц, например, для Орокла:
begin
for i in (
select t1.x1
from t1, t2
where t1.x1 = t2.x1)
loop
delete from t1 where x1 = i.x1;
delete from t2 where x1 = i.x1;
end loop;
end;
Наверняка, для других серверов тоже можно что-то придумать. :)
← →
Sergey13 © (2005-02-11 13:09) [10]2[9] Danilka © (11.02.05 13:07)
Для Оракла. Там вроде МДБ стоит.
← →
ЮЮ © (2005-02-11 13:11) [11]Смотри внимательно ЮЮ © (11.02.05 12:53) [4]
В гриде принципиально нельзя просмотреть строку шире ширены грида
← →
Sergey13 © (2005-02-11 13:15) [12]2[9] Danilka © (11.02.05 13:07)
Уж еще поофтопчу, сори.
То-же самое и на делфи легко сделать. Выбрал ИД-шники и хлопай в цикле.
Сори еще раз.
← →
Ega23 © (2005-02-11 13:19) [13]Можно и без отдельного поля, запросом с substr и три точки на конце. :))
Ну это я и имел ввиду. В самом запросе поле дополнительное ввести...
← →
Shizuku © (2005-02-11 13:20) [14]to Yuuuu> А если принудительно установить ширину грида в MyForm.Width + 1 скажем?
← →
Danilka © (2005-02-11 13:22) [15]<offtopic>
[10] Sergey13 © (11.02.05 13:09)
тады, ой, не заметил. :) а из дельфей можно конечно, но как-то не кошерно лишнее на клиента тащить.
</offtopic>
[13] Ega23 © (11.02.05 13:19)
> В самом запросе поле дополнительное ввести...
Понятно, что-то я туплю. :)
← →
ЮЮ © (2005-02-11 13:26) [16]> А если принудительно установить ширину грида в MyForm.Width + 1 скажем?
Тогда скроллинг появится у формы :) Тогда уж лучше положить Grid на ScrollBox, установив ему такую ширину, чтобы вмещались все столбцы, независимо от их ширины. Тогда, наверное, можно будеть лицезреть столбец грида не с самого начала.
← →
Ega23 © (2005-02-11 13:31) [17]Тогда скроллинг появится у формы :) Тогда уж лучше положить Grid на ScrollBox, установив ему такую ширину, чтобы вмещались все столбцы, независимо от их ширины. Тогда, наверное, можно будеть лицезреть столбец грида не с самого начала.
Сколько с клиентами не общался - никто и никогда на такой столбец не смотрел (типа, туда возможное сообщение об ошибке выводилось). Когда я просил сказать, что в этом столбце отписывается - мне отвечали: "А там непонятно нихрена. Неудобно.", после чего я пересмотрел пользовательский интерфейс.
← →
Карелин Артем © (2005-02-11 13:48) [18]А может вписывать расширить строку вглубь? Переносы сделать с пределах одной ячейки к примеру?
← →
msguns © (2005-02-11 14:18) [19]>Ega23 © (11.02.05 12:45) [2]
>По крайней мере мне не удавалось такие строки в грид впихнуть.
OnGetText филду и там Text := Copy(Fields[0].AsString,1,x)
>Shizuku © (11.02.05 12:21)
Вы сами когда-нибудь работали с таким гридом, где строка длинною в пять экранов. Это ж, извините, издевательство над пользователем.
Если уж так сильно пригорело показывать весь текст сразу, то показывайте его в ячейке несколькими строками. А вообще рассказали бы для общего развития что за задача перед Вами стоит, что за инфу вы показываете в гриде ? Может там гнойник в самой БД, типа коряво спроектирована.
ЗЫ. Представляю, какое будет уродище, если сделать-таки грид на 3 экрана вширь, а длинных строк будет процентов 10. Это что ж будет в телевизоре - "туман, туман, седая пелена" ? В смысле белый весь ;))
← →
msguns © (2005-02-11 14:19) [20]>Ega23 © (11.02.05 12:45) [2]
>По крайней мере мне не удавалось такие строки в грид впихнуть.
OnGetText филду и там Text := Copy(Fields[0].AsString,1,x)
>Shizuku © (11.02.05 12:21)
Вы сами когда-нибудь работали с таким гридом, где строка длинною в пять экранов. Это ж, извините, издевательство над пользователем.
Если уж так сильно пригорело показывать весь текст сразу, то показывайте его в ячейке несколькими строками. А вообще рассказали бы для общего развития что за задача перед Вами стоит, что за инфу вы показываете в гриде ? Может там гнойник в самой БД, типа коряво спроектирована.
ЗЫ. Представляю, какое будет уродище, если сделать-таки грид на 3 экрана вширь, а длинных строк будет процентов 10. Это что ж будет в телевизоре - "туман, туман, седая пелена" ? В смысле белый весь ;))
← →
Shizuku © (2005-02-11 14:55) [21]to msguns>
Задача стоит в разработке базы тестов по психологии. Проблемный грид отображает таблицу с вариантами ответов на очередной тест. Максимальная длина поля под текст ответа пока не превышает 125 символов, но заказчик предпочитает использовать читобельный шрифт среднего размера (10-12).
До пяти экранов, думаю, не дойдёт ^_^
← →
Sergey13 © (2005-02-11 15:05) [22]Ну поставь себе EhLib-овский грид. Там можно в несколько строк выводить без дополнительного прораммирования.
http://www.ehlib.com/RUS/default.htm
← →
Shizuku © (2005-02-11 15:10) [23]У меня пользователь использует строки этой таблицы как пункты меню-списка, т.е. выделяет правильные ответы и жмёт "Далее". Многострочность одной строки этому не помешает?
← →
Danilka © (2005-02-11 15:18) [24][23] Shizuku © (11.02.05 15:10)
Нет
← →
Sergey13 © (2005-02-11 15:19) [25]2[23] Shizuku © (11.02.05 15:10)
> Многострочность одной строки этому не помешает?
Ты меня спрашиваешь? Откуда я знаю чего у тебя там кто использует. Попробуй. По моему не помешает. В накладе уж точно не останешься.
← →
msguns © (2005-02-11 16:25) [26]"Я так и зналь !" (с) Опухоль не в гриде и даже не в базе ;)))
← →
Shizuku © (2005-02-11 18:18) [27]to Sergey13>EhLib
Чем там эту многострочность включить? Пробовала включить WordWrap у столбца - так не помогло.
← →
Anatoly Podgoretsky © (2005-02-11 20:41) [28]ЮЮ © (11.02.05 13:11) [11]
Может, надо просто ставть в ячейку, щелкнуть и гуляй по всей строке как хочешь. Но все равно не удобно.
← →
Anatoly Podgoretsky © (2005-02-11 20:44) [29]Это еще ему везет, что Интербейс, а вот с ADO и MSSQL можно размахнуться на 8000 символов, такое количество поместится только на экране 1600*1200 мелким шрифтом, для информации на странице А4 обычно помещается 4000-5000 символов.
← →
ЮЮ © (2005-02-14 03:55) [30]>Пробовала включить WordWrap у столбца - так не помогло
DbGridEh.RowLines установи 2 или более
← →
Некто (2005-02-14 12:25) [31]делал я как-то тестовою оболочку, использовал TDBCtrlGrid
делал наспех, поэтому получилось не очень красиво, но можно всё было сделать юзабельным :о)
← →
Shizuku © (2005-02-17 14:44) [32]to Yuuuu> Arigato, помогло.
А можно сделать, чтобы автоматически определялась потребность в n-ом количестве строк (AutoRowLines)?
← →
ЮЮ © (2005-02-18 04:17) [33]>А можно сделать, чтобы автоматически определялась потребность в n-ом количестве строк
Для этого надо просканировать весь датасет и просчтать максимальную высоту ячейки, включив флаг DT_CALCRECT в вызываемую функцию рисования DrawTextEx, исходя из которого и DefaulRowHeight определить это число.
Страницы: 1 вся ветка
Текущий архив: 2005.03.20;
Скачать: CL | DM;
Память: 0.53 MB
Время: 0.024 c