TTrackbar работает справа налево, а не слева направо

Я ищу способ получить определенное изменение поведения Delphi Firemonkey TTrackbar в моем приложении Delphi 10.1 Seattle для Android.

Чего я хочу достичь? Трекбар имеет большой палец, который пользователь может перемещать. Он работает на дорожке, и сторона дорожки слева от бегунка до тех пор, пока левый конец дорожки не будет окрашен по умолчанию, чтобы указать значение, выбранное с помощью бегунка.

Я хочу, чтобы это было наоборот: дорожка прямо от большого пальца до правого конца должна иметь этот цвет.

Мне уже указали направление стилей, но после того, как я немного узнал о них, я все еще не до конца понимаю, как это сделать для моего случая, и я начинаю сомневаться, что простое изменение стиля сработает.

Я поместил TTrackbar в форму, щелкнул по ней правой кнопкой мыши и выбрал «редактировать пользовательский стиль». Я обнаружил, что есть htrack, который состоит из фона, TRectangle и подсветки, которая является TStyleObject. Будучи TStyleObject, он связан с регионом в файле png через SourceLookup и SourceLink. Но на этом моя мудрость останавливается.

  1. как найти этот png?
  2. даже если найду, что делать дальше? Я не хочу менять внешний вид этого "изюминки" TStyleObject, я хочу изменить его положение. Я уже пытался правильно закрепить его, но это, конечно, только часть решения, так как расчет ширины во время выполнения также должен быть «инвертирован» (1-x).

person Markus    schedule 25.01.2016    source источник


Ответы (1)


Вместо изменения стиля попробуйте повернуть трекбар. Установите свойство RotationAngle равным 180, а свойство Value таким же, как Max (если вы хотите, чтобы большой палец был изначально слева). Затем при использовании Value вычислите его, например. в виде:

procedure TForm21.TrackBar1Change(Sender: TObject);
begin
  Label1.Text := IntToStr(trunc((Sender as TTrackBar).Max -
                                (Sender as TTrackBar).Value));
end;

Визуально это выглядит так:

Изменение ориентации трекбара


Редактировать после комментария

Оказывается, поворот на 180° не работает на реальных устройствах Android (по крайней мере, на некоторых моделях), как сообщает OP на портале качества Embarcadero ( RSP-13156 )

person Tom Brunberg    schedule 25.01.2016
comment
Мне жаль это говорить: но ваш ответ, как бы хорошо он ни выглядел (у меня уже была идея с 180 градусами), показывает, что вы еще не тестировали его на реальном устройстве Android. По крайней мере, в D10 Seattle Trackbars, повернутые на углы › 85 градусов (может быть, 84 или 86 на самом деле, начинают вести себя странно, а повернутая на 180 градусов TTrackbar отображается только в дизайнере форм. На устройстве она невидима, даже если все еще реагирует) о взаимодействии с ним. Я по долгу службы сообщил об этом на портале качества: ссылка. Но спасибо за пытаешься мне помочь! - person Markus; 26.01.2016
comment
@Маркус Арргх. Правда я не тестировал на реальном устройстве (у меня нет Андроида). Можно было бы ожидать, что Emba разобралась с такими элементарными ошибками за все эти годы работы с FMX. Конечно, я голосовал за ваш RSP. Я делаю пометку в своем ответе. - person Tom Brunberg; 26.01.2016