2012-05-03 1 views
4

Я хочу реализовать кнопку закрытия на PageControl, и я тоже прочитал этот вопрос How to implement a close button for a TTabsheet of a TPageControl
Дело в том, что я не могу понять, как реализовать код, приведенный в ответ Ульрихба ... они строят новый компонентный потомок от TPageControl или нет? если бы кто-нибудь мог объяснить, где написать этот код, я был бы благодарен! У меня есть один учитель, который знает немного дельфи в моей школе, но он не мог мне помочь. И я сожалею, если это глупый вопрос, но я новичок в delphi и программировании.нарисуйте кнопку закрытия в каждом Ttabsheet TPageControl

ответ

4

Код в вопросе, на который вы ссылаетесь, не создает новый компонент. Вместо этого он реализует пользовательский чертеж, используя события управления страницей. Конкретно эти события:

  • OnDrawTab
  • OnMouseDown
  • OnMouseMove
  • OnMouseLeave
  • OnMouseUp

Вы должны использовать конструктор форм Delphi соединить эти обработчики событий до согласования событий чтобы код работал.

Этот подход, вероятно, был выбран для простоты при ответе на этот вопрос, но он не масштабируется для приложения со многими формами, в которых есть элементы управления страницей. В этой ситуации вы хотите получить новый элемент управления страницей.

Если вы сделаете это, то, вместо того чтобы использовать события, вам необходимо переопределить следующие методы:

  • DrawTab
  • MouseDown
  • MouseMove
  • MouseUp

В дополнение к этому вы должны воспроизвести поведение OnMouseLeave. Для этого требуется обработчик сообщений.

procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; 
.... 
procedure TMyPageControl.CMMouseLeave(var Message: TMessage); 
begin 
    inherited; 
    if Message.LParam=0 then 
    begin 
    // move OnMouseLeave code here 
    end; 
end; 
+0

Я дам ему попробовать в delphi xe2 и позволит вам теперь, если это сработает. большое спасибо Давиду. –

+0

Я до сих пор не могу дотянуться до конца: Дэвид, ты говоришь мне, что используется событие DrawTab, но я не смог найти его в этом примере. Я нашел только TFormMain.PageControlCloseButtonDrawTab это событие, и когда я пытаюсь его реализовать, я получаю сообщение об ошибке «Undeeclared Identifier Page Control Close Button». Знаете ли вы, где я могу найти весь исходный код этого примера? –

+0

В инспекторе объектов найдите OnDrawTab и т. Д. И назначьте обработчики этим событиям. Это интро-материал, и вы должны прочитать трюк, чтобы овладеть им. –

 Смежные вопросы

  • Нет связанных вопросов^_^