//установи в дизайнере
//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
);
}
многострочный пункт в PopupMenu. Возможен?
Вопрос: можно ли запихать в caption пункта всплывающего меню многострочный текст?
Цитата:
Originally posted by Sasha C
Вопрос: можно ли запихать в caption пункта всплывающего меню многострочный текст?
Вопрос: можно ли запихать в caption пункта всплывающего меню многострочный текст?
А нарисовать?
Цитата:
Originally posted by GIZMO
А нарисовать?
А нарисовать?
Нарисовать текст?
Цитата:
Originally posted by Sasha C
Нарисовать текст?
Нарисовать текст?
угу...
TMenuItem::OnMeasureItem
TMenuItem::OnDrawItem
int DrawText(
HDC hDC, // это есть
LPCTSTR lpString, // это тоже
int nCount, // посчитаешь
LPRECT lpRect, // есть
UINT uFormat // сюда DT_WORDBREAK
);
Какие проблемы?
Цитата:
Originally posted by GIZMO
Какие проблемы?
Какие проблемы?
Проблемы? Я ламер. :)
Посмотрел хелп. Экзамплов нет и ничего не понял.
Кроме того, там вообще DrawText описывается как
DrawText(Types::TRect &ARect, unsigned &Flags, AnsiString Text);
/*Builder 6*/
Если можно, пример...
Цитата:
Originally posted by Sasha C
Проблемы? Я ламер. :)
Посмотрел хелп. Экзамплов нет и ничего не понял.
Кроме того, там вообще DrawText описывается как
DrawText(Types::TRect &ARect, unsigned &Flags, AnsiString Text);
/*Builder 6*/
Если можно, пример...
Проблемы? Я ламер. :)
Посмотрел хелп. Экзамплов нет и ничего не понял.
Кроме того, там вообще DrawText описывается как
DrawText(Types::TRect &ARect, unsigned &Flags, AnsiString Text);
/*Builder 6*/
Если можно, пример...
Код:
Т.е. я пишу
Код:
TMenuItem *Item1 = new TMenuItem(PopupMenu1);
PopupMenu1->Items->Add(Item1);
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)'
Что надо сделать, чтобы для динамически создаваемого пункта заработало?
[color=red]const[/color] TRect &ARect, bool Selected)