Перейти к содержанию
Fire Monkey от А до Я

patrikey

Пользователи
  • Постов

    7
  • Зарегистрирован

  • Посещение

Весь контент patrikey

  1. Создал компонент. Квадратная кнопка. unit RectangleButton; interface uses System.SysUtils, System.Classes, System.UITypes, FMX.Types, FMX.Controls, FMX.Objects, FMX.StdCtrls, FMX.Ani, FMX.Dialogs; type TRectangleButton = class(TRectangle) private fClicked: Boolean; fMainColor: TAlphaColor; fClickedColor: TAlphaColor; fText: String; ColorAnimation: TColorAnimation; TextLabel: TLabel; protected procedure Click; override; procedure SetText(const Value: String); procedure SetMainColor(const Value: TAlphaColor); procedure SetClickedColor(const Value: TAlphaColor); procedure SetClicked(const Value: Boolean); public { Public declarations } published property Clicked: Boolean read fClicked write SetClicked; property MainColor: TAlphaColor read fMainColor write SetMainColor; property ClickedColor: TAlphaColor read fClickedColor write SetClickedColor; property Text: String read fText write SetText; procedure Unselect; constructor Create(aowner: TComponent); override; end; procedure Register; implementation procedure Register; begin RegisterComponents('Shapes', [TRectangleButton]); end; { TRectangleButton } procedure TRectangleButton.Click; begin inherited; if not fClicked then begin fClicked:= True; Fill.Color:= fClickedColor; ColorAnimation.Trigger:= ''; ColorAnimation.TriggerInverse:= ''; end; end; constructor TRectangleButton.Create(aowner: TComponent); begin inherited Create (AOwner); ColorAnimation:= TColorAnimation.Create(Self); with ColorAnimation do begin Parent:= Self; Stored:= False; AutoReverse:= False; Delay:= 0; Duration:= 0.2; PropertyName:= 'Fill.Color'; //StartValue:= Fill.Color; //StopValue:= ClickedColor; Trigger:= 'IsMouseOver=true'; TriggerInverse:= 'IsMouseOver=false'; end; TextLabel:= TLabel.Create(Self); with TextLabel do begin Stored:= False; Parent:= self; Align:= TAlignLayout.Contents; TextSettings.HorzAlign:= TTextAlign.Center; Text:= 'Text'; end; end; procedure TRectangleButton.SetClicked(const Value: Boolean); begin if Value then begin fClicked:= True; Fill.Color:= fClickedColor; ColorAnimation.Trigger:= ''; ColorAnimation.TriggerInverse:= ''; end; if not Value then begin fClicked:= False; Fill.Color:= fMainColor; ColorAnimation.Trigger:= 'IsMouseOver=true'; ColorAnimation.TriggerInverse:= 'IsMouseOver=false'; end; end; procedure TRectangleButton.SetClickedColor(const Value: TAlphaColor); begin if ClickedColor <> Value then begin ColorAnimation.StopValue:= Value; fClickedColor:= Value; end; end; procedure TRectangleButton.SetMainColor(const Value: TAlphaColor); begin if MainColor <> Value then begin if not Clicked then Fill.Color:= Value else Fill.Color:= fClickedColor; ColorAnimation.StartValue:= Value; fMainColor:= Value; end; end; procedure TRectangleButton.SetText(const Value: String); begin if TextLabel.Text <> Value then begin TextLabel.Text:= Value; fText:= Value; end; end; procedure TRectangleButton.Unselect; begin fClicked:= False; with ColorAnimation do begin Inverse:= True; Start; Trigger:= 'IsMouseOver=true'; TriggerInverse:= 'IsMouseOver=false'; end; end; end. Есть св-во Clicked, и если оно True, то компонент должен создаваться с Fill.Color=ClickedColor, но он создаётся вообще без заливки. Если Clicked=False, то всё нормально и компонент создаётся с Fill.Color=MainColor.
  2. Просто хочется создать LoginForm до создания MainForm.
  3. program LoginBug; uses System.StartUpCopy, FMX.Forms, Main in 'Main.pas' {MainForm}, Login in 'Login.pas' {LoginForm}; {$R *.res} begin if TLoginForm.Execute then begin Application.Initialize; Application.CreateForm(TMainForm, MainForm); Application.Run; end; end. Вы имеете ввиду выделенные begin end?
  4. patrikey

    Баг с LoginForm

    Добрый день. Возникла необходимость создать форму ввода логина и пароля. Всё реализовано таким образом: unit Main; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs; type TMainForm = class(TForm) private { Private declarations } public { Public declarations } end; var MainForm: TMainForm; implementation {$R *.fmx} end. unit Login; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.Edit; type TLoginForm = class(TForm) Edit1: TEdit; private { Private declarations } public class function Execute: Boolean; { Public declarations } end; var LoginForm: TLoginForm; implementation {$R *.fmx} { TForm2 } class function TLoginForm.Execute: Boolean; begin LoginForm:= TLoginForm.Create(nil); try Result:= LoginForm.ShowModal = mrOk; finally LoginForm.Free; end; end; end. program LoginBug; uses System.StartUpCopy, FMX.Forms, Main in 'Main.pas' {MainForm}, Login in 'Login.pas' {LoginForm}; {$R *.res} begin if TLoginForm.Execute then begin Application.Initialize; Application.CreateForm(TMainForm, MainForm); Application.Run; end; end. Но при запуске программы форма логина выглядит неактивной и отсутствует каретка в Edite. Кто-нибудь сталкивался с таким? Login.7z
  5. Добрый день. Проблема: при закрытии модального окна, на главной форме все компоненты остаются неактивными. Перепробовал всё что нашёл в Гугле. Ничего не помогло. Помогите, если кто сталкивался с подобной проблемой.
×
×
  • Создать...