AIMP Forum

AIMP for Windows => Skin Editor, Skin Engine => Вопросы / Questions => Topic started by: McClaud on August 09, 2016, 07:52:35

Title: Изменение RowContentOffsets в Фонотеке
Post by: McClaud on August 09, 2016, 07:52:35
В нынешней Фонотеке меня не устраивает избыток «воздуха»: слишком большие межстрочные интервалы, отбирающие полезную площадь. Было бы неплохо менять их на уровне скина, посему вопрос:

 Можно ли через скрипт «достучаться» до параметров MLGroupingTree
(полный путь: MusicLibraryFrame/library/libraryContent/libraryContentClient/libraryContentClientTreePane/ libraryContentClientTreePaneClient/MLGroupingTree)
Необходимо с кнопки менять параметры
StyleContent/RowContentOffsets(Bottom и Top, либо All).
(ну и, до кучи: StyleContent/AlphabeticIndexIndentBetweenCells)

А так же до MLTable
(полный путь: MusicLibraryFrame/library/libraryContent/libraryContentClient/libraryContentClientTablePane/ libraryContentClientTablePaneClient/MLGroupingTree)
Необходимо менять параметр StyleContent/RowContentOffsets(Bottom и Top, либо All).

Если можно, то пример скрипта
Title: Re: Изменение RowContentOffsets в Фонотеке
Post by: Aleksandr009 on August 09, 2016, 08:24:11
Скрипт одинаковый и для  MLGroupingTree и для MLTable
Code: [Select]
procedure Execute(var State: Integer);                         
var     
  MLT : TComponent;             
begin 
  MLT := FindObject('MLGroupingTree'); 
  case State of                                           
    0:
      begin
        MLT.Set('StyleContent.RowContentOffsets.Top', 8 );            // Отступ сверху
        MLT.Set('StyleContent.RowContentOffsets.Bottom', 0 );       // Отступ снизу
        MLT.Set('StyleContent.AlphabeticIndexIndentBetweenCells', 0 );
      end;
    1:
      begin
        MLT.Set('StyleContent.RowContentOffsets.Top', 0);
        MLT.Set('StyleContent.RowContentOffsets.Bottom', 8 );
        MLT.Set('StyleContent.AlphabeticIndexIndentBetweenCells', 0 );
      end;
  end;
end;

Вместо Top и Bottom может быть Left, Riht или All

Для второго скрипта вставить MLTable вместо MLGroupingTree.
Title: Re: Изменение RowContentOffsets в Фонотеке
Post by: McClaud on August 09, 2016, 12:10:05
Скрипт одинаковый и для  MLGroupingTree и для MLTable
Для второго скрипта вставить MLTable вместо MLGroupingTree.
Спасибо, всё получилось!
Title: Re: Изменение RowContentOffsets в Фонотеке
Post by: Black_AVP on August 09, 2016, 13:25:58
В вышеприведённом скрипте строчка:
MLT.Set('StyleContent.AlphabeticIndexIndentBetweenCells', 0 )
не имеет смысла, поскольку в обоих случаях присваивается одно и тоже значение "0" - его можно задать в свойствах.

Лучше одновременно менять отступы Top и Bottom, тогда текст остаётся правильно центрированным по вертикали.
Во вложении пример, в которовм слайдером можно менять эти отступы от 0 до 9.

Code: [Select]
procedure Execute(var State: Integer);
begin
  with FindObject('MLTable') do
    begin
      Set('StyleContent.RowContentOffsets.Top', State);
      Set('StyleContent.RowContentOffsets.Bottom', State)
    end
end;

Но, ИМХО, нет смысла выносить это в настройки скина и оперативно менять, достаточно просто указать эти значения в свойствах, применительно к размеру используемого шрифта.
Title: Re: Изменение RowContentOffsets в Фонотеке
Post by: McClaud on August 09, 2016, 15:18:53
В вышеприведённом скрипте строчка:
MLT.Set('StyleContent.AlphabeticIndexIndentBetweenCells', 0 )
не имеет смысла, поскольку в обоих случаях присваивается одно и тоже значение "0" - его можно задать в свойствах.

Лучше одновременно менять отступы Top и Bottom, тогда текст остаётся правильно центрированным по вертикали.
Во вложении пример, в которовм слайдером можно менять эти отступы от 0 до 9.

Code: [Select]
procedure Execute(var State: Integer);
begin
  with FindObject('MLTable') do
    begin
      Set('StyleContent.RowContentOffsets.Top', State);
      Set('StyleContent.RowContentOffsets.Bottom', State)
    end
end;

Но, ИМХО, нет смысла выносить это в настройки скина и оперативно менять, достаточно просто указать эти значения в свойствах, применительно к размеру используемого шрифта.

В примере скрипта значения роли не играют, я всё равно свои подставил. По поводу Top и Bottom согласен, я так и сделал.  Плавное же изменение интервала,  думаю, лишнее. Я, помимо дефолтного 8, сделал 2. Как раз соответствует интервалу в плейлисте, при сокрытии второй строки. Кнопка оперативного выбора для таких, как я, предпочитающих компактное отображение информации  ;D
Title: Re: Изменение RowContentOffsets в Фонотеке
Post by: Black_AVP on August 09, 2016, 15:49:54
... Плавное же изменение интервала,  думаю, лишнее. Я, помимо дефолтного 8, сделал 2.
Дело не в плавности, к скрипту можно подключить и кнопку (и не одну), указав в Action конкретное значение. Вообще, стоит ли этим озадачивать пользователя? Поставь в свойствах значение, которое тебе нравится, полагаю, никто против не будет.
Title: Re: Изменение RowContentOffsets в Фонотеке
Post by: McClaud on August 09, 2016, 16:00:41
Дело не в плавности, к скрипту можно подключить и кнопку (и не одну), указав в Action конкретное значение. Вообще, стоит ли этим озадачивать пользователя? Поставь в свойствах значение, которое тебе нравится, полагаю, никто против не будет.
Дискуссия на эту тему выявила и приверженцев двойного интервала (так что недовольные фиксированным одинарным найдутся). Ещё более расширять его ни к чему, а одинарный меня вполне устраивает. Посему я и решил ограничиться этими двумя значениями. Несколько обновлённых скинов уже выложил (https://www.aimp.ru/forum/index.php?topic=51320.msg313807#msg313807).