⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simplegraph.hpp

📁 矢量绘图组件(开源版)
💻 HPP
📖 第 1 页 / 共 5 页
字号:
	__property int MinLeft = {read=GetField, write=SetField, index=0, default=0};
	__property int MinTop = {read=GetField, write=SetField, index=1, default=0};
	__property int MaxRight = {read=GetField, write=SetField, index=2, default=65535};
	__property int MaxBottom = {read=GetField, write=SetField, index=3, default=65535};
public:
	#pragma option push -w-inl
	/* TPersistent.Destroy */ inline __fastcall virtual ~TGraphConstraints(void) { }
	#pragma option pop
	
};


#pragma option push -b-
enum TGraphDrawOrder { doDefault, doNodesOnTop, doLinksOnTop };
#pragma option pop

class DELPHICLASS TCanvasRecall;
class PASCALIMPLEMENTATION TCanvasRecall : public System::TObject 
{
	typedef System::TObject inherited;
	
private:
	Graphics::TPen* fPen;
	Graphics::TFont* fFont;
	Graphics::TBrush* fBrush;
	int fCopyMode;
	int fTextFlags;
	Graphics::TCanvas* fReference;
	void __fastcall SetReference(Graphics::TCanvas* Value);
	
public:
	__fastcall TCanvasRecall(Graphics::TCanvas* AReference);
	__fastcall virtual ~TCanvasRecall(void);
	void __fastcall Store(void);
	void __fastcall Retrieve(void);
	__property Graphics::TCanvas* Reference = {read=fReference, write=SetReference};
};


#pragma option push -b-
enum TGraphClipboardFormat { cfNative, cfMetafile, cfBitmap };
#pragma option pop

typedef Set<TGraphClipboardFormat, cfNative, cfBitmap>  TGraphClipboardFormats;

typedef void __fastcall (__closure *TGraphNotifyEvent)(TSimpleGraph* Graph, TGraphObject* GraphObject);

typedef void __fastcall (__closure *TGraphContextPopupEvent)(TSimpleGraph* Graph, TGraphObject* GraphObject, const Types::TPoint &MousePos, bool &Handled);

typedef void __fastcall (__closure *TGraphObjectDrawEvent)(TSimpleGraph* Graph, TGraphObject* GraphObject, Graphics::TCanvas* Canvas);

typedef void __fastcall (__closure *TGraphBeginDragEvent)(TSimpleGraph* Graph, TGraphObject* GraphObject, unsigned HT);

typedef void __fastcall (__closure *TGraphEndDragEvent)(TSimpleGraph* Graph, TGraphObject* GraphObject, unsigned HT, bool Cancelled);

typedef void __fastcall (__closure *TGraphStreamEvent)(TSimpleGraph* Graph, TGraphObject* GraphObject, Classes::TStream* Stream);

class DELPHICLASS TGraphLink;
typedef void __fastcall (__closure *TGraphHookEvent)(TSimpleGraph* Graph, TGraphObject* GraphObject, TGraphLink* Link, int Index);

typedef void __fastcall (__closure *TGraphCanHookEvent)(TSimpleGraph* Graph, TGraphObject* GraphObject, TGraphLink* Link, int Index, bool &CanHook);

typedef void __fastcall (__closure *TGraphCanRemoveEvent)(TSimpleGraph* Graph, TGraphObject* GraphObject, bool &CanRemove);

typedef void __fastcall (__closure *TGraphCanLinkEvent)(TSimpleGraph* Graph, TGraphLink* Link, TGraphObject* Source, TGraphObject* Target, bool &CanLink);

class DELPHICLASS TGraphNode;
typedef void __fastcall (__closure *TCanMoveResizeNodeEvent)(TSimpleGraph* Graph, TGraphNode* Node, int &NewLeft, int &NewTop, int &NewWidth, int &NewHeight, bool &CanMove, bool &CanResize);

typedef void __fastcall (__closure *TGraphNodeResizeEvent)(TSimpleGraph* Graph, TGraphNode* Node);

typedef void __fastcall (__closure *TGraphDrawEvent)(TSimpleGraph* Graph, Graphics::TCanvas* Canvas);

typedef void __fastcall (__closure *TGraphInfoTipEvent)(TSimpleGraph* Graph, TGraphObject* GraphObject, AnsiString &InfoTip);

#pragma option push -b-
enum TGraphBoundsKind { bkGraph, bkSelected, bkDragging };
#pragma option pop

struct TWMPrint;
#pragma option push -b-
enum TGraphChangeFlag { gcView, gcData, gcText, gcPlacement, gcDependency };
#pragma option pop

typedef Set<TGraphChangeFlag, gcView, gcDependency>  TGraphChangeFlags;

typedef TMetaClass*TGraphObjectClass;

#pragma option push -b-
enum TGraphZoomOrigin { zoTopLeft, zoCenter, zoCursor, zoCursorCenter };
#pragma option pop

