diff options
author | Graeme Geldenhuys <graeme@mastermaths.co.za> | 2010-08-24 15:17:25 +0200 |
---|---|---|
committer | Graeme Geldenhuys <graeme@mastermaths.co.za> | 2010-08-24 15:17:25 +0200 |
commit | d5961565ddd037a54a3e0dc7a3694c24e66a097f (patch) | |
tree | 4a6547c0685b649830718cf60d6d20a7a0eba210 /src/gui/fpg_splitter.pas | |
parent | a28d45f3a9979011d6a02546ac0619fab0a13b82 (diff) | |
download | fpGUI-d5961565ddd037a54a3e0dc7a3694c24e66a097f.tar.xz |
splitter AutoSnap property added and OnSnap event.
Diffstat (limited to 'src/gui/fpg_splitter.pas')
-rw-r--r-- | src/gui/fpg_splitter.pas | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/gui/fpg_splitter.pas b/src/gui/fpg_splitter.pas index 8a5aa3d3..eabc2bd2 100644 --- a/src/gui/fpg_splitter.pas +++ b/src/gui/fpg_splitter.pas @@ -36,6 +36,7 @@ type NaturalNumber = 1..High(Integer); + TfpgSnapEvent = procedure(Sender: TObject; const AClosed: boolean) of object; TfpgSplitter = class(TfpgWidget) private @@ -49,12 +50,14 @@ type FOldSize: Integer; FSplit: Integer; FMouseOver: Boolean; + FOnSnap: TfpgSnapEvent; procedure CalcSplitSize(X, Y: Integer; out NewSize, Split: Integer); function FindControl: TfpgWidget; procedure SetColorGrabBar(const AValue: TfpgColor); procedure UpdateControlSize; procedure UpdateSize(const X, Y: Integer); protected + procedure DoOnSnap(const AClosed: Boolean); function DoCanResize(var NewSize: Integer): Boolean; virtual; procedure HandleLMouseDown(x, y: integer; shiftstate: TShiftState); override; procedure HandleLMouseUp(x, y: integer; shiftstate: TShiftState); override; @@ -69,7 +72,9 @@ type constructor Create(AOwner: TComponent); override; destructor Destroy; override; published + property AutoSnap: boolean read FAutoSnap write FAutoSnap default True; property ColorGrabBar: TfpgColor read FColorGrabBar write SetColorGrabBar default clColorGrabBar; + property OnSnap: TfpgSnapEvent read FOnSnap write FOnSnap; end; function CreateSplitter(AOwner: TComponent; ALeft, ATop, AWidth, AHeight: TfpgCoord; @@ -196,12 +201,21 @@ begin CalcSplitSize(X, Y, FNewSize, FSplit); end; +procedure TfpgSplitter.DoOnSnap(const AClosed: Boolean); +begin + if Assigned(FOnSnap) then + FOnSnap(self, AClosed); +end; + function TfpgSplitter.DoCanResize(var NewSize: Integer): Boolean; begin // Result := CanResize(NewSize); // omit onCanResize call Result := True; if Result and (NewSize <= FMinSize) and FAutoSnap then + begin NewSize := 0; + DoOnSnap(NewSize = 0); + end; end; procedure TfpgSplitter.HandleLMouseDown(x, y: integer; shiftstate: TShiftState); |