Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.19;
Скачать: CL | DM;

Вниз

TStringGrid   Найти похожие ветки 

 
Viper   (2004-09-05 07:08) [0]

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


 
@BraIN ©   (2004-09-05 07:18) [1]

Можно, OnDrawCell.


 
begin...end ©   (2004-09-05 08:42) [2]


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

И?

> Viper   (05.09.04 07:08)

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


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

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


 
@BraIN ©   (2004-09-05 08:53) [4]

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

> И?

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


 
begin...end ©   (2004-09-05 08:56) [5]


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

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


 
@BraIN ©   (2004-09-05 09:11) [6]

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

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

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


 
begin...end ©   (2004-09-05 09:24) [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:42) [8]

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

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


 
begin...end ©   (2004-09-05 09:51) [9]


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

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

Иначе:

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


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

Я в курсе.

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


 
@BraIN ©   (2004-09-05 11:09) [10]

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], возможно, был немного резковат. Извиняюсь.

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


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

Спасибо всем


 
Anatoly Podgoretsky ©   (2004-09-05 11:25) [12]

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


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


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

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

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

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



Страницы: 1 вся ветка

Текущий архив: 2004.09.19;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.055 c
1-1093960037
DimonNew
2004-08-31 17:47
2004.09.19
передача массива в процедуру


1-1093402316
Александр1
2004-08-25 06:51
2004.09.19
Разделение строчек


6-1089644126
Serg_lys
2004-07-12 18:55
2004.09.19
Работа с компонентом TNMSMTP как применить кодировку


3-1092844481
Aleksandr.
2004-08-18 19:54
2004.09.19
Объясните мне работу АДО-соединений, а то там фигня какая-то...


14-1093623426
Michael
2004-08-27 20:17
2004.09.19
Посоветуйте как лучше разбить диск на 80Гб