#pragma option push -b-
enum THAlignOption { haNoChange, haLeft, haCenter, haRight, haSpaceEqually };
#pragma option pop

#pragma option push -b-
enum TVAlignOption { vaNoChange, vaTop, vaCenter, vaBottom, vaSpaceEqually };
#pragma option pop

#pragma option push -b-
enum TResizeOption { roNoChange, roSmallest, roLargest };
#pragma option pop

typedef bool __fastcall (__closure *TGraphForEachMethod)(TGraphObject* GraphObject, int UserData);

class PASCALIMPLEMENTATION TSimpleGraph : public Controls::TCustomControl 
{
	typedef Controls::TCustomControl inherited;
	
private:
	TGridSize fGridSize;
	Graphics::TColor fGridColor;
	bool fShowGrid;
	bool fSnapToGrid;
	bool fShowHiddenObjects;
	bool fHideSelection;
	bool fLockNodes;
	bool fLockLinks;
	Graphics::TColor fMarkerColor;
	TMarkerSize fMarkerSize;
	TZoom fZoom;
	TGraphObjectList* fObjects;
	TGraphObjectList* fSelectedObjects;
	TGraphObjectList* fDraggingObjects;
	bool fDefaultKeyMap;
	Menus::TPopupMenu* fObjectPopupMenu;
	TMetaClass*fDefaultNodeClass;
	TMetaClass*fDefaultLinkClass;
	bool fModified;
	TGraphCommandMode fCommandMode;
	TGraphScrollBar* fHorzScrollBar;
	TGraphScrollBar* fVertScrollBar;
	TGraphConstraints* fGraphConstraints;
	Word fMinNodeSize;
	TGraphDrawOrder fDrawOrder;
	bool fFixedScrollBars;
	bool fValidMarkedArea;
	#pragma pack(push, 1)
	Types::TRect fMarkedArea;
	#pragma pack(pop)
	
	bool fTransparent;
	TGraphObject* fDragSource;
	unsigned fDragHitTest;
	#pragma pack(push, 1)
	Types::TPoint fDragSourcePt;
	#pragma pack(pop)
	
	#pragma pack(push, 1)
	Types::TPoint fDragTargetPt;
	#pragma pack(pop)
	
	bool fDragModified;
	TCanvasRecall* fCanvasRecall;
	TGraphClipboardFormats fClipboardFormats;
	TGraphObject* fObjectAtCursor;
	TGraphNotifyEvent fOnObjectInitInstance;
	TGraphNotifyEvent fOnObjectInsert;
	TGraphNotifyEvent fOnObjectRemove;
	TGraphNotifyEvent fOnObjectChange;
	TGraphNotifyEvent fOnObjectSelect;
	TGraphNotifyEvent fOnObjectClick;
	TGraphNotifyEvent fOnObjectDblClick;
	TGraphContextPopupEvent fOnObjectContextPopup;
	TGraphObjectDrawEvent fOnObjectBeforeDraw;
	TGraphObjectDrawEvent fOnObjectAfterDraw;
	TGraphBeginDragEvent fOnObjectBeginDrag;
	TGraphEndDragEvent fOnObjectEndDrag;
	TGraphNotifyEvent fOnObjectMouseEnter;
	TGraphNotifyEvent fOnObjectMouseLeave;
	TGraphStreamEvent fOnObjectRead;
	TGraphStreamEvent fOnObjectWrite;
	TGraphHookEvent fOnObjectHook;
	TGraphHookEvent fOnObjectUnhook;
	TGraphCanHookEvent fOnCanHookLink;
	TGraphCanRemoveEvent fOnCanRemoveObject;
	TGraphCanLinkEvent fOnCanLinkObjects;
	TCanMoveResizeNodeEvent fOnCanMoveResizeNode;
	TGraphNodeResizeEvent fOnNodeMoveResize;
	Classes::TNotifyEvent fOnGraphChange;
	TGraphDrawEvent fOnBeforeDraw;
	TGraphDrawEvent fOnAfterDraw;
	Classes::TNotifyEvent fOnCommandModeChange;
	TGraphInfoTipEvent fOnInfoTip;
	Classes::TNotifyEvent fOnZoomChange;
	bool UpdatingScrollBars;
	int UpdateCount;
	int SaveModified;
	bool SaveRangeChange;
	#pragma pack(push, 1)
	Types::TRect SaveInvalidateRect;
	#pragma pack(pop)
	
