Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.09.19;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.034 c
14-1093625014
gn
2004-08-27 20:43
2004.09.19
Знаю что надоел но всёже


8-1088269863
Marser
2004-06-26 21:11
2004.09.19
Панель управления. Свойства:Звук


4-1091730200
Toxic
2004-08-05 22:23
2004.09.19
lpfnWndProc := ???


3-1092755019
Koala
2004-08-17 19:03
2004.09.19
Функции в базе Firebird


3-1093080762
KADAN
2004-08-21 13:32
2004.09.19
MSSQL -> Access





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский