没人知道吗?多谢,我可以在一个贴子送分!谢谢了!

解决方案 »

  1.   

    终于遇到同僚,bug,没办法,我也遇到过,自己做一个,推荐你去www.esri.com的论坛去看看,不过那里也没人能解决,这是个失败的作品。留下你的email,我做了一个可以实现打多功能。
    unit WRRenderControl;interfaceuses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,ExtCtrls;type
    TWRRender = class;
    TWRRendersControl = class;TWRSymbol = class (TCollectionItem)
    private
    FSymBit : TBitmap;
    FSymTip : String;
    procedure SetSymBit(value : TBitmap);
    public
    constructor Create(Collection : TCollection);override;
    procedure Assign(Source: TPersistent); override;
    destructor Destroy;override;
    published
    property SymBit : TBitmap read FSymBit write SetSymBit;
    property SymTip : String read FSymTip write FSymTip;
    end;TWRSymbols = class (TCollection)
    private
    FWRRender : TWRRender;
    function GetItem(index : integer) : TWRSymbol;
    procedure SetItem(index : integer;Value : TWRSymbol);
    protected
    function GetOwner : TPersistent;override;
    public
    Constructor Create( WRRender : TWRRender);
    function Add : TWRSymbol;
    property Items[index : integer] : TWRSymbol read GetItem write SetItem;default;
    end;TWRRender = class (TPersistent)
    private
    FActive : Boolean;
    FChecked : Boolean;
    FLayerTip : String;
    FWRSymbols : TWRSymbols;
    FVisible : Boolean;
    procedure SetActive ( value : Boolean);
    procedure SetChecked (value : Boolean);
    procedure SetWRSymbols(value : TWRSymbols);
    property Active : Boolean read FActive write SetActive default false;
    public
    constructor Create;
    destructor Destroy ;override;
    procedure Assign(Source : TPersistent);override;
    published
    property Visible : Boolean read FVisible write FVisible default true;
    property Checked : Boolean read FChecked write SetChecked default false;
    property LayerTip : string read FLayerTip write FLayerTip;
    property WRSymbols : TWRSymbols read FWRSymbols write SetWRSymbols;
    end;TWRRenderItem = class (TCollectionItem)
    private
    FWRRender : TWRRender;
    function GetWRRender : TWRRender;
    procedure SetWRRender(Value : TWRRender);public
    constructor Create(Collection : TCollection);override;
    procedure Assign(Source: TPersistent); override;
    destructor Destroy;override;
    published
    property WRRender : TWRRender read GetWRRender write SetWRRender;
    end;TWRRenders = Class(TCollection)
    private
    FWRRendersControl : TWRRendersControl;
    function GetItem(index : integer) : TWRRenderItem;
    procedure SetItem(index : integer;value : TWRRenderItem);
    procedure ExChange(fromindex : integer;toindex : integer);
    protected
    function GetOwner : TPersistent;override;
    public
    constructor Create( WRRendersControl : TWRRendersControl);
    function Add : TWRRenderItem;
    procedure Move(Fromindex,ToIndex : integer);
    property Items[index : integer] : TWRRenderItem read GetItem write SetItem;default;
    end;TRegionClickEvent = procedure (RendersControl: TWRRendersControl;index : integer) of Object;TWRRendersControl = class(TCustomControl)
    private
    { Private declarations }FOrigionPt : TPoint;
    FCheckedBitMap : TBitMap;
    FUnCheckedBitMap : TBitMap;
    FWRRenders : TWRRenders;
    FEditable : Boolean;
    FOnCheckRegionClick : TRegionClickEvent;
    FOnBodyRegionClick : TRegionClickEvent;
    FOnEditableChanged : TNotifyEvent;
    FLeftTopOutLineColor,FRightBottomOutlineColor : TColor;
    FOutlineWidth : integer;procedure SetCheckedBitMap(Value : TBitMap);
    procedure SetUncheckedBitMap( Value : TBitMap);
    procedure SetWRRenders(value : TWRRenders);
    procedure SetActiveIndex(Index : integer);
    procedure SetEditable(value : boolean);
    procedure CheckRegionClick(index : integer) ; //dynamic;
    procedure BodyRegionClick(index : integer) ; //dynamic;
    procedure EditableChanged;function GetRenderRect(index : integer) : TRect;
    function GetActiveIndex : integer;protected
    { Protected declarations }
    function CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; override;
    procedure Paint; override;
    procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
    X, Y: Integer); override;
    procedure MouseDown( Button: TMouseButton; Shift: TShiftState;
    X, Y: Integer); override;
    procedure MouseMove(Shift: TShiftState; X, Y: Integer);override;public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure Click; override;
    function ItemAtPos(X,Y : integer) : Integer;
    procedure ResetBounds;property Editable : Boolean read FEditable write SetEditable ;published
    { Published declarations }
    property CheckedBitmap : TBitmap read FCheckedBitmap write SetCheckedBitmap;
    property UnCheckedBitmap : TBitMap read FUnCheckedBitmap write SetUnCheckedBitmap;
    property WRRenders : TWRRenders read FWRRenders write SetWRRenders;
    property ActiveIndex : Integer read GetActiveIndex write SetActiveIndex;
    property LeftTopOutlineColor : TColor read FLeftTopOutlineColor write FLeftTopOutlineColor;
    property RightBottomOutlineColor : TColor read FRightBottomOutlineColor write FRightBottomOutlineColor;
    property OutlineWidth : integer read FOutlineWidth write FOutlineWidth;
    property PopupMenu;
    property AutoSize ;
    property Font;
    property Align;
    property Color;
    property OnClick;
    property OnMouseDown;
    property OnMouseUp;
    property OnMouseMove;
    property OnDblClick;
    property OnDragDrop;
    property OnDragOver;
    property OnCheckRegionClick : TRegionClickEvent read FOnCheckRegionClick write FOnCheckRegionClick;
    property OnBodyRegionClick : TRegionClickEvent read FOnBodyRegionClick write FOnBodyRegionClick;
    property OnEditableChanged : TNotifyEvent read FOnEditableChanged write FOnEditableChanged;
    end;procedure Register;