Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TStringGrid [D6, WinXP]


Viper ©   (2004-09-05 07:08:00) 

Подскажите, можно ли в какой-либо ячейки TStringGrid выравнять текст по центру?


begin...end   (2004-09-05 13:03:00) [1]


> [10] @BraIN ©   (05.09.04 11:09)

Естественно, в случае, если нужно получать Point не только для рисования, лучше воспользоваться чем-то вроде того, что ты написал.

Но автор вопроса ни слова об этом не говорил, поэтому я и подумал (и думаю), что для него быстрее и проще воспользоваться DrawText().

Ну да ладно, проехали. Не обращай внимания. Злой я сегодня...


Anatoly Podgoretsky   (2004-09-05 11:25:00) [2]

Ну развели дисскуссию, а он всего то спрашивал можно или нет.


Viper   (2004-09-05 11:21:00) [3]

Спасибо всем


@BraIN   (2004-09-05 11:09:00) [4]

2 begin...end ©   (05.09.04 09:51) [9]

> 1. Можно взглянуть на функцию?

Свою не покажу, т.к есть не относящиеся к теме моменты, но написать здесь, просто ради примера, можно:


function GetStGridXY(const Cnvs: TCanvas; const CellText: string; const
 GridLineWidth: Integer; const Rect: TRect): TPoint;

 function GetCenter(const A, B, X, GrdLineWidth: Integer): Integer;
 begin
   Result := A + (B - A - X) div 2;
   if Result < A + GrdLineWidth then Result := A + GrdLineWidth;
 end;

begin
 Result := Point(GetCenter(Rect.Left, Rect.Right, Cnvs.TextWidth(CellText),
   GridLineWidth), GetCenter(Rect.Top, Rect.Bottom, Cnvs.TextHeight(CellText),
   GridLineWidth));
end;


> 2. В чём её универсальность (по сравнению с DrawText[Ex])?

В моем случае нужно получать Point не только для рисования.

> P.S. Пост [7], возможно, был немного резковат. Извиняюсь.

Все нормально.


begin...end   (2004-09-05 09:51:00) [5]


> [8] @BraIN ©   (05.09.04 09:42)

Если ты уже устал, можешь не отвечать.

Иначе:

1. Можно взглянуть на функцию?
2. В чём её универсальность (по сравнению с DrawText[Ex])?


> бывают разные задачи.

Я в курсе.

P.S. Пост [7], возможно, был немного резковат. Извиняюсь.


@BraIN   (2004-09-05 09:42:00) [6]

2 begin...end ©   (05.09.04 09:24) [7]

У меня есть функция из 6 строк, ее я использую в программе повсеместно. Возвращает X, Y для TextRect. В итоге получается та же одна строка, но с большей универсальностью. Поэтому про "нравится через ж..у" скажу: бывают разные задачи.


begin...end   (2004-09-05 09:24:00) [7]


> [6] @BraIN ©   (05.09.04 09:11)

Т.е. сначала нужно вычислить длину строки через TextWidth (а по-хорошему - ещё и высоту), потом сформировать Rect, и тогда вывести текст TextRect'ом.
И это, конечно, будет проще, чем:
DrawText(SG.Canvas.Handle, PChar(Text), -1, Rect, DT_SINGLELINE or DT_CENTER or DT_VCENTER);
где Rect - это прямоугольник всей ячейки?

Ну что ж, раз нравится через ж..у, то всё понятно.


@BraIN   (2004-09-05 09:11:00) [8]

2 begin...end ©   (05.09.04 08:56) [5]

> Или ты предлагаешь делать это с помощью TextOut'а,
> предварительно поизвращавшись с координатами?

Да, только с помощью TextRect'а.


begin...end   (2004-09-05 08:56:00) [9]


> [4] @BraIN ©   (05.09.04 08:53)

Я что-то не припомню у TCanvas метода, позволяющего выравнивать текст по центру. Или ты предлагаешь делать это с помощью TextOut'а, предварительно поизвращавшись с координатами?


@BraIN   (2004-09-05 08:53:00) [10]

2 begin...end ©   (05.09.04 08:42) [2]

> И?

Что "и"? Ты не знаешь что такое Canvas и как с ним работать?


Гаврилов В.А.   (2004-09-05 08:48:00) [11]

А помоему в TStringGrid есть настройки размещения текста как влево так направо и по центру


begin...end   (2004-09-05 08:42:00) [12]


> [1] @BraIN ©   (05.09.04 07:18)

И?

> Viper   (05.09.04 07:08)

См. [1] и API-функцию DrawText().


@BraIN   (2004-09-05 07:18:00) [13]

Можно, OnDrawCell.


Наверх

Титульная страница Поиск, карта сайта Написать письмо