unit MainUnit; {$mode ObjFPC}{$H+} interface uses Classes, SysUtils, Fresnel.Forms, Fresnel.Controls, Fresnel.Events, FCL.Events, Fresnel.DemoRadioButton, Fresnel.DemoCheckbox; type { TMainForm } TMainForm = class(TFresnelForm) Body1: TBody; ScrollDiv1: TDiv; Div2: TDiv; Label1: TLabel; Label2: TLabel; Label3: TLabel; OptionsDiv: TDiv; OverflowXDiv: TDiv; OverflowXLabel: TLabel; OverflowXVisible: TDemoRadioButton; OverflowXHidden: TDemoRadioButton; OverflowXClip: TDemoRadioButton; OverflowXScroll: TDemoRadioButton; OverflowXAuto: TDemoRadioButton; OverflowYDiv: TDiv; OverflowYLabel: TLabel; OverflowYVisible: TDemoRadioButton; OverflowYHidden: TDemoRadioButton; OverflowYClip: TDemoRadioButton; OverflowYScroll: TDemoRadioButton; OverflowYAuto: TDemoRadioButton; AutoHideCheckBox: TDemoCheckBox; OverlayCheckBox: TDemoCheckBox; HaveButtonsCheckBox: TDemoCheckBox; RTLCheckBox: TDemoCheckBox; ThinCheckBox: TDemoCheckBox; BothEdgesCheckBox: TDemoCheckBox; ColorCheckBox: TDemoCheckBox; procedure MainFormCreate(Sender: TObject); procedure OnAutoHideClicked({%H-}Event : TAbstractEvent); procedure OnOverflowXClicked(Event : TAbstractEvent); procedure OnOverflowYClicked(Event : TAbstractEvent); procedure OnOverlayClicked({%H-}Event : TAbstractEvent); procedure OnHaveButtonsClicked({%H-}Event : TAbstractEvent); procedure OnRTLClicked({%H-}Event : TAbstractEvent); procedure OnThinClicked({%H-}Event : TAbstractEvent); procedure OnBothEdgesClicked({%H-}Event : TAbstractEvent); procedure OnColorClicked({%H-}Event : TAbstractEvent); private public procedure ApplyScrollbarGutter; end; var MainForm: TMainForm; implementation {$R *.lfm} { TMainForm } procedure TMainForm.MainFormCreate(Sender: TObject); begin Label1.Caption:='Fresnel is a visual component library based on CSS and custom drawn components.'; ScrollDiv1.Style:='overflow: auto; width: 200px; height: 50px;'; OverflowXAuto.Checked:=true; OverflowYAuto.Checked:=true; ScrollbarsHaveButtons:=true; AutoHideCheckBox.Checked:=ScrollbarsAutoHide; HaveButtonsCheckBox.Checked:=ScrollbarsHaveButtons; OverlayCheckBox.Checked:=ScrollbarsOverlay; // todo: stable end; procedure TMainForm.OnAutoHideClicked(Event: TAbstractEvent); begin ScrollbarsAutoHide:=AutoHideCheckBox.Checked; end; procedure TMainForm.OnOverflowXClicked(Event: TAbstractEvent); var El: TDemoRadioButton; begin El:=Event.Sender as TDemoRadioButton; //writeln('TMainForm.OnOverflowXClicked ',El.Caption); ScrollDiv1.SetStyleAttr('overflow-x',El.Caption); end; procedure TMainForm.OnOverflowYClicked(Event: TAbstractEvent); var El: TDemoRadioButton; begin El:=Event.Sender as TDemoRadioButton; //writeln('TMainForm.OnOverflowYClicked ',El.Caption); ScrollDiv1.SetStyleAttr('overflow-y',El.Caption); end; procedure TMainForm.OnOverlayClicked(Event: TAbstractEvent); begin ScrollbarsOverlay:=OverlayCheckBox.Checked; end; procedure TMainForm.OnHaveButtonsClicked(Event: TAbstractEvent); begin ScrollbarsHaveButtons:=HaveButtonsCheckBox.Checked; end; procedure TMainForm.OnThinClicked(Event: TAbstractEvent); begin if ThinCheckBox.Checked then ScrollDiv1.SetStyleAttr('scrollbar-width','thin') else ScrollDiv1.SetStyleAttr('scrollbar-width',''); end; procedure TMainForm.OnRTLClicked(Event: TAbstractEvent); begin if RTLCheckBox.Checked then ScrollDiv1.SetStyleAttr('direction','rtl') else ScrollDiv1.SetStyleAttr('direction',''); end; procedure TMainForm.OnBothEdgesClicked(Event: TAbstractEvent); begin ApplyScrollbarGutter; end; procedure TMainForm.OnColorClicked(Event: TAbstractEvent); begin if ColorCheckBox.Checked then ScrollDiv1.SetStyleAttr('scrollbar-color','red #f006') else ScrollDiv1.SetStyleAttr('scrollbar-color',''); end; procedure TMainForm.ApplyScrollbarGutter; var s: String; begin s:=''; if BothEdgesCheckBox.Checked then s:=s+' both-edges'; ScrollDiv1.SetStyleAttr('scrollbar-gutter',s); end; end.