AIMP Forum

AIMP for Windows => Skin Editor, Skin Engine => Вопросы / Questions => Topic started by: Remoder on July 31, 2020, 16:22:37

Title: Исчезает форма
Post by: Remoder on July 31, 2020, 16:22:37
Подскажите, может дело в скрипте.  ;) Скрипт меняет положение скролла с правой стороны на левую, но заметил что тогда возникают глюки либо с плейлистом или лирикой (а я как раз и меняю положение этих двух скролл баров), они исчезают или меняют размер.
procedure Execute(var State: Integer);
var
SZ, SX : TComponent;
begin
 
SZ := FindObject('pwPlaylistScrollbarHost');
SX := FindObject('ibwLyricsScrollbar');

case State of
0:
begin
SZ.BeginUpdate;
SX.BeginUpdate;

SZ.Set('Alignment','laLeft');

SX.Set('Alignment','laLeft');

SZ.EndUpdate;
SX.EndUpdate;
end;
1:
begin
SZ.BeginUpdate;
SX.BeginUpdate;


SZ.Set('Alignment','laRight');

SX.Set('Alignment','laRight');

SZ.EndUpdate;
SX.EndUpdate;
end;
end;
end;
Title: Re: Исчезает форма
Post by: Black_AVP_Bim on July 31, 2020, 17:12:25
У скроллбара нет свойства Alignment (см. окно свойств).
Менять надо у контейнера, в который тот сроллбар помещён.
Title: Re: Исчезает форма
Post by: Remoder on July 31, 2020, 17:22:10
А я и меняю у контейнера. Так-то скрипт тогда правильной и  выходит проблема в скин движке? - или нужно память очищать или по одному значению вписывать?
Title: Re: Исчезает форма
Post by: Black_AVP_Bim on July 31, 2020, 17:29:06
По именам в скрипте, ведь, невозможно понять, что это за элемент.
Тогда надо раpбираться в структуре контейнеров. Основной контейнер должен иметь выравнивание laClient, со скроллбаром - laLeft/laRight. Оба они должны быть помещены в общий контейнер окна. Если контейнеров на одном уровне больше двух, тогда надо позаботиться ещё и об AlignmentLevel.
Title: Re: Исчезает форма
Post by: Remoder on July 31, 2020, 18:02:41
Да стандартное расположение по умолчанию. А что дает уровень выравнивания - если у меня почти все хорошо работает - но иногда дает сбой если играться в скине выбором расположения скролл бара и вкладок. Можете посмотреть?
https://drive.google.com/file/d/1RCYGa52g5FpfcuujZj_ijwBn2NcCMijt/view?usp=sharing
Title: Re: Исчезает форма
Post by: Black_AVP_Bim on July 31, 2020, 18:25:06
Мне влом разбираться в таком проекте, быстрее пример набросать.
Title: Re: Исчезает форма
Post by: Remoder on July 31, 2020, 18:41:55
И чем отличается ваш пример от моего. Scroll_Side - скрипт и скроллы на виду (то-есть их контейнеры) 1 в плейлисте и 1 в лирике.


В справке пишут к скрипту  >>
1. Значение по умолчанию в скрипте и в редакторе должно быть одно и то же, иначе интерфейс будет сбоить при изменении значения счетчика.
3. Связка BeginUpdate / EndUpdate позволяет отключить рассылку уведомлений об изменениях в элементе на время его редактирования. Рекомендуется к использованию при изменении более одного свойства за раз.
1. -  Может и не совпадает у меня  :-\
3. - А как применять с двумя свойствами как у меня?
Title: Re: Исчезает форма
Post by: Black_AVP_Bim on July 31, 2020, 19:08:32
И чем отличается ваш пример от моего.
Ну, по крайней мере тем, что он работает.
BeginUpdate / EndUpdate имеет смысл применять когда много перерисовывается, а тут один элемент перебрасывается.
Title: Re: Исчезает форма
Post by: Remoder on July 31, 2020, 20:04:24
Спасибо! Теперь вроде как не глючит интерфейс.

Сделал так - сойдет?

procedure Execute(var State: Integer);
var
  S: String;
 
begin
  if State = 0 then s:= 'laLeft' else S:= 'laRight';             
  FindObject('pwPlaylistScrollbarHost').Set('Alignment', S);
  FindObject('ibwLyricsScrollbar').Set('Alignment', S);
end;

Малая буква "s", не имеет значение регистр?
Title: Re: Исчезает форма
Post by: Black_AVP_Bim on July 31, 2020, 20:10:49
Сделал так - сойдет?
Да, всё правильно.

Малая буква "s", не имеет значение регистр?
В Delphi - нет, для красоты можно исправить на прописную.