| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- unit MainUnit;
- {$mode objfpc}{$H+}
- interface
- uses
- Classes, SysUtils, Fresnel.Forms, Fresnel.DOM, Fresnel.Controls, Fresnel.Events, FCL.Events,
- Fresnel.Classes, Fresnel.DemoRadioButton, Fresnel.DemoSlider;
- type
- { TMainForm }
- TMainForm = class(TFresnelForm)
- procedure MainFormCreate(Sender: TObject);
- private
- procedure OnAntAlignClick(Event: TAbstractEvent);
- procedure OnAntHeightChanged(Sender: TObject);
- procedure OnBirdAlignClick(Event: TAbstractEvent);
- procedure OnBirdHeightChanged(Sender: TObject);
- public
- OptionsDiv: TDiv;
- AntDiv: TDiv;
- AntCaption: TLabel;
- AntNone: TDemoRadioButton;
- AntLeft: TDemoRadioButton;
- AntRight: TDemoRadioButton;
- AntHeightSlider: TDemoSlider;
- BirdDiv: TDiv;
- BirdCaption: TLabel;
- BirdNone: TDemoRadioButton;
- BirdLeft: TDemoRadioButton;
- BirdRight: TDemoRadioButton;
- BirdHeightSlider: TDemoSlider;
- TextDiv: TDiv;
- Label1, BirdLabel, Label3, AntLabel, Label5, Label6, Label7, Label8, Label9: TLabel;
- end;
- var
- MainForm: TMainForm;
- implementation
- {$R *.lfm}
- { TMainForm }
- procedure TMainForm.MainFormCreate(Sender: TObject);
- function AddDiv(aName: string; aParent: TFresnelElement): TDiv;
- begin
- Result:=TDiv.Create(Self);
- Result.Name:=aName;
- Result.Parent:=aParent;
- end;
- function AddLabel(aName, aCaption: string; aParent: TFresnelElement): TLabel;
- begin
- Result:=TLabel.Create(Self);
- Result.Name:=aName;
- Result.Caption:=aCaption;
- Result.Parent:=aParent;
- end;
- function AddRadioButton(aName, aCaption: string; aParent: TFresnelElement;
- const OnClick: TFresnelEventHandler = nil): TDemoRadioButton;
- begin
- Result:=TDemoRadioButton.Create(Self);
- Result.Name:=aName;
- Result.Caption:=aCaption;
- Result.Parent:=aParent;
- Result.AddEventListener(evtClick,OnClick);
- end;
- function AddSlider(aName, aCaption: string; aParent: TFresnelElement;
- MinPos, MaxPos, CurPos: TFresnelLength; ValueFormat: string;
- const OnChange: TNotifyEvent): TDemoSlider;
- begin
- Result:=TDemoSlider.Create(Self);
- Result.Name:=aName;
- Result.Caption:=aCaption;
- Result.OnChange:=OnChange;
- Result.MinPosition:=MinPos;
- Result.MaxPosition:=MaxPos;
- Result.SliderPosition:=CurPos;
- Result.ValueFormat:=ValueFormat;
- Result.Parent:=aParent;
- end;
- begin
- Style:='font-size: 15px;';
- Stylesheet.Text:=':root { font-size: 15px; }'+LineEnding
- +'#TextDiv>label { margin: 0 3px; border: 1px solid blue; }'+LineEnding;
- OptionsDiv:=AddDiv('OptionsDiv',Viewport);
- OptionsDiv.Style:='padding: 6px; border: 1px solid black; margin: 6px; width: 100px;';
- AntDiv:=AddDiv('AntDiv',OptionsDiv);
- AntCaption:=AddLabel('AntCaption','Ant',AntDiv);
- AntNone:=AddRadioButton('AntNone','none',AntDiv,@OnAntAlignClick);
- AntLeft:=AddRadioButton('AntLeft','left',AntDiv,@OnAntAlignClick);
- AntRight:=AddRadioButton('AntRight','right',AntDiv,@OnAntAlignClick);
- AntHeightSlider:=AddSlider('AntHeightSlider','height',AntDiv,
- 0.5,5,2,'%fem',@OnAntHeightChanged);
- BirdDiv:=AddDiv('BirdDiv',OptionsDiv);
- BirdDiv.Style:='margin-top: 6px;';
- BirdCaption:=AddLabel('BirdCaption','Bird',BirdDiv);
- BirdNone:=AddRadioButton('BirdNone','none',BirdDiv,@OnBirdAlignClick);
- BirdLeft:=AddRadioButton('BirdLeft','left',BirdDiv,@OnBirdAlignClick);
- BirdRight:=AddRadioButton('BirdRight','right',BirdDiv,@OnBirdAlignClick);
- BirdHeightSlider:=AddSlider('BirdHeightSlider','height',BirdDiv,
- 0.5,5,2,'%fem',@OnBirdHeightChanged);
- TextDiv:=AddDiv('TextDiv',Self);
- TextDiv.Style:='position: absolute; left: 126px; top: 6px; right: 6px;'
- +' border: 1px solid black; padding: 3px;';
- Label1:=AddLabel('Label1','Label1',TextDiv);
- AntLabel:=AddLabel('AntLabel','Ant',TextDiv);
- AntLabel.Style:='background: #ccc;';
- Label3:=AddLabel('Label3','Label3',TextDiv);
- BirdLabel:=AddLabel('BirdLabel','Bird',TextDiv);
- BirdLabel.Style:='background: #ccc;';
- Label5:=AddLabel('Label5','Label5',TextDiv);
- Label6:=AddLabel('Label6','LabelNo6',TextDiv);
- Label7:=AddLabel('Label7','LabelNo7',TextDiv);
- Label8:=AddLabel('Label8','Lbl8',TextDiv);
- Label9:=AddLabel('Label9','LabelNo9',TextDiv);
- OnBirdHeightChanged(Self);
- OnAntHeightChanged(Self);
- end;
- procedure TMainForm.OnAntAlignClick(Event: TAbstractEvent);
- begin
- if Event.Sender=AntLeft then
- AntLabel.SetStyleAttr('float','left')
- else if Event.Sender=AntRight then
- AntLabel.SetStyleAttr('float','right')
- else
- AntLabel.SetStyleAttr('float','none');
- end;
- procedure TMainForm.OnAntHeightChanged(Sender: TObject);
- begin
- if (AntLabel=nil) or (AntHeightSlider=nil) then exit;
- AntLabel.SetStyleAttr('height',FloatToCSSStr(AntHeightSlider.SliderPosition)+'em');
- end;
- procedure TMainForm.OnBirdAlignClick(Event: TAbstractEvent);
- begin
- if Event.Sender=BirdLeft then
- BirdLabel.SetStyleAttr('float','left')
- else if Event.Sender=BirdRight then
- BirdLabel.SetStyleAttr('float','right')
- else
- BirdLabel.SetStyleAttr('float','none');
- end;
- procedure TMainForm.OnBirdHeightChanged(Sender: TObject);
- begin
- if (BirdLabel=nil) or (BirdHeightSlider=nil) then exit;
- BirdLabel.SetStyleAttr('height',FloatToCSSStr(BirdHeightSlider.SliderPosition)+'em');
- end;
- end.
|