PageControlに閉じるボタンを実装したいのですが、この質問も読みました。TPageControlのTTabsheetに閉じるボタンを実装する方法
Ulrichbの回答で提供されているコードを実装する方法がわかりません。 ...彼らはTPageControlの子孫である新しいコンポーネントを構築していますか?誰かがその特定のコードをどこに書くべきか説明できれば、私は感謝するでしょう!私の学校にはデルフィを少し知っている先生が1人いますが、彼は私を助けてくれませんでした。これがばかげた質問である場合は申し訳ありませんが、デルフィとプログラミングは初めてです。
1 に答える
The code in the question you link to does not create a new component. Instead it implements custom drawing by using events of the page control. Specifically these events:
- OnDrawTab
- OnMouseDown
- OnMouseMove
- OnMouseLeave
- OnMouseUp
You must use the Delphi form designer to connect these event handlers up to the matching events to make the code work.
This approach was probably chosen for simplicity when answering that question but it does not scale to an application with many forms that have page controls. In that situation you would want to derive a new page control component.
If you do that then, rather than using events, you need to override the following methods:
- DrawTab
- MouseDown
- MouseMove
- MouseUp
In addition to this you must replicate the OnMouseLeave
behaviour. That requires a message handler.
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;