Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2008, 14:47   #1
Comer_Jus
Подтвердите свой е-майл
 
Регистрация: 16.05.2008
Сообщений: 54
По умолчанию PopUpMenu не срабатывает OnDrawItem

Менюха создаётся динамически
вот код:
Код:
procedure TForm1.FPopupMenuPopup(Sender: TObject);
 Var TX,TY,TZ :Integer;
     FMenuItem:TMenuItem;
     Pos      :TPoint;

 Begin
  GetCursorPos(Pos);
  Tx:=Pos.X;
  Ty:=Pos.Y;

  FPopupMenu:= TPopupMenu.Create(Self);
  FPopupMenu.AutoPopup:=False;
  FPopupMenu.Tag:= 0;
  For TZ:=1 To 23 Do
   Begin
    FMenuItem := TMenuItem.Create(Self);
    With FMenuItem Do
     begin
      Tag     := TZ;
      OnClick := FPopupMenuClick;          
      Caption := IntToStr(TZ);
      Hint    := 'HINT '+IntToStr(TZ);
      Bitmap.LoadFromFile('Images\'+IntToStr(TZ)+'.bmp');
      OnDrawItem:=DrawItem;
     End;
    FPopupMenu.Items.Add(FMenuItem)
   End;

  FPopupMenu.Popup(TX,TY);
  Application.ProcessMessages;   
  If FPopupMenu.Tag<>0 Then       
   Begin
    Form1.Caption:=FPopUpMenu.Items[FPopupMenu.Tag-1].Hint;
   End;

 FPopupMenu.Free;
 FPopupMenu:= nil;
End;


procedure TForm1.DrawItem(Sender: TObject; ACanvas: TCanvas;ARect: TRect; Selected: Boolean);
Begin
//Тута я всё рисую
End;
FPopUpMenu.OwnerDraw=TRUE
но не срабатывает OnDrawItem (->DrawItem)
почему?
Comer_Jus вне форума Ответить с цитированием
Старый 16.05.2008, 15:13   #2
Comer_Jus
Подтвердите свой е-майл
 
Регистрация: 16.05.2008
Сообщений: 54
По умолчанию

Если вручную создать пункты и в их OnDrawItem указать ->DrawItem
то всё работает как надо
А вот при динамическом создании не алё?????
Comer_Jus вне форума Ответить с цитированием
Старый 16.05.2008, 15:49   #3
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

выставьте корректно свойство dragmode
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 16.05.2008, 16:06   #4
Comer_Jus
Подтвердите свой е-майл
 
Регистрация: 16.05.2008
Сообщений: 54
По умолчанию

Чтото я не нащёл такого свойства (у меня Delphi7)
может тогда его ещё не придумали?
Comer_Jus вне форума Ответить с цитированием
Старый 16.05.2008, 20:18   #5
Comer_Jus
Подтвердите свой е-майл
 
Регистрация: 16.05.2008
Сообщений: 54
По умолчанию

Народ! не ужели никто не сталкивался?
Comer_Jus вне форума Ответить с цитированием
Старый 16.05.2008, 21:42   #6
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

А где FPopUpMenu.OwnerDraw=TRUE ?
Оно должно устанавливаться после создания объекта:

FPopupMenu:= TPopupMenu.Create(Self);
FPopupMenu.AutoPopup:=False;
FPopUpMenu.OwnerDraw :=TRUE;

у Вас в коде этого не видно.
alexBlack вне форума Ответить с цитированием
Старый 16.05.2008, 21:48   #7
Comer_Jus
Подтвердите свой е-майл
 
Регистрация: 16.05.2008
Сообщений: 54
По умолчанию

Спасибо!
причина была в этом!
не досмотрел
Comer_Jus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PopupMenu TaTT DoGG Компоненты Delphi 13 23.05.2008 13:19
PopupMenu Михаил Юрьевич Общие вопросы Delphi 6 03.05.2008 18:46
Не срабатывает TEmbeddedWB когда открываю страницу через ссылку в новой вкладке dimfil Общие вопросы Delphi 0 23.03.2008 23:45
PopupMenu Teen4jump Общие вопросы Delphi 10 12.03.2008 13:42