Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ширина правого поля в StringGrid 
V
    Опции темы
Lunatikus
Дата 14.9.2009, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 29.6.2007

Репутация: нет
Всего: 6



Здравствуйте. Как сделать в ячейке/строке/всей таблице правое поле определенной ширины?

В данный момент, если текст не влезает в ячейку, он обрезается прямо у правой границы ячейки. Хотелось бы, чтобы обрезание было с некоторым отступом.

спасибо за помощь


--------------------
TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games).
сайт гильдии
PM MAIL   Вверх
Keeper89
Дата 14.9.2009, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Lunatikus, вот тут есть парочка советов.


--------------------
PM MAIL WWW   Вверх
Lunatikus
Дата 14.9.2009, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 29.6.2007

Репутация: нет
Всего: 6



спасибо,но не совсем то. Ширина самой колонки не должна меняться.

А ширину текста можно лишь получить из функции TextWidth(), но не поменять ее.

Если в ячейку влезает 5 символов, а в слове их 6,то будет срезан последний.
Мне надо, чтобы срезалось 2, к примеру.
Если нет соответствующего свойства типа "поля", как в странице Word, например, то придется изощряться и рассчитывать длину содержания ячейки в точках и принудительно обрезать через textout.


--------------------
TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games).
сайт гильдии
PM MAIL   Вверх
Данкинг
Дата 14.9.2009, 11:45 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Обрезай вручную строку до вывода её в ячейку. smile 

Это сообщение отредактировал(а) Данкинг - 14.9.2009, 11:45


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Keeper89
Дата 14.9.2009, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Вы противоречите названию своей же темы.
Если это подгон слова к ячейке, а не наоборот, можно сделать так:
Код

procedure TForm2.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
const
  TEXT_PERCENT = 0.8;
var
  myTextWidth: Integer;
  curCellString: String;
begin

  // Обрезаем в соотношении MY_CELL_PERCENT от размера ячейки

  with TStringGrid(Sender).Canvas do
  begin
    FillRect(Rect);
    
    curCellString := TStringGrid(Sender).Cells[ACol, ARow];
    // При пустой строке выходим
    if curCellString = EmptyStr then
      Exit;       
    
    // Обрезаем строку по символу (может есть вариант и лучше)
    // пока не обеспечим необходимую ширину
    myTextWidth := TextWidth(curCellString);
    while (myTextWidth / (Rect.Right - Rect.Left)) >= TEXT_PERCENT do
    begin
      curCellString :=
        Copy(curCellString, 1, Length(curCellString) - 1);
      myTextWidth := TextWidth(curCellString);
    end;
    
    TextOut(Rect.Left + 2, Rect.Top, curCellString);
  end;
end;



Это сообщение отредактировал(а) Keeper89 - 14.9.2009, 20:03


--------------------
PM MAIL WWW   Вверх
Lunatikus
Дата 18.9.2009, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 29.6.2007

Репутация: нет
Всего: 6



благодарю за подсказку, помогло. Еще добавил в конце "..." - стало более приглядным.


--------------------
TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games).
сайт гильдии
PM MAIL   Вверх
Keeper89
Дата 18.9.2009, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Пожалуйста, а с "..." надо быть осторожным - там есть несколько заковырок.

Это сообщение отредактировал(а) Keeper89 - 18.9.2009, 12:31


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1063 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.