Форум: "Основная";
Текущий архив: 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