Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2008, 19:14   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Автоподгонка ячейки в DBGride

У меня вопрос про DBGRID. Как сделать, чтобы если вводимый текст в ячейку не помещается по длине, переносился на следующую строку, но оставался бы в этой же ячейки? Как это сделано при работе с таблицей в MS Word. Заранее не известно в каких ячейках текст поместится, а в каких нет. Заранее спасибо за помощь.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 18.10.2008, 19:51   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Стандартный DBGrid этого не умеет. Можно использовать сторонние компоненты, например, ЕхDBGrid, DbAltGrid.
Можно поступить по-другому - при наведении мышки на такую ячейку выводить хинт с полным текстом, причем сам хинт "приклеить" к левому верхнему углу ячейки, тогда будет эффект, как от расширения ячейки на нужную длину.

Последний раз редактировалось mihali4; 18.10.2008 в 21:38.
mihali4 вне форума Ответить с цитированием
Старый 18.10.2008, 20:44   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Можно поступить по-другому - при наведении мышки на такую ячейку выводить хинт с полным текстом, причем сам хинт "приклеить" к левому верхнему углу ячейки, тогда будет эффект, как от расширения ячейки на нужную длину.
Это вариант. А как это сделать?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 18.10.2008, 21:18   #4
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Код:
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  ScrPt, GrdPt: TPoint;
  Cell: TGridCoord;
begin
  ScrPt := Mouse.CursorPos;
  GrdPt := DBGrid1.ScreenToClient(ScrPt);
  Cell := DBGrid1.MouseCoord(GrdPt.X, GrdPt.Y);
  if (Cell.X <= 0) or (Cell.Y <= 0) then
  Form1.Caption:='Мышь вне зоны грида' else
  Form1.Caption:='Мышь над полем '+IntToStr(Cell.X)+
  ' в строке '+IntToStr(Cell.Y);
end;
Зная, где находится курсор, выводи хинт или то что нужно

Но, лучший вариант - это не использовать стандартный DBGrid вообще. Он не пригоден для работы. Лучше поставь DBGridEh, TopDBGrid, xDBGrid...

Последний раз редактировалось _SERGEYX_; 18.10.2008 в 21:21.
_SERGEYX_ вне форума Ответить с цитированием
Старый 19.10.2008, 08:13   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Хорошо) В заголовке формы отображается позиция курсора. Номер ячейки в строке и в столбце. А как же сделать тогда, чтобы показывалась не номер ячейки, а ее содержимое? может массив создать по столбцам?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 19.10.2008, 12:56   #6
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Можно прочитать нужную строку через lookup(), но зачем изобретать велосипед? Наводить на ячейку мышь и ждать появления хинта не серьезно. Установи нормальный грид и сделай автовысоту строки.
_SERGEYX_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как разделить число и текст в одной ячейки на две ячейки. neboskreb Microsoft Office Excel 2 15.04.2008 19:39
редактирование ячейки SveSve Microsoft Office Excel 2 11.04.2008 10:16
Можно ли как-нить изменить цвет отдельной ячейки в DBGride? 3lander БД в Delphi 2 10.10.2007 21:23