Главная страница
    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.47 MB
Время: 0.127 c
4-1091630143
rams
2004-08-04 18:35
2004.09.19
как программно выключить компьютер


4-1092031442
Frozzen
2004-08-09 10:04
2004.09.19
WriteFile ???


9-1084886879
istemy
2004-05-18 17:27
2004.09.19
Сферические координаты в OpenGL


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


14-1093943954
ИМХО
2004-08-31 13:19
2004.09.19
Эмиграция в США или Европу





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский