如何在scrollbox內增加canvas的功能 |
尚未結案
|
sam_000
一般會員 發表:27 回覆:47 積分:14 註冊:2003-09-15 發送簡訊給我 |
|
yorkland
高階會員 發表:2 回覆:138 積分:108 註冊:2004-12-17 發送簡訊給我 |
以下是我的建議作法, 僅供參考。
如果你要保持一個ScrollBox的VCL物件的話, 可以開一個新的MyCanvas.
然後利用MyCanvas.Control指向ScollBox, 那麼你的ScrollBox就擁有Canvas的功能。如果你可以用run time才去Create ScollBox的話, 大可Create一個新的Type繼承ScrollBox, 然後新增一個Property, 而MyCanvas.Control:=Self;即可。
type TForm1 = class(TForm) ScrollBox1: TScrollBox; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormDestroy(Sender: TObject); private FMyCanvas: TControlCanvas; procedure SetMyCanvas(const Value: TControlCanvas); { Private declarations } public { Public declarations } property MyCanvas: TControlCanvas read FMyCanvas write SetMyCanvas; // 開一個新的自訂屬性.. end; var Form1: TForm1; implementation {$R *.dfm} { TForm1 } procedure TForm1.SetMyCanvas(const Value: TControlCanvas); begin FMyCanvas := Value; end; procedure TForm1.FormCreate(Sender: TObject); begin FMyCanvas:=TControlCanvas.Create; FMyCanvas.Control:=ScrollBox1; // 把Canvas與ScrollBox連結; end; // 這一段是試看看有沒有畫出來.. procedure TForm1.Button1Click(Sender: TObject); begin MyCanvas.Pen.Color:=clRed; MyCanvas.MoveTo(0,0); MyCanvas.LineTo(100,100); end; |
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
Hi sam_000 及 yorkland大大你好:
這是我的做法
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) ScrollBox1: TScrollBox; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } FCanvas: TCanvas; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin FCanvas := TControlCanvas.Create; TControlCanvas(FCanvas).Control := ScrollBox1; end; procedure TForm1.FormDestroy(Sender: TObject); begin FCanvas.Free; end; procedure TForm1.Button1Click(Sender: TObject); begin FCanvas.LineTo(500, 500); end; end.我不是高手, 高手是正在銀幕前微笑的人.
------
我不是高手, 高手是正在銀幕前微笑的人. |
sam_000
一般會員 發表:27 回覆:47 積分:14 註冊:2003-09-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |