• 0
gelo1

Как програмно изменить стиль в 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;
 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 ответов на этот вопрос

  • 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Как же всётаки пользователю выбрав конкретное из КомбоБокса изменить стиль всех окон приложения?

http://delphifmandroid.blogspot.com/2013/11/firemonkey.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

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

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