unit uCreateNotify; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, fFontSettings, fColorSettings, FMX.StdCtrls, FMX.Edit, FMX.Controls.Presentation, FMX.ListBox, FMX.EditBox, FMX.SpinBox, FMX.Colors,uRecords; type TfCreateNotify = class(TForm) btnESImageOpen: TButton; btnESSoundOpen: TButton; edtESImage: TEdit; edtESSound: TEdit; edtESTitle: TEdit; Label58: TLabel; Label68: TLabel; frColorSettings1: TfrColorSettings; frFontSettings2: TfrFontSettings; GroupBox10: TGroupBox; Label38: TLabel; sbTimeMsg: TSpinBox; Label39: TLabel; sbWebServerPort: TSpinBox; Label2: TLabel; cbEventsType: TComboBox; Label3: TLabel; edtIF: TEdit; btnCreateEvent: TButton; btnESTest: TButton; GroupBox1: TGroupBox; GroupBox2: TGroupBox; frFontSettings3: TfrFontSettings; edtESMessage: TEdit; procedure FormCreate(Sender: TObject); procedure btnCreateEventClick(Sender: TObject); private { Private declarations } function GetColorFromColorPanel(aColor: TAlphaColor): string; public { Public declarations } end; var fCreateNotify: TfCreateNotify; implementation uses uGeneral; {$R *.fmx} function TfCreateNotify.GetColorFromColorPanel(aColor: TAlphaColor): string; var Color: TAlphaColor; r, G, B: Byte; A: Real; FS: TFormatSettings; begin Color := aColor; r := TAlphaColorRec(Color).r; G := TAlphaColorRec(Color).G; B := TAlphaColorRec(Color).B; A := TAlphaColorRec(Color).A / 255; // Преобразуем альфа-канал в диапазон 0..1 // Устанавливаем точку в качестве десятичного разделителя FS := TFormatSettings.Create; FS.DecimalSeparator := '.'; result := Format('rgba(%d, %d, %d, %.2f)', [r, G, B, A], FS); end; procedure TfCreateNotify.btnCreateEventClick(Sender: TObject); var OBSNotify: TOBSNotify; begin with OBSNotify do begin Picture:=edtESImage.Text; Sound:=edtESSound.Text; ColorBlock:= GetColorFromColorPanel(frColorSettings1.cpStyleBlockColor.Color); SolidBorder:=round(frColorSettings1.sbStyleBlockBorderSize.Value); Paddings:=round(frColorSettings1.sbStyleBlockPadding.Value); ColorBorder:=frColorSettings1.ccbStyleBorderColor.ItemIndex; ColorBackground:=frColorSettings1.ccbBColor.ItemIndex; HeaderText:=edtESTitle.text; HeaderColorFont:=frFontSettings2.ccbFontColor.ItemIndex; HeaderSizeFont:=round(frFontSettings2.sbFontSize.Value); HeaderStyleFont:=frFontSettings2.cbFontStyleDefault.ItemIndex; MessText:=edtESMessage.text; MessColorFont:=frFontSettings3.ccbFontColor.ItemIndex; MessSizeFont:=round(frFontSettings3.sbFontSize.Value); MessStyleFont:=frFontSettings3.cbFontStyleDefault.ItemIndex; TimeMess:=round(sbTimeMsg.Value); TypeEvent:=cbEventsType.ItemIndex; TypeEdit:=edtIF.Text; Port:=round(sbWebServerPort.Value);; end; TTW_Bot.frOBS1.AddNotify(OBSNotify); close; end; procedure TfCreateNotify.FormCreate(Sender: TObject); var i: Integer; SavedColor: TAlphaColor; c: TComponent; ColorStr: string; begin for i := 0 to frColorSettings1.ComponentCount - 1 do begin c := frColorSettings1.Components[i]; if c is TComboBox then begin TComboBox(c).ItemIndex := strtoint(DB.ReadSetting(TComboBox(c).Name, '0')); end; if c is TColorComboBox then begin TColorComboBox(c).ItemIndex := strtoint(DB.ReadSetting(TComboBox(c).Name, '147')); end; if c is TSpinBox then begin TSpinBox(c).text := DB.ReadSetting(TSpinBox(c).Name, '1'); end; if c is TColorPanel then begin ColorStr := DB.ReadSetting(TColorPanel(c).Name, 'FF000000'); if TryStrToUInt('$' + ColorStr, Cardinal(SavedColor)) then TColorPanel(c).Color := SavedColor else TColorPanel(c).Color := TAlphaColorRec.Black; end; if c is TEdit then begin if TEdit(c).Name <> 'edtPortServer' then TEdit(c).text := DB.ReadSetting(TEdit(c).Name, '0'); end; if c is TCheckBox then begin TCheckBox(c).IsChecked := DB.ReadSetting(TCheckBox(c).Name) = '1'; end; end; for i := 0 to frFontSettings2.ComponentCount - 1 do begin c := frFontSettings2.Components[i]; if c is TComboBox then begin TComboBox(c).ItemIndex := strtoint(DB.ReadSetting(TComboBox(c).Name, '0')); end; if c is TColorComboBox then begin TColorComboBox(c).ItemIndex := strtoint(DB.ReadSetting(TComboBox(c).Name, '147')); end; if c is TSpinBox then begin TSpinBox(c).text := DB.ReadSetting(TSpinBox(c).Name, '1'); end; if c is TColorPanel then begin ColorStr := DB.ReadSetting(TColorPanel(c).Name, 'FF000000'); if TryStrToUInt('$' + ColorStr, Cardinal(SavedColor)) then TColorPanel(c).Color := SavedColor else TColorPanel(c).Color := TAlphaColorRec.Black; end; if c is TEdit then begin if TEdit(c).Name <> 'edtPortServer' then TEdit(c).text := DB.ReadSetting(TEdit(c).Name, '0'); end; if c is TCheckBox then begin TCheckBox(c).IsChecked := DB.ReadSetting(TCheckBox(c).Name) = '1'; end; end; for i := 0 to frFontSettings3.ComponentCount - 1 do begin c := frFontSettings3.Components[i]; if c is TComboBox then begin TComboBox(c).ItemIndex := strtoint(DB.ReadSetting(TComboBox(c).Name, '0')); end; if c is TColorComboBox then begin TColorComboBox(c).ItemIndex := strtoint(DB.ReadSetting(TComboBox(c).Name, '147')); end; if c is TSpinBox then begin TSpinBox(c).text := DB.ReadSetting(TSpinBox(c).Name, '1'); end; if c is TColorPanel then begin ColorStr := DB.ReadSetting(TColorPanel(c).Name, 'FF000000'); if TryStrToUInt('$' + ColorStr, Cardinal(SavedColor)) then TColorPanel(c).Color := SavedColor else TColorPanel(c).Color := TAlphaColorRec.Black; end; if c is TEdit then begin if TEdit(c).Name <> 'edtPortServer' then TEdit(c).text := DB.ReadSetting(TEdit(c).Name, '0'); end; if c is TCheckBox then begin TCheckBox(c).IsChecked := DB.ReadSetting(TCheckBox(c).Name) = '1'; end; end; var n := 1; var cDir := myconst.fontsPath; // Искать в папке с программой var FileName := '*.*'; // Ищем все файлы ChDir(cDir); // войти в каталог var SearchRec: TSearchRec; if FindFirst(FileName, faArchive, SearchRec) = 0 then repeat if (SearchRec.Attr and faAnyFile) = SearchRec.Attr then begin frFontSettings2.cbFontStyleDefault.Items.Add(SearchRec.Name); frFontSettings3.cbFontStyleDefault.Items.Add(SearchRec.Name); Inc(n); end; until FindNext(SearchRec) <> 0; ChDir('..'); end; end.