我认为这比尝试在应用程序代码中绘制TPanel更好的解决方案有以下几个原因:
> Canvas属性在TPanel中受到保护,因此您无法从类外部访问它.你可以用类型转换来解决这个问题,但这是作弊行为.
>“可恢复性”听起来更像是面板的一个功能,而不是应用程序的一个功能,因此将其放在面板控件的代码中,而不是应用程序的主代码中.
这是让你入门的东西:
type TSizablePanel = class(TPanel) private fdragOrigin: TPoint; FSizeRect: TRect; protected procedure Paint; overrIDe; procedure MouseDown(button: TMousebutton; Shift: TShiftState; X,Y: Integer); overrIDe; procedure MouseMove(Shift: TShiftState; X,Y: Integer); overrIDe; procedure MouseUp(button: TMousebutton; Shift: TShiftState; X,Y: Integer); overrIDe; end;procedure TSizeablePanel.Paint;begin inherited; // Draw a sizing grip on the Canvas property // There's a size-grip glyph in the Marlett Font,// so try the Canvas.textout method in combination // with the Canvas.Font property.end;procedure TSizeablePanel.MouseDown;begin if (button = mbleft) and (Shift = []) and PtInRect(FSizeRect,Point(X,Y)) then begin fdragOrigin := Point(X,Y); // Need to capture mouse events even if the mouse // leaves the control. See also: ReleaseCapture. SetCapture(Handle); end else inherited;end;总结
以上是内存溢出为你收集整理的delphi – 如何在TPanel上绘制全部内容,希望文章能够帮你解决delphi – 如何在TPanel上绘制所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)