Вопрос Проблема со скриптом описания для компонентов

sergey3695

Ветеран
Модератор
Ну потому что вот так.
Код:
  WizardForm.ComponentsList.OnItemMouseMove:= @ShowCompDescription;
это компонентлист такой.
 

Vantilio

Новичок
Ну потому что вот так.
Код:
  WizardForm.ComponentsList.OnItemMouseMove:= @ShowCompDescription;
это компонентлист такой.
Извиняюсь конечно за глупый вопрос! Я просто не сильно в этом волоку, а только начинаю..
Но как мне всё таки, как говорится объединить их?
Я так понял здесь:
-------------------------------------------------------------------------------------------------------------
procedure ShowCompDescription(Sender: TObject; X, Y, Index: Integer; Area: TItemArea);
var
i: Integer;
begin
if Index = LastIndex then Exit;
CompIndex := -1;
for i := 0 to GetArrayLength(CompDescs) -1 do
begin
if (CompDescs.Index = Index) then
begin
CompIndex := i;
Break;
end;
end;
if (CompIndex >= 0) and (Area = iaItem) then
begin
if not FileExists(ExpandConstant('{tmp}\') + CompDescs[CompIndex].ImageName) then
ExtractTemporaryFile(CompDescs[CompIndex].ImageName);
CompDescImg.Bitmap.LoadFromFile(ExpandConstant('{tmp}\') + CompDescs[CompIndex].ImageName);
CompDescImg.Show;

CompDescText[2].Caption := CompDescs[CompIndex].Description;
CompDescText[2].Enabled := True;
end else
begin
CompDescText[2].Caption := CustomMessage('ComponentsInfo');
CompDescText[2].Enabled := False;
CompDescImg.Hide;
end;
LastIndex := Index;
end;
 

Vantilio

Новичок
И ещё не большой вопросик:

Центр текста по горизонтали - Alignment := taCenter;
Центр текста по вертикали - ?

Сним1.JPG
 
Последнее редактирование:

Kotyarko_O

Новичок
Vantilio, вертикального выравнивания нет.
Придётся дописывать дополнительные действия. В CompListMouseLeave немного опускать, а в ShowCompDescription - ставить на место.
 

Vantilio

Новичок
Спасибо за ответ! Попробую.
Но мне кажется получится вот так:

Сним44.jpg

А хотелось бы вот так:

Сним11.jpg

При наведении на компонент, выравнивание текста по вертикали.
 
Последнее редактирование:

Vantilio

Новичок
Пробовал по разному прикрутить - неполучатся!
Даже так:

Снимок.JPG
 
Последнее редактирование:

Vantilio

Новичок
Подскажите пожалуйста все известные Alignment: в Inno Setup Compiler

Мне известны только 3:
----------------------------------------------------------------------------------------------
TLabel
----------------------------------------------------------------------------------------------
Alignment:=taRightJustify; //выравнивание текста справа (по горизонтали)
Alignment:=taLeftJustify; //выравнивание текста слева (по горизонтали)
Alignment:=taCenter; //выравнивание текста по центру (по горизонтали)
----------------------------------------------------------------------------------------------
 

Kotyarko_O

Новичок
Мне известны только 3
Больше и нет.
Код:
TAlignment = (taLeftJustify, taRightJustify, taCenter);
Есть вариант... т.к. в примере, который вы используете, лейбл для описания имеет родителя - TPanel, то можно сделать всё следующим образом:
  • Для лейбла выставить AutoSize := True;
  • Оформить специальную процедуру, которая будет выравнивать весь лейбл, относительно его родителя. Типо такого (найдено на просторах интернета):
    Код:
    procedure CenterInParent(Control: TControl);
    begin
      if Assigned(Control) and Assigned(Control.Parent) then
      begin
        Control.Left := (Control.Parent.Width - Control.Width) div 2;
        Control.Top := (Control.Parent.Height - Control.Height) div 2;
      end;
    end;
  • В конце ShowCompDescription и CompListMouseLeave (смотря когда вам надо этот лейбл центрировать), после изменения Caption`а, эту процедуру и вызывать:
    Код:
    CenterInParent(CompDescText[2]);

Должно сработать, ничего сложного нет.
 
Последнее редактирование:

Vantilio

Новичок
Вот что вышло:

111.JPG

Но текст по центру не ровняется, а уходит вверх.
 

sergey3695

Ветеран
Модератор
Vantilio, [CustomMessages]desc=%nтекст или #13+'текст';
и сам опусти текст как надо.
 
Сверху