一个方法就是Uses一个Grids单元
然后TDrawGrid(Panel1).Canvas
然后你就画吧
然后TDrawGrid(Panel1).Canvas
然后你就画吧
解决方案 »
- 访问类私有变量??
- OLEDB.4.0 连接dbf 数据库,生成数据库字段宽度与实际不符,这是为什么
- 怎样把TDBGird控件显示的列表打印出来?
- 怎么判断是否安装了Oracle客户端?
- 一个关于用Delphi编写.net系统的问题!
- 关于操作adoquery的小问题
- 如何在keydown事件中判断是否同时按下两个键?
- 如何用背景图片填充TRichEdit??????在线等待
- [300'求解!]**HELP**关于VB+ACCESS、嵌套查询的问题*********。
- 请问如何打开一个已存在的excel文件,并执行其中的宏?
- 为什么我想保存图片(*.bmp *.jegp)时总是出错,请高人指点。
- 哪儿有《Delphi 5.X ADO_MTS_COM+高级程序设计篇》下载?
或者有啥方法, 能够解决这个问题
分不好拿阿,我先试试,不过我觉得正宗的做法应该从TCustomPanel继承
建立个组件,然后重载Paint方法
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, ExtCtrls;type
TForm1 = class(TForm)
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
OldWndProc: TWndMethod;
procedure MyMessage(var Message: TMessage);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.MyMessage(var Message: TMessage);
begin
OldWndProc(Message);
if Message.Msg = WM_PAINT then
begin
TDrawGrid(Panel1).Canvas.MoveTo(2, 2);
TDrawGrid(Panel1).Canvas.LineTo(20, 20);
TDrawGrid(Panel1).Canvas.TextOut(10, 10, 'gyb');
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
OldWndProc := Panel1.WindowProc;
Panel1.WindowProc := MyMessage;
end;end.
begin
OldWndProc(Message);
if Message.Msg = WM_PAINT then
begin
DrawCtl3DShadow(Self.canvas,pnlShadow.BoundsRect,5,5);
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
OldWndProc := PnlCanvas.WindowProc;
PnlCanvas.WindowProc := MyMessage;end;
这不是窗体的Canvas吗
begin
with paintbox1 as sender do
with canvas do
begin
.
.
.
end;
好象就是这样吧,我也不大记得了。其实这是我的做法,也许这些并不能符合你的想法!呵呵
begin
with sender as Tpaintbox do
with canvas do
begin
.
你的画图语句;
.
end;