全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1509
推到 Plurk!
推到 Facebook!

如何在scrollbox內增加canvas的功能

尚未結案
sam_000
一般會員


發表:27
回覆:47
積分:14
註冊:2003-09-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-01 17:55:36 IP:220.130.xxx.xxx 未訂閱
各為前輩好 我在scrollbox畫圖,如果在scrollbox放置image物件可以做到 但如果想在scrollbox直接增加casvas功能該如何製作呢,煩請前輩幫忙 謝謝 sam上
yorkland
高階會員


發表:2
回覆:138
積分:108
註冊:2004-12-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-02 09:52:28 IP:220.130.xxx.xxx 未訂閱
以下是我的建議作法, 僅供參考。 如果你要保持一個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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-02 10:12:26 IP:220.135.xxx.xxx 未訂閱
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-02 11:58:59 IP:211.22.xxx.xxx 未訂閱
多謝兩位前輩,兩位前輩提供的方法測試都正常,yarland前輩的方法做成元件運作亦正常,謝謝前輩 sam
系統時間:2024-11-23 5:18:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!