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

Как програмно изменить стиль в RAD Studio 10 Seatle.


Олег Киреев

Вопрос

Здравствуйте Добрые Люди.

Подскажите пожалуйста как програмно изменить стиль в RAD Studio 10 Seatle? Чтобы пользователь из КомбоБокса мог выбрать нужный. Пробовал по разному занося файл  стиля *.fsf в Ресурсы

проекта:

 

//выбор цветового стиля
procedure TForm_glavn.ComboBox1Change(Sender: TObject);
var
 Stream: TResourceStream;
// s:TStyleBook;
begin
if ComboBox1.ItemIndex=1 then
  begin
   Stream := TResourceStream.Create(HInstance, 'Resource_1' , RT_RCDATA);
    //s:=TStyleBook.Create(Self);
       try
       //s.LoadFromFile(TPath.GetDocumentsPath + PathDelim + 'AquaGraphite.style');
       StyleBook1.Styles[1].LoadFromStream(Stream);
       //StyleBook1.Resource.LoadFromStream(Stream);
       StyleBook1.Style.Release;
       //StyleBook1.LoadFromStream(Stream);
       //StyleBook1.CurrentItemIndex := 1;//1, 2
      //StyleBook1.StyleName:='Android';
 
       finally
       Stream.Free;
 
      end;
    end;
end;
 

и не получается.

С Уважением. Олег

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Модераторы
procedure LoadStyleByPlatform;
const
{$IFDEF ANDROID} StyleName = 'ANDROID'; {$ENDIF}
{$IFDEF MSWINDOWS} StyleName = 'WINDOWS'; {$ENDIF}
{$IFDEF MacOS} StyleName = {$IFDEF IOS} 'IOS'; {$ELSE} 'MACOS';{$ENDIF} {$ENDIF}

var
  MyStyle: TFmxObject;
begin
  if (FindResource(Hinstance, PChar(StyleName), RT_RCDATA) <> 0) then
  begin
    MyStyle := TStyleStreaming.LoadFromResource(Hinstance, StyleName, RT_RCDATA);
    TStyleManager.SetStyle(MyStyle);
  end;
end;

вот так загружается стиль из ресурсов, для определенной платформы

Ссылка на комментарий
  • 0
Здравствуйте ZuBy.
СпасиБо за ответ.
Но пожалуйста "разжуйте" мне этот код. Я ещё не так хорошо разбираюсь. Как же всётаки пользователю выбрав конкретное из КомбоБокса изменить стиль всех окон приложения?
С Уважением Олег.
Ссылка на комментарий
  • 0
  • Модераторы
procedure LoadStyleByName(const StyleName: string);
var
  MyStyle: TFmxObject;
begin
  if FileExists(StyleName) then
  begin
    MyStyle := TStyleStreaming.LoadFromFile(StyleName);
    TStyleManager.SetStyle(MyStyle);
  end;
end;

использовать так, если в ComboBox'e указаны имена

OnChange

LoadStyleByName('путь/'+ComboBox1.Items[ComboBox1.ItemIndex]);
Изменено пользователем ZuBy
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...