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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2015, 13:31   #1
Yuran
Форумчанин
 
Регистрация: 18.02.2008
Сообщений: 198
По умолчанию StringGrid Двойной Alignment в ячейках

Доброе время!

Использую компонент TAdvStringGrid

Все устраивает.

Хотелось бы в некоторых ячейках реализовать "Двойное выравнивание"

Чтоб часть текста была прибита к левой стороне, а другая часть к правой.

Вот так
-----------------------
| Anna Iwano 3500|
-----------------------
Изменяем ширину колонки и получаем
--------------------------
| Anna Iwanowa..3500|
--------------------------
или вот
---------------------------------------
| Anna.Iwanowa ................ 3500|
---------------------------------------

Готового решения в этом компоненте не нашел.

Придумал реализацию так
1. вычисляем ширину колонки в пикселях. (Это известно) ШК
2. Вычисляем ширину ПРАВОГО текста в пикселях ШПТ
3. Вычисляем ширину ЛЕВОГО текста в пикселях ШЛТ
4. Рассчитываем ширину всего текста ШВТ
5. Задаем ШПТ = ШК-ШЛТ


Вопрос!!!
Как ЗАДАТЬ длину текста в пикселях? Или как расчитать кол-во символов чтоб длина в пикселях была такая-то!
Yuran вне форума Ответить с цитированием
Старый 22.04.2015, 13:43   #2
Yuran
Форумчанин
 
Регистрация: 18.02.2008
Сообщений: 198
По умолчанию

Код:
txtLeft :='Добрый день!';
txtRight:='300';
txt:=' ';
While Canvas.TextWidth(txtLeft)>sg.ColWidth-Canvas.TextWidth(txtRight) do
  delete(txtLeft,length(txtLeft),1);

txt:=txtLeft+' '+txtRight;
Что думаете? Может есть другой способ?
Yuran вне форума Ответить с цитированием
Старый 22.04.2015, 13:45   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Может есть другой способ?
Разбить на две колонки и не сушить мозг
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 22.04.2015, 13:48   #4
Yuran
Форумчанин
 
Регистрация: 18.02.2008
Сообщений: 198
По умолчанию

Цитата:
Разбить на две колонки и не сушить мозг
Ломается форматирование.

Нужно в одной колонке.
Yuran вне форума Ответить с цитированием
Старый 22.04.2015, 14:19   #5
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

Код:
var
txtl : string;//левый текст
txtr : string;//правый текст
res : string;//текст нужной длины
len : integer;//нужная ширина текста в пикселях
begin
while textwidth(txtl+txtr) < len do
 txtl:= txtl+' ';
res := txtl+txtr;
end;
а еще можно на OnDraw рисовать текст вручную в ячейках в нужных позициях
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двойной переворот daniil123 Паскаль, Turbo Pascal, PascalABC.NET 0 21.11.2011 22:59
Выравнивание шрифта в ячейках StringGrid -Maestro- Общие вопросы Delphi 0 31.01.2011 13:32
запретить редактирование в отдельных ячейках Stringgrid Delphi JK0 Помощь студентам 6 07.12.2010 12:43
Выравнивание данных в ячейках StringGrid Александр Маркелов Помощь студентам 8 24.06.2010 16:15
Двойной клик Алежа Общие вопросы .NET 3 16.11.2008 23:20