	System::Set<TGraphBoundsKind, bkGraph, bkDragging>  SaveBoundsChange;
	Types::TRect SaveBounds[3];
	int SuspendQueryEvents;
	Classes::TMemoryStream* UndoStorage;
	void __fastcall SetGridSize(TGridSize Value);
	void __fastcall SetGridColor(Graphics::TColor Value);
	void __fastcall SetShowGrid(bool Value);
	void __fastcall SetTransparent(bool Value);
	void __fastcall SetShowHiddenObjects(bool Value);
	void __fastcall SetHideSelection(bool Value);
	void __fastcall SetLockNodes(bool Value);
	void __fastcall SetLockLinks(bool Value);
	void __fastcall SetMarkerColor(Graphics::TColor Value);
	void __fastcall SetMarkerSize(TMarkerSize Value);
	void __fastcall SetZoom(TZoom Value);
	void __fastcall SetDrawOrder(TGraphDrawOrder Value);
	void __fastcall SetFixedScrollBars(bool Value);
	void __fastcall SetCommandMode(TGraphCommandMode Value);
	void __fastcall SetHorzScrollBar(TGraphScrollBar* Value);
	void __fastcall SetVertScrollBar(TGraphScrollBar* Value);
	void __fastcall SetGraphConstraints(TGraphConstraints* Value);
	Types::TRect __fastcall GetBoundingRect(TGraphBoundsKind Kind);
	Types::TRect __fastcall GetVisibleBounds();
	Types::TPoint __fastcall GetCursorPos();
	void __fastcall SetCursorPos(const Types::TPoint &Pt);
	void __fastcall SetMarkedArea(const Types::TRect &Value);
	HIDESBASE MESSAGE void __fastcall WMPaint(Messages::TWMPaint &Msg);
	MESSAGE void __fastcall WMPrint(TWMPrint &Msg);
	HIDESBASE MESSAGE void __fastcall WMEraseBkgnd(Messages::TWMEraseBkgnd &Msg);
	HIDESBASE MESSAGE void __fastcall WMWindowPosChanging(Messages::TWMWindowPosMsg &Msg);
	HIDESBASE MESSAGE void __fastcall WMSize(Messages::TWMSize &Msg);
	HIDESBASE MESSAGE void __fastcall WMHScroll(Messages::TWMScroll &Msg);
	HIDESBASE MESSAGE void __fastcall WMVScroll(Messages::TWMScroll &Msg);
	HIDESBASE MESSAGE void __fastcall CNKeyDown(Messages::TWMKey &Msg);
	HIDESBASE MESSAGE void __fastcall CNKeyUp(Messages::TWMKey &Msg);
	HIDESBASE MESSAGE void __fastcall CMFontChanged(Messages::TMessage &Msg);
	HIDESBASE MESSAGE void __fastcall CMBiDiModeChanged(Messages::TMessage &Msg);
	HIDESBASE MESSAGE void __fastcall CMMouseLeave(Messages::TMessage &Msg);
	HIDESBASE MESSAGE void __fastcall CMHintShow(Forms::TCMHintShow &Msg);
	void __fastcall ObjectListChanged(System::TObject* Sender, TGraphObject* GraphObject, TGraphObjectListAction Action);
	void __fastcall SelectedListChanged(System::TObject* Sender, TGraphObject* GraphObject, TGraphObjectListAction Action);
	void __fastcall DraggingListChanged(System::TObject* Sender, TGraphObject* GraphObject, TGraphObjectListAction Action);
	void __fastcall ObjectChanged(TGraphObject* GraphObject, TGraphChangeFlags Flags);
	TGraphObject* __fastcall ReadGraphObject(Classes::TStream* Stream);
	void __fastcall WriteGraphObject(Classes::TStream* Stream, TGraphObject* GraphObject);
	
protected:
	virtual void __fastcall CreateParams(Controls::TCreateParams &Params);
	virtual void __fastcall CreateWnd(void);
	virtual void __fastcall Paint(void);
	DYNAMIC void __fastcall MouseDown(Controls::TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
	DYNAMIC void __fastcall MouseMove(Classes::TShiftState Shift, int X, int Y);
	DYNAMIC void __fastcall MouseUp(Controls::TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
	DYNAMIC void __fastcall DoContextPopup(const Types::TPoint &MousePos, bool &Handled);
	DYNAMIC void __fastcall Click(void);
	DYNAMIC void __fastcall DblClick(void);
	DYNAMIC void __fastcall DoEnter(void);
	DYNAMIC void __fastcall DoExit(void);
	virtual void __fastcall DoZoomChange(void);
	virtual void __fastcall DoGraphChange(void);
	virtual void __fastcall DoCommandModeChange(void);
	virtual void __fastcall DoBeforeDraw(Graphics::TCanvas* ACanvas);
	virtual void __fastcall DoAfterDraw(Graphics::TCanvas* ACanvas);
	virtual void __fastcall DoObjectClick(TGraphObject* GraphObject);
	virtual void __fastcall DoObjectDblClick(TGraphObject* GraphObject);
	virtual void __fastcall DoObjectInitInstance(TGraphObject* GraphObject);
	virtual void __fastcall DoObjectInsert(TGraphObject* GraphObject);
	virtual void __fastcall DoObjectRemove(TGraphObject* GraphObject);
	virtual void __fastcall DoObjectSelect(TGraphObject* GraphObject);
	virtual void __fastcall DoObjectChange(TGraphObject* GraphObject);
	virtual void __fastcall DoObjectMouseEnter(TGraphObject* GraphObject);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -