From cf66621f3e5df509670a9b7bfda7952d653aa672 Mon Sep 17 00:00:00 2001 From: David Laurence Emerson Date: Mon, 27 May 2013 23:16:07 -0700 Subject: Scroll-frame: added demo --- examples/gui/scrollframe/frame_test.lpi | 78 ++++++++++++++++++++++ examples/gui/scrollframe/frame_test.lpr | 114 ++++++++++++++++++++++++++++++++ 2 files changed, 192 insertions(+) create mode 100644 examples/gui/scrollframe/frame_test.lpi create mode 100644 examples/gui/scrollframe/frame_test.lpr diff --git a/examples/gui/scrollframe/frame_test.lpi b/examples/gui/scrollframe/frame_test.lpi new file mode 100644 index 00000000..2f5b09bd --- /dev/null +++ b/examples/gui/scrollframe/frame_test.lpi @@ -0,0 +1,78 @@ + + + + + + + + + + + + + <UseAppBundle Value="False"/> + <ResourceType Value="res"/> + </General> + <i18n> + <EnableI18N LFM="False"/> + </i18n> + <VersionInfo> + <StringTable ProductVersion=""/> + </VersionInfo> + <BuildModes Count="1"> + <Item1 Name="Default" Default="True"/> + </BuildModes> + <PublishOptions> + <Version Value="2"/> + <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/> + <ExcludeFileFilter Value="*.(bak|ppu|o|so);*~;backup"/> + </PublishOptions> + <RunParams> + <local> + <FormatVersion Value="1"/> + <LaunchingApplication PathPlusParams="/usr/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/> + </local> + </RunParams> + <RequiredPackages Count="1"> + <Item1> + <PackageName Value="fpgui_toolkit"/> + </Item1> + </RequiredPackages> + <Units Count="1"> + <Unit0> + <Filename Value="frame_test.lpr"/> + <IsPartOfProject Value="True"/> + <UnitName Value="frame_test"/> + </Unit0> + </Units> + </ProjectOptions> + <CompilerOptions> + <Version Value="11"/> + <Target> + <Filename Value="frame_test"/> + </Target> + <SearchPaths> + <IncludeFiles Value="$(ProjOutDir)"/> + <UnitOutputDirectory Value="lib/$(TargetCPU)-$(TargetOS)"/> + </SearchPaths> + <Other> + <CompilerMessages> + <MsgFileName Value=""/> + </CompilerMessages> + <CompilerPath Value="$(CompPath)"/> + </Other> + </CompilerOptions> + <Debugging> + <Exceptions Count="3"> + <Item1> + <Name Value="EAbort"/> + </Item1> + <Item2> + <Name Value="ECodetoolError"/> + </Item2> + <Item3> + <Name Value="EFOpenError"/> + </Item3> + </Exceptions> + </Debugging> +</CONFIG> diff --git a/examples/gui/scrollframe/frame_test.lpr b/examples/gui/scrollframe/frame_test.lpr new file mode 100644 index 00000000..3fd804f5 --- /dev/null +++ b/examples/gui/scrollframe/frame_test.lpr @@ -0,0 +1,114 @@ +program frame_test; + +{$mode objfpc}{$H+} + +uses + Classes, + sysutils, + fpg_base, + fpg_main, + fpg_button, + fpg_label, + fpg_form, + fpg_panel, + fpg_scrollframe + ; + +procedure create_buttons (f : TfpgFrame); +var + i, j, ij : integer; + b : TfpgButton; +const + num_button_cols = 4; + num_button_rows = 5; +begin + with f do begin + for i := 0 to num_button_cols-1 do + begin + for j := 0 to num_button_rows-1 do + begin + if (j>4) and (j<16) then continue; + ij := j + num_button_rows*i; + b := TfpgButton.Create(f); + with b do begin + SetPosition(20+i*105, 50+j*30, 100, 25); + name := 'button' + inttostr(ij); + Text := 'Button ' + inttostr(ij+1); + FontDesc := '#Label1'; + end; + end; + end; + end; +end; + +type + + { t_sample_frame } + + t_sample_frame = class (TfpgAutoSizingFrame) + protected + my_color : TfpgColor; + embed_button : TfpgButton; + procedure click_embed_button (Sender: TObject); + procedure paint_my_stuff (Sender: TObject); + public + procedure AfterCreate; override; + end; + +procedure t_sample_frame.click_embed_button(Sender: TObject); +var + inner_bevel : TfpgBevel; + inner_frame : TfpgScrollFrame; +begin + embed_button.Visible:=false; + inner_bevel := TfpgBevel.Create(self); + with inner_bevel do begin; + SetPosition(90, 210, 300, 300); + BorderStyle := bsDouble; + Shape := bsFrame; + UpdateWindowPosition; + end; + RecalcFrameSize; + + inner_frame := TfpgScrollFrame.Create(inner_bevel, t_sample_frame); + inner_frame.Align:=alClient; +end; + +procedure t_sample_frame.paint_my_stuff (Sender: TObject); +begin + canvas.Color := my_color; + canvas.FillRectangle (30, 30, 200, 400); +end; + +procedure t_sample_frame.AfterCreate; +begin + inherited AfterCreate; + MarginBR:=7; + my_color:=TfpgColor(random(high(longint))); + embed_button := CreateButton (self, 20, 240, 270, + 'Click to embed another Scroll-Frame here', @click_embed_button); + OnPaint:=@paint_my_stuff; + create_buttons(self); + RecalcFrameSize; +end; + + +var + form: TfpgForm; + outer_frame: TfpgScrollFrame; + +begin + fpgApplication.Initialize; + form := TfpgForm.Create(nil); + form.SetPosition(0,0,380,360); + outer_frame := TfpgScrollFrame.Create(form, t_sample_frame); + outer_frame.Align:=alClient; + outer_frame.ContentFrame.RecalcFrameSize; + try + form.Show; + fpgApplication.Run; + finally + form.Free; + end; +end. + -- cgit v1.2.3-70-g09d2