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

動態產生物件的事件問題

尚未結案
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-08 22:21:32 IP:222.183.xxx.xxx 未訂閱
各位大大好: 如何對動態産生的物件,調用onmousemove方法?  
 
type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    procedure FormCreate(Sender: TObject); 
  private
    { Private declarations }
  public
    mymap:TMapEdit; 
    procedure mymapmousemove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
  end;    var
  Form1: TForm1;    implementation    {$R *.dfm}    procedure TForm1.FormCreate(Sender: TObject);
begin
  myMap := TMapEdit.Create(self);
  myMap.Parent := self.Panel1;
  myMap.Align := alclient;
  mymap.Geoset := 'United States';
end;    //為什么程序執行不到這裏?
procedure TForm1.mymapmousemove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  mymap.AutoMoveMap(x, y, true);
end;    
 
StrongLemon
高階會員


發表:10
回覆:166
積分:105
註冊:2004-04-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-08 22:36:32 IP:210.68.xxx.xxx 未訂閱
如果TMapEdit是TControl子代的話.. myMap.OnMouseMove:=mymapmousemove;
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-09 15:58:05 IP:222.183.xxx.xxx 未訂閱
请问各位大大,我在调试中遇到一个问题,百思不得其解,请指教。    
 
type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    mymap: TMapEdit;
  end;    var
  Form1: TForm1;    procedure TForm1.Button1Click(Sender: TObject);
begin
  mymap := TMapEdit.Create(self);     运行到这里就报错误:
class EPrivilege with message 'Privilieged instruction'
  mymap.Parent := Panel1;      mymap.Align := alclient;
  mymap.Geoset := 'United States';
end;    procedure TForm1.Button2Click(Sender: TObject);
begin
  if assigned(mymap) then
    if assigned(mymap.Layers.InsertionLayer) then
      mymap.CloseEditLayer;
end;
TMapEdit是从一个activex控件继承下来的。 TOleControl——>TMap——>TMapEdit
     type
  TMapEdit = class(TMap)
  private
    FZLH: string;
  protected
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override; 
    function LayersCount: Integer; //当前地图图层数量
    procedure CloseGeoset; //关闭地图集
   published
    property ZLH: string read FZLH write FZLH;
  end;
[/code]  
    Thanks    發表人 - zzmbeyond01 於 2004/06/09  18:47:58
        
zzmbeyond01
中階會員


發表:98
回覆:167
積分:53
註冊:2003-09-07

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-24 13:42:59 IP:222.183.xxx.xxx 未訂閱
大大:< >< > 实在是搞不走了。。 我现在改成了类引用的方式,还是不行1 是不是从activex控件(mapinfo公司的mapx控件)派生新类,有限制呢?< >< > 代码如下:
 
//
unit1
type
  TControlClass=class of TWinControl;
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    procedure CreateControlObj(ControlObj:TControlClass);
  public
    { Public declarations }
    mapshow:TMapshow;
  end;    var
  Form1: TForm1;    implementation    {$R *.dfm}    procedure TForm1.Button1Click(Sender: TObject);
begin
 createcontrolobj(TMapShow);    end;    procedure TForm1.CreateControlObj(ControlObj: TControlClass);
var
aobj:TWinControl;
amapobj:TMapShow;
begin
aobj:=controlobj.Create(self);
//这里运行不过去,需要F9好几遍(连续抱错),才能将地图显示出来
aobj.Parent:=self;  
aobj.Align:=alclient;    if aobj is TMapShow then
begin
  amapobj:=aobj as TMapShow;
  amapobj.Geoset:='United States';
end;
end;    //********************************派生类单元
unit2
type      TMapShow = class(TMap)
  private   
  protected
  public
    constructor Create(Aowner:TComponent); override;
    destructor Destroy; override;
  end;
implementation    { TMapShow }    constructor TMapShow.Create(Aowner:TComponent);
begin
 inherited create(aowner);    end;    destructor TMapShow.Destroy;
begin      inherited;
end;    
< > < >
系統時間:2024-03-29 5:05:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!