Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

многострочный пункт в PopupMenu. Возможен?

11K
07 ноября 2005 года
Sasha C
14 / / 20.10.2005
Вопрос: можно ли запихать в caption пункта всплывающего меню многострочный текст?
246
07 ноября 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by Sasha C
Вопрос: можно ли запихать в caption пункта всплывающего меню многострочный текст?


А нарисовать?

11K
08 ноября 2005 года
Sasha C
14 / / 20.10.2005
Цитата:
Originally posted by GIZMO
А нарисовать?


Нарисовать текст?

246
08 ноября 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by Sasha C
Нарисовать текст?


угу...
TMenuItem::OnMeasureItem
TMenuItem::OnDrawItem
int DrawText(
HDC hDC, // это есть
LPCTSTR lpString, // это тоже
int nCount, // посчитаешь
LPRECT lpRect, // есть
UINT uFormat // сюда DT_WORDBREAK
);
Какие проблемы?

11K
08 ноября 2005 года
Sasha C
14 / / 20.10.2005
Цитата:
Originally posted by GIZMO
Какие проблемы?


Проблемы? Я ламер. :)
Посмотрел хелп. Экзамплов нет и ничего не понял.
Кроме того, там вообще DrawText описывается как

DrawText(Types::TRect &ARect, unsigned &Flags, AnsiString Text);

/*Builder 6*/

Если можно, пример...

246
09 ноября 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by Sasha C
Проблемы? Я ламер. :)
Посмотрел хелп. Экзамплов нет и ничего не понял.
Кроме того, там вообще DrawText описывается как

DrawText(Types::TRect &ARect, unsigned &Flags, AnsiString Text);

/*Builder 6*/

Если можно, пример...


Код:
//установи в дизайнере
//MainMenu1->OwnerDraw = true;
void __fastcall TForm1::SaveAs1MeasureItem(TObject *Sender,
      TCanvas *ACanvas, int &Width, int &Height)
{
    Height = ACanvas->TextHeight("Save") + ACanvas->TextHeight("As");
}

void __fastcall TForm1::SaveAs1DrawItem(TObject *Sender, TCanvas *ACanvas,
      TRect &ARect, bool Selected)
{
    String Text("Save\n\rAs...");

    ACanvas->FillRect(ARect);

    ::DrawText(
        ACanvas->Handle, // ýòî åñòü
        Text.c_str(), // ýòî òîæå
        Text.Length(), // ïîñ÷èòàåøü
        (RECT*)&ARect, // åñòü
        DT_WORDBREAK
    );

}
11K
09 ноября 2005 года
Sasha C
14 / / 20.10.2005
Спасибо. Немного подправил и заработало. Только мне надо для динамически создаваемого всплывающего меню многострочный пункт обработать.

Т.е. я пишу

 
Код:
TMenuItem *Item1 = new TMenuItem(PopupMenu1);
PopupMenu1->Items->Add(Item1);


Далее надо прорисовать текст.

Я пытался
 
Код:
Item1->OnDrawItem = Item1DrawItem;

В дизайнере OwnerDraw ставил true
но вылетала ошибка

Cannot convert 'void (_fastcall * (_closure )(TObject *,TCanvas *,TRect &,bool))(TObject *,TCanvas *,TRect &,bool)' to 'void (_fastcall * (_closure )(TObject *,TCanvas *,const TRect &,bool))(TObject *,TCanvas *,const TRect &,bool)'

Что надо сделать, чтобы для динамически создаваемого пункта заработало?
488
09 ноября 2005 года
Mоngооsе
465 / / 01.04.2005
void __fastcall TForm1::SaveAs1DrawItem(TObject *Sender, TCanvas *ACanvas,
[color=red]const[/color] TRect &ARect, bool Selected)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог