Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > КАК разбить заголовок столбца на 2 строки


Автор: ura5 12.6.2007, 11:22
Код
DBGridPer->Columns->Items[0]->Title->Caption="Название государства, откуда выезжаешь"; 


Кто знает ,как разбить этот заголовок на 2 строки.Допустим,чтобы  было написано

Название государства,
 откуда выезжаешь

Спасибо

Автор: Rodman 12.6.2007, 11:25
Код

DBGridPer->Columns->Items[0]->Title->Caption="Название государства," + sLineBreak + " откуда выезжаешь"; 


так не поможет?!

Автор: ura5 12.6.2007, 14:59
[C++ Error] : E2085 Invalid pointer addition-ошибку выдает

Автор: Fazil6 12.6.2007, 15:08
Код

        AnsiString s("Название государства, откуда выезжаешь");
        int p = AnsiPos(",", s);
        if(!p) return ;

        AnsiString s1(s.c_str(), p );
        AnsiString s2(s.c_str() + p);

        ShowMessage(s1);
        ShowMessage(s2);


Автор: ura5 12.6.2007, 15:52
DBGridPer->Columns->Items[0]->Title->Caption="Название государства, откуда выезжаешь"; 

Спасибо.Я пишу как показано выше.
Как Вы предлагаете,не знаю как и влепить сюда.Мне надо заголовок поля таблицы выдать на экран в виде 2-х строк по той причине,чтобы не была длинная строка под это поле.Всего полей у меня 18.
Разве что так 

Код
AnsiString s("Название государства, откуда выезжаешь");
        int p = AnsiPos(",", s);
        if(!p) return ;

        AnsiString s1(s.c_str(), p );
        AnsiString s2(s.c_str() + p);

        ShowMessage(s1);
        ShowMessage(s2);

DBGridPer->Columns->Items[0]->Title->Caption=s";  




Автор: ura5 13.6.2007, 09:33
Fazil6 !
У меня вопрос:
Код
AnsiString s("Название государства, откуда выезжаешь");
        int p = AnsiPos(",", s);
        if(!p) return ;

        AnsiString s1(s.c_str(), p );
        AnsiString s2(s.c_str() + p);

DBGridPer->Columns->Items[0]->Title->Caption=s1;
DBGridPer->Columns->Items[0]->Title->Caption=s2; 


Сделала я ,как Вы предложили.Но в итоге в заголовоке столбца виден,естественно,только 2-й кусок 
названия--'откуда выезжаешь'.
А мне нужен заголовок ,состоящий из 2-к строк .
Я ТАК ДЕЛАЮ,ПОТОМУ ЧТО ДЛИННОЕ НАЗВАНИЕ



Автор: ura5 13.6.2007, 11:23
DBGridPer->Columns->Items[0]->Title->Caption=s1+"\r\n"+s2;
Безрезультатно

Автор: Pendalf 13.6.2007, 16:26
В DBGrid не получится так сделать.
Пользуйте библиотеку Ehlib или Rxlib.
По моему, так.

Автор: ura5 14.6.2007, 14:57
А как ее подключить или использовать ?

Автор: jonie 14.6.2007, 17:38
Цитата

А как ее подключить или использовать ?
установить соот. компоненты (это не часть делфи - это разработки сторонних компаний)
---
а как насчет порисовать самому? OnDrawColumnCell обработчик..... собственно рисуйте хоть по диагонали....

Автор: ura5 15.6.2007, 09:26
Не знаю совсем с++ builder.Наверное,это сложно.Мне гораздо проще пользоваться готовым инструментом DBGrid.Мне надо было просто из 12 полей укоротить ЗАГОЛОВКИ всего в 2-х полях.
Только заголовки ,а не содержимое полей.Из-за этого не стоит ,я думаю ,пользоваться 
событием OnDrawColumnCell .
Если есть маленький пример по этому событию(рисовать) -дайте,буду благодарен.

Автор: jonie 15.6.2007, 12:12
Цитата

а как насчет порисовать самому? OnDrawColumnCell обработчик..... собственно рисуйте хоть по диагонали....
зачеркнуть - это не поможет, к сожалению. ибо компонент рисует заголовки по-своему....
подглядел в делфи как....
Код

procedure TCustomDBGrid.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState);
......
  procedure DrawTitleCell(ACol, ARow: Integer; Column: TColumn; var AState: TGridDrawState); {да, процедура внутри процедуры - т.е. перегрузить ее нет возможности( }
  begin
    .... тут вычисление RECT-а вывода = CalcTitleRect(), и вывод с помощью WriteText()  -- а она вообще глобальная....
  end;
....
end;

т.о. можно (я пологаю) сделать свой компонент на делфях, переписав  WriteText() и CalcTitleRect() ну и еще дохрена переписав попутно... 8)

или как вариант использовать иной контрол , почитайте там http://www.sdteam.com/?tid=405
компоненты, как я пологаю подойдут, придется только хедеры получить (а может они уже есть в комплекте)....
иных спсобов я не вижу.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)