Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Настройка DBGrid

3.6K
18 сентября 2004 года
justinX
49 / / 28.07.2004
есть у меня DBGrid с данными (колонки и строки).
И в одной из ячеек данные достаточно большой длины (ну не помешаются на экране). А я хочу чтоб они помешались в половину экрана. Для этого видимо нужен какой-то перенос по словам или определённый формат ячейки. Возможно ли такое сделать вообще? и как тогда это сделать?? Спасибы за внимание!
368
18 сентября 2004 года
rostyslav
629 / / 13.07.2004
Ты смотрел компонент DBCtrlGrid? (палитра DataControls)
3.6K
19 сентября 2004 года
justinX
49 / / 28.07.2004
Цитата:
Originally posted by rostyslav
Ты смотрел компонент DBCtrlGrid? (палитра DataControls)



Посмотрел, но не нашол того шо мне нада :(
А где ты там такую функцию видел? Как с ячейками работать?

368
19 сентября 2004 года
rostyslav
629 / / 13.07.2004
Цитата:
Originally posted by justinX

Посмотрел, но не нашол того шо мне нада :(
А где ты там такую функцию видел? Как с ячейками
работать?


Это не функция. DBMemo переносит слова автоматически. На DBCtrlGrid можно поместить несколько DBEdit/DBText и один DBMemo.

23K
30 мая 2007 года
FataLL
24 / / 10.05.2007
Цитата: justinX
есть у меня DBGrid с данными (колонки и строки).
И в одной из ячеек данные достаточно большой длины (ну не помешаются на экране). А я хочу чтоб они помешались в половину экрана. Для этого видимо нужен какой-то перенос по словам или определённый формат ячейки. Возможно ли такое сделать вообще? и как тогда это сделать?? Спасибы за внимание!


Интересно, решил проблему? Скажу более, что в DBGridEh, например, можно задать RowLines, а в свойстве колонки поставить WordWrap=true; однако... Это изменит все строки грида... Кто-нибудь сталкивался ли с таким компонентом, который мог бы "расширять" только те строки, в которых не умещается информация? Что-то я так и не разобрался, делает ли это DBGridEh?

10
30 мая 2007 года
Freeman
3.2K / / 06.03.2004
Цитата: FataLL
Кто-нибудь сталкивался ли с таким компонентом, который мог бы "расширять" только те строки, в которых не умещается информация?


Есть ещё у TDBGridEh свойство MemoLines (точно не помню), но это, кажется, не то.

Цитата: FataLL
Что-то я так и не разобрался, делает ли это DBGridEh?


Попробуй событие OnGetXXXParams (Cell, Line - что есть).

23K
31 мая 2007 года
FataLL
24 / / 10.05.2007
Посмотрел. По крайней мере, в моей версии
Код:
void __fastcall TForm1::DBGridEh1GetCellParams(TObject *Sender,
      TColumnEh *Column, TFont *AFont, TColor &Background,
      TGridDrawState State)
{

}
void __fastcall TForm1::DBGridEh1DrawColumnCell(TObject *Sender,
      const TRect &Rect, int DataCol, TColumnEh *Column,
      TGridDrawState State)
{

}
void __fastcall TForm1::DBGridEh1DrawDataCell(TObject *Sender,
      const TRect &Rect, TField *Field, TGridDrawState State)
{

}

Rect, который хотелось бы изменить, идёт как константа. А вот свойство DBGridEh->OptionsEh имеет dghFitRowHeightToText. Название уж слишком говорит за себя. Пробовал устанавливать в true - результат нулевой, т.е., строки остаются одинакового размера, независимо от длины текста. Кто знает, как это работает и работает ли вообще?
10
31 мая 2007 года
Freeman
3.2K / / 06.03.2004
Цитата: FataLL
Rect, который хотелось бы изменить, идёт как константа. А вот свойство DBGridEh->OptionsEh имеет dghFitRowHeightToText. Название уж слишком говорит за себя. Пробовал устанавливать в true - результат нулевой, т.е., строки остаются одинакового размера, независимо от длины текста. Кто знает, как это работает и работает ли вообще?


Вот чем не приходилось пользоваться - так этим. Никогда подобной задачи не стояло. Единственно что, могу посоветовать обновиться до последней версии EhLib. Почитай хотя бы в ReadMe, может есть там что-то про этот флаг.

23K
01 июня 2007 года
FataLL
24 / / 10.05.2007
Цитата: Freeman
Вот чем не приходилось пользоваться - так этим. Никогда подобной задачи не стояло.


Странно. Тогда поставим вопрос по другому. Кто и как ухитряется сделать так, чтобы текст в гриде возможно было прочитать, даже если ширина колонки этого не позволяет?

10
01 июня 2007 года
Freeman
3.2K / / 06.03.2004
Цитата: FataLL
Кто и как ухитряется сделать так, чтобы текст в гриде возможно было прочитать, даже если ширина колонки этого не позволяет?


Пытаемся переформулировать задачу. Задача грида - отображать данные обзорно. Полностью данные отображаются, если их не так много. Длинные строки мало подходят для вывода в грид, тем более, с возможностью редактирования.

16K
01 июня 2007 года
Djony
40 / / 28.04.2007
Цитата: Freeman
Пытаемся переформулировать задачу. Задача грида - отображать данные обзорно. Полностью данные отображаются, если их не так много. Длинные строки мало подходят для вывода в грид, тем более, с возможностью редактирования.



Если так то можно использовать два варианта:
1 - узнаешь длинну текста, путем перевода ее в кол-во пикселей,
и затем расширяешь я чейку до этого размера;
2 - показываешь текст не полностью,либо при наведении на текст у тебя появляется подсказка, в которой ты отображаешь текст, либо на форму пихаешь Edit и после передачи фокуса на ячейку в Edit выводишь текст и там правишь после чего передаешь инфу в ячейку.

23K
01 июня 2007 года
FataLL
24 / / 10.05.2007
Цитата: Djony
Если так то можно использовать два варианта:
1 - узнаешь длинну текста, путем перевода ее в кол-во пикселей,
и затем расширяешь я чейку до этого размера;


Есть мысли, как это сделать?

Цитата: Djony
2 - показываешь текст не полностью,либо при наведении на текст у тебя появляется подсказка, в которой ты отображаешь текст, либо на форму пихаешь Edit и после передачи фокуса на ячейку в Edit выводишь текст и там правишь после чего передаешь инфу в ячейку.


У меня так и сделано. А надо, чтобы текст был виден всегда. И редактировать мне его не надо, только отображать...

10
01 июня 2007 года
Freeman
3.2K / / 06.03.2004
Цитата: Djony
2 - показываешь текст не полностью,либо при наведении на текст у тебя появляется подсказка, в которой ты отображаешь текст, либо на форму пихаешь Edit и после передачи фокуса на ячейку в Edit выводишь текст и там правишь после чего передаешь инфу в ячейку.


Если не было альтернатив, мы делами именно так. Пользовались, правда, TDBEdit или аналогами.

16K
02 июня 2007 года
Djony
40 / / 28.04.2007
Цитата: Freeman
Если не было альтернатив, мы делами именно так. Пользовались, правда, TDBEdit или аналогами.



Компонент принципально не важен, важна идея.

А как провернуть первый вариант скоро напишу до дома дойду

16K
02 июня 2007 года
Djony
40 / / 28.04.2007
Цитата: FataLL
Есть мысли, как это сделать?



вот тебе пример,

int a=Canvas->TextWidth(Edit1->Text)+5;
StringGrid1->DefaultColWidth=a;

в данном случаетолько на один раз, в своем варианте изменяешь Edit1->Text на свою переменную ставишь цикл чтобы просматривал все ячейки ищешь среди полученных длин максимум, после чего приравниваешь к StringGrid1->DefaultColWidth
+5 поставлено для красоты

23K
03 июня 2007 года
FataLL
24 / / 10.05.2007
Идея ясна. Только, опять же, изменится высота всех строчек. У меня есть ячейки буквально с парой слов, а есть с несколькими предложениями. Задать высоту в четверть экрана для ячейки с парой слов?... Слишком некрасиво... Как бы вот поменять высоту только определённых строк? И вообще, странно, что такой возможности нет в гриде...:confused:
16K
03 июня 2007 года
Djony
40 / / 28.04.2007
Там есть такая возможность, StringGrid1->ColWidth, но ее я не пробовал, там надо видимо указать какую ячейку ты хочешь раздвинуть. Попробуй может получится.

И на будующее Width-ширина, Height-высота, смотри от этого зависит многое.
23K
04 июня 2007 года
FataLL
24 / / 10.05.2007
Мне и нужна высота. Про ширину я и не спрашивал...
16K
04 июня 2007 года
Djony
40 / / 28.04.2007
Цитата: FataLL
Мне и нужна высота. Про ширину я и не спрашивал...



До этого речь шла про ширину. Про высоту соответственно надо только поменять Width на hieght а принцип остается тот же.

23K
04 июня 2007 года
FataLL
24 / / 10.05.2007
Принцип-то понятен, я уже сказал. Меня волнует совсем другая тема. Как увеличить высоту только тех ячеек (строк их содержащих), текст которых не отображается полностью? Может уже готовый компонент с такой возможностью есть, и кто знает?
1
05 июня 2007 года
kot_
7.3K / / 20.01.2000
не понятно - а что мешает устанавливать ширину каждого столбца? я вообще проблемы не вижу. это можно делать как программно так и двойным кликом по самому гриду. ничего не скажу за стандартный компонент - но ТDBGridEh позволяет это делать. все что необходимо - обрабатывать событие DBGridEh1GetCellParams - все нормально работает. RTFM.
23K
05 июня 2007 года
FataLL
24 / / 10.05.2007
Слушайте, товарищи специалисты! Заслуженные и т.д! Вы читать умеете хоть кто-нибудь? Особенно перед тем, как начинать что-то писать? В вашем случае RTFM должен интерпретироваться как Read The Fucking Message! Я разве про столбцы спрашиваю?:eek:
10
05 июня 2007 года
Freeman
3.2K / / 06.03.2004
Цитата: FataLL
Я разве про столбцы спрашиваю?:eek:


Я бы на твоём месте посмотрел в исходниках, или почитал в справке, чего не хватает для работы dghFitRowHeightToText. И создал бы необходимые ему условия, если возможно. Не грид же переписывать.

23K
06 июня 2007 года
FataLL
24 / / 10.05.2007
Я посмотрел. Эта опция всего лишь подгоняет высоту строки под высоту текста. Т.е., например, если системный шрифт отличен от стандартного (схема гигантская, просто юзер размер увеличил, или в самом приложении возможность настройки шрифтов предусмотрена), то высота строки автоматически подгоняется под его размер, чтобы все буковки было видать. К тому же, если я не ошибаюсь, DBGridEh начинает свою отрисовку с... рисования сетки. Еще до того, как он анализирует какие-либо данные. Поэтому я думаю, что то, что мне надо неосуществимо в этом компоненте. Надо какой-нибудь другой грид... Если кто подскажет, буду премного благодарен:D
10
07 июня 2007 года
Freeman
3.2K / / 06.03.2004
Цитата: FataLL
Надо какой-нибудь другой грид... Если кто подскажет, буду премного благодарен:D


Если поискать поиском по форуму, вылезут ссылки на DevExpress. С ним к сожалению, не работал.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог