Inno Setup (создание инсталяционных пакетов). Часть 2

Статус
В этой теме нельзя размещать новые ответы.

HandyMan

Новичок
Подскажите пожалуйста как сделать WizardForm.ComponentsList полупрозрачным
 

Sten

Новичок
Может прозрачным?
Если я правильно понял, то вот:
Код:
[_Files]                               
Source: "1.bmp"; Flags: dontcopy solidbreak

[_code]
var
BorderWidth: Integer;
BmpFile1: TBitmapImage;

procedure InitializeWizard();
begin
ExtractTemporaryFile('1.bmp');

    BmpFile1:= TBitmapImage.Create(WizardForm);
  BmpFile1.Bitmap.LoadFromFile(ExpandConstant('{tmp}\1.bmp'));
  BmpFile1.Top:= ScaleY(0);  //расположение
  BmpFile1.Left:= ScaleX(0); //расположение
  BmpFile1.Width:= ScaleX(497); //размер картинки
  BmpFile1.Height:= ScaleY(242); //размер картинки
  BmpFile1.Stretch:= true;
  BmpFile1.Parent:= WizardForm.WelcomePage;
end;

BorderWidth := (WizardForm.ComponentsList.Width-WizardForm.ComponentsList.ClientWidth) div 2;
 LoadBGBmpFromFile((ExpandConstant('{tmp}\1.bmp')), WizardForm.ComponentsList.Left+BorderWidth, WizardForm.ComponentsList.Top+BorderWidth);
end;
если я ничего не подзабыл дописать)))
 

aLLeXUs

Участник
Привет всем! Есть парочка вопросов.
1. Как можно сделать что бы одной строкой вывести текст разными цветами?
2. Почему созданая пользовательская форма не появляется плавно в windows 7/8 как стандартная wizardform, и как это исправить?
 
Последнее редактирование:

kingshady

Новичок
Ребят, вот когда реест экспортирую, и т.к. у меня x64 винда то путь выглядит примерно так:
SOFTWARE\Wow6432Node\Игрулечка
Но на 32 bit путь пудет без Wow6432Node, как поступать в таком случае?
Можно ли оставить это Wow6432Node или на 32 bit может из-за этого не работать? или парралельно?
 

PUNISHER

Участник
kingshady, просто прописать SOFTWARE\Игрулечка, а там уж инсталлятор в зависимости от архитектуры винды сам сделает как надо.
 

aLLeXUs

Участник
Привет всем! Есть парочка вопросов.
1. Как можно сделать что бы одной строкой вывести текст разными цветами?
2. Почему созданая пользовательская форма не появляется плавно в windows 7/8 как стандартная wizardform, и как это исправить?
еще добавлю для примера к первому. Такой текст использовался в R.G. Reverants и R.G. Catalyst
 

murlakatamenka

Новичок
alex0413, для 1-ого 100% используются разные Label'ы. В одном Label'e сделать одну часть текста одного цвета, а другую часть - другого, не получится. склеиваются Label'ы через свои координаты, например
Код:
Label2.Left = Label1.Left + Label1.Width + ScaleX(10);
А вообще говоря, можно было бы просто посмотреть скрипт moonlight (закос под R.G. Catalyst)

и разобраться с этим вопросом.
 
Последнее редактирование:

aLLeXUs

Участник
murlakatamenka, я смотрел, там каждый лейбл отдельно, но я еще смотрел и скрипт каталистов, там используется какой-то ReDrawText, и строка прописывается так
Код:
RedistString:=RedistString + '[solid]{#Format10}{#Format11}{#Format12}{#Format13}' + ExpandConstant('{cm:DirectX}')+'{#Format13_1}{#Format12_1}{#Format11_1}{#Format10_1}[/solid]';
где Format13_1, Format12_1 и т.д. это теги типа [SOURCE="."][color=$002BFF2B], [/color], , [/SOURCE]...
но я так и не смог понять скрипт до конца
 
Последнее редактирование:

murlakatamenka

Новичок
alex0413, ну это же каталисты :). Умные ребята. Мот кто-нить увидет, расскажет.
А чем вариант с лэйблами не устраивает?
 

aLLeXUs

Участник
murlakatamenka, ну насчет умных ребят, да, не поспоришь... Но не думаю, что ответят, ведь кому понравится, что их скрипт, который у них "украли", есть и у меня.

Вариант с лейблами не устраивает из-за того, что могут быть разные варианты текста, текст может не влазить, нужно изменять координаты под разный шрифт, и придется много лейблов создавать... И это немного мешает мультиязычности, ведь для каждого языка писать новые координаты как-то не логично...
Была такая идея, через Length(s:string) узнавать длину строки и считать ширину в пикселях, но встретился с проблемой того, что каждый символ имеет разную ширину.
 

YURSHAT

Тех. админ
Администратор
alex0413, скажу тебе, что у Каталист это не разные лейблы. Но те библиотеки и модули, которые используют Каталист или Ревенантс, тут никто выкладывать не будет или объяснять как оно работает, сам понимаешь, надеюсь :). Так что так :)

Добавлено через 4 минуты
В одном Label'e сделать одну часть текста одного цвета, а другую часть - другого, не получится
:)
 

aLLeXUs

Участник
YURSHAT, спасибо, успокоил:)

Devils Night, а как так сделать? Из побочных эффектов заметил что инсталл долго закрывается, и курсор ввода мигает.

Если нельзя в одном лейбле сделать несколько цветов, то есть ли какая-то процедура или функция что-бы узнать ширину текста в пикселях?
 
Последнее редактирование:

LexBell

Борода
Супер модератор
alex0413, у меня в мыслях есть вариант, но он далек от оптимальности. Делать каждую надпись динамическим массивом лейбелов - одна буква - один лейбел - крутовато, конечно, но вот - одно слово - один лейбел - нормально. Просто никак руки не дойдут до реализации схемы, но алгоритм такой - создаем новый тип, свойства - динамический массив лейбелов, размер, надпись, далее - создаем этот массив - слово - лейбел, каждый следующий элемент находится через 2 пикселя с конца предидущего, если при добавлении следующего ширина превысит ширину размера элемента - то следующий сдвигается вниз на нулевую позицию. в общем, это только идею, и не самый лучший вариант решения задачи, но самый очевидный, по моему. и решение этой задачи не будет никаким боком задевать авторство этого решения у каталистов и призраков.
 

aLLeXUs

Участник
Gnom, ну задумка вроде хорошая, можно будет попробовать реализовать, спасибо за идею. Ко всему этому можно было-бы еще добавить проверку, что если рядом стоящие надписи имеют одинаковые параметры и находятся в одной строчке, то их склеиваем в один лейбл... Но даже не знаю, нужно ли это.
 

LexBell

Борода
Супер модератор
alex0413, ну и развитие - добавляем в наш тип парсер тегов и делаем вместо разбития на слова - разбитие по тегу и свойству размера типа - это самый оптимально, но самый сложно исполняемый вариант в моей идее.
 

Shegorat

Lord of Madness
Администратор
попробую реализовать твою идею
Снова изобретать велосипед? Мой модуль примерно по такому принципу и сделан. Для удобства я все это завернул в подобие бб-кодов. Сейчас у меня конечно есть более продвинутая реализация цветного текста. Но свой модуль я пока распространять не хочу :pardon: .
а как так сделать?
Там используется TRichEdit, если я не ошибаюсь, он поддерживает форматированный вывод текста.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху