Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как в одной ячейки StringGrid'а записать две строчки? / 4 сообщений из 4, страница 1 из 1
31.05.2006, 02:26
    #33762127
cruse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в одной ячейки StringGrid'а записать две строчки?
Как в одной ячейки StringGrid'а записать две строчки?
Код: plaintext
1.
 111111 
               111111 
...
Рейтинг: 0 / 0
31.05.2006, 02:26
    #33762128
cruse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в одной ячейки StringGrid'а записать две строчки?
Извиняюсь:
Код: plaintext
1.
 11111 
 11111 
...
Рейтинг: 0 / 0
31.05.2006, 06:29
    #33762168
muk07
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в одной ячейки StringGrid'а записать две строчки?
Рисуйте вручную, используя Canvas. Ниже пример

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
#define MAXWORDS  50 
//---------------------------------------------------------------
void Draw1TextInStringGridCell(TStringGrid *g, TRect &Rect,
  AnsiString ss,  bool Center){
// Нарисовать текст в ячейке StringGrid *g
// Rect - ячейка, s - строка,
// Center - центрировать по горизонтали

int FontHeight,nString;
int i,k,TextLeft,CellWidth,n,nEmptyStrings;
AnsiString s[MAXWORDS],p1,p[MAXWORDS];

FontHeight=g->Canvas->TextHeight("a");
n=StringToWords(ss,s); // разбить строку на слова
nString=(Rect.Bottom-Rect.Top)/FontHeight; // в ячейку входит столько строк
CellWidth=Rect.Right-Rect.Left;
p[ 0 ]="";
k= 0 ;
for(i= 0 ;i<n;i++){
    TextLeft= 2 ;
    p1=p[k]+" "+s[i];
    if(g->Canvas->TextWidth(p1)>CellWidth){
        if(k>=MAXWORDS){
            Msg(PROGRAMMER,NULL,
              "Draw1TextInStringGridCell():\n"
              "Число слов превышает максимум (%d)",MAXWORDS);
            break;
        }
        k++;
        p[k]=s[i];
    } else {
        p[k]=p[k]+" "+s[i];
    }
}
n=k+ 1 ;
nEmptyStrings=(nString-n)/ 2 ;
if(nEmptyStrings< 0 ){
    nEmptyStrings= 0 ;
}
g->Canvas->FillRect(Rect);
for(i= 0 ;i<n;i++){
    if(Center){
        TextLeft=(CellWidth-g->Canvas->TextWidth(p[i]))/ 2 ;
        if(TextLeft< 0 ){
            TextLeft= 2 ;
        }
    }
    g->Canvas->TextOutA(Rect.Left+TextLeft,Rect.Top+
      (nEmptyStrings+i)*FontHeight,p[i]);
}
}
...
Рейтинг: 0 / 0
31.05.2006, 10:46
    #33762533
cruse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в одной ячейки StringGrid'а записать две строчки?
Мне надо вказать в какой ячейке!!
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как в одной ячейки StringGrid'а записать две строчки? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]