diff options
Diffstat (limited to 'examples/apps/debugserver')
-rw-r--r-- | examples/apps/debugserver/fra_liveview.pas | 65 | ||||
-rw-r--r-- | examples/apps/debugserver/frm_main.pas | 50 |
2 files changed, 114 insertions, 1 deletions
diff --git a/examples/apps/debugserver/fra_liveview.pas b/examples/apps/debugserver/fra_liveview.pas new file mode 100644 index 00000000..80820dd5 --- /dev/null +++ b/examples/apps/debugserver/fra_liveview.pas @@ -0,0 +1,65 @@ +unit fra_liveview; + +{$mode objfpc}{$H+} + +interface + +uses + SysUtils, + Classes, + fpg_base, + fpg_main, + fpg_form, + fpg_panel, + fpg_grid; + +type + + TLiveViewFrame = class(TfpgFrame) + private + {@VFD_HEAD_BEGIN: fra_liveview} + Grid1: TfpgStringGrid; + {@VFD_HEAD_END: fra_liveview} + public + procedure AfterCreate; override; + end; + +{@VFD_NEWFORM_DECL} + +implementation + +{@VFD_NEWFORM_IMPL} + +procedure TLiveViewFrame.AfterCreate; +begin + {%region 'Auto-generated GUI code' -fold} + {@VFD_BODY_BEGIN: fra_liveview} + Name := 'fra_liveview'; + SetPosition(359, 215, 442, 104); + WindowTitle := 'fra_liveview'; + Hint := ''; + + Grid1 := TfpgStringGrid.Create(self); + with Grid1 do + begin + Name := 'Grid1'; + SetPosition(0, 4, 444, 98); + Anchors := [anLeft,anRight,anTop,anBottom]; + BackgroundColor := TfpgColor($80000002); + AddColumn('Desc', 100, taLeftJustify); + AddColumn('Value', 310, taLeftJustify); + FontDesc := '#Grid'; + HeaderFontDesc := '#GridHeader'; + Hint := ''; + RowCount := 5; + RowSelect := False; + ShowHeader := False; + TabOrder := 1; + end; + + {@VFD_BODY_END: fra_liveview} + {%endregion} +end; + + +end. diff --git a/examples/apps/debugserver/frm_main.pas b/examples/apps/debugserver/frm_main.pas index 12584f41..89543763 100644 --- a/examples/apps/debugserver/frm_main.pas +++ b/examples/apps/debugserver/frm_main.pas @@ -82,6 +82,7 @@ uses ,fpg_memo ,simpleipc ,dbugmsg + ,fra_liveview ; type @@ -101,6 +102,7 @@ type btnClear: TfpgButton; btnExpandView: TfpgButton; Bevel3: TfpgBevel; + btnLiveView: TfpgButton; {@VFD_HEAD_END: MainForm} miPause: TfpgMenuItem; FIPCSrv: TSimpleIPCServer; @@ -109,6 +111,7 @@ type FDiscarded: Integer; FShowOnMessage: Boolean; FMemo: TfpgMemo; + FLiveViewFrame: TLiveViewFrame; procedure StartServer; procedure StopServer; procedure CheckMessages(Sender: TObject); @@ -125,9 +128,12 @@ type procedure btnClearClicked(Sender: TObject); procedure btnPauseClicked(Sender: TObject); procedure btnStartClicked(Sender: TObject); + procedure btnLiveViewClicked(Sender: TObject); procedure GridDrawCell(Sender: TObject; const ARow, ACol: Integer; const ARect: TfpgRect; const AFlags: TfpgGridDrawState; var ADefaultDrawing: boolean); procedure GridRowChanged(Sender: TObject; ARow: Integer); procedure GridClicked(Sender: TObject); + procedure CreateLiveViewFrame; + procedure DestroyLiveViewFrame; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; @@ -214,6 +220,31 @@ begin FMemo.Text := grdMessages.Cells[2, grdMessages.FocusRow]; end; +procedure TMainForm.CreateLiveViewFrame; +begin + if Assigned(FLiveViewFrame) then + FLiveViewFrame.Free; + FLiveViewFrame := TLiveViewFrame.Create(self); + grdMessages.Height := grdMessages.Height - FLiveViewFrame.Height; + grdMessages.UpdateWindowPosition; + FLiveViewFrame.SetPosition(grdMessages.Left, grdMessages.Bottom+1, grdMessages.Width, FLiveViewFrame.Height); +end; + +procedure TMainForm.DestroyLiveViewFrame; +begin + grdMessages.Height := grdMessages.Height + FLiveViewFrame.Height; + FreeAndNil(FLiveViewFrame); + grdMessages.UpdateWindowPosition; +end; + +procedure TMainForm.btnLiveViewClicked(Sender: TObject); +begin + if btnLiveView.Down then + CreateLiveViewFrame + else + DestroyLiveViewFrame; +end; + procedure TMainForm.StartServer; begin FIPCSrv := TSimpleIPCServer.Create(nil); @@ -308,7 +339,7 @@ const begin if btnExpandView.Down then begin - FMemo := CreateMemo(self, grdMessages.Right + cSpacing, grdMessages.Top, 200, grdMessages.Height); + FMemo := CreateMemo(self, grdMessages.Right + cSpacing, grdMessages.Top, 200, Height - grdMessages.Top - cSpacing); FMemo.UpdateWindowPosition; grdMessages.Anchors := grdMessages.Anchors - [anRight]; Width := Width + FMemo.Width + (2 * cSpacing); @@ -557,6 +588,23 @@ begin Style := bsLowered; end; + btnLiveView := TfpgButton.Create(Bevel1); + with btnLiveView do + begin + Name := 'btnLiveView'; + SetPosition(156, 2, 24, 24); + Text := 'LV'; + AllowAllUp := True; + Flat := True; + FontDesc := '#Label1'; + GroupIndex := 3; + Hint := ''; + ImageName := ''; + TabOrder := 8; + Focusable := False; + OnClick := @btnLiveViewClicked; + end; + {@VFD_BODY_END: MainForm} {%endregion} |