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

  • Автор темы Автор темы YURSHAT
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.
Подскажите пожалуйста как сделать WizardForm.ComponentsList полупрозрачным
 
Может прозрачным?
Если я правильно понял, то вот:
Код:
[_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;
если я ничего не подзабыл дописать)))
 
Привет всем! Есть парочка вопросов.
1. Как можно сделать что бы одной строкой вывести текст разными цветами?
2. Почему созданая пользовательская форма не появляется плавно в windows 7/8 как стандартная wizardform, и как это исправить?
 
Последнее редактирование:
Ребят, вот когда реест экспортирую, и т.к. у меня x64 винда то путь выглядит примерно так:
SOFTWARE\Wow6432Node\Игрулечка
Но на 32 bit путь пудет без Wow6432Node, как поступать в таком случае?
Можно ли оставить это Wow6432Node или на 32 bit может из-за этого не работать? или парралельно?
 
kingshady, просто прописать SOFTWARE\Игрулечка, а там уж инсталлятор в зависимости от архитектуры винды сам сделает как надо.
 
Привет всем! Есть парочка вопросов.
1. Как можно сделать что бы одной строкой вывести текст разными цветами?
2. Почему созданая пользовательская форма не появляется плавно в windows 7/8 как стандартная wizardform, и как это исправить?

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

и разобраться с этим вопросом.
 
Последнее редактирование:
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]...
но я так и не смог понять скрипт до конца
 
Последнее редактирование:
alex0413, ну это же каталисты :). Умные ребята. Мот кто-нить увидет, расскажет.
А чем вариант с лэйблами не устраивает?
 
murlakatamenka, ну насчет умных ребят, да, не поспоришь... Но не думаю, что ответят, ведь кому понравится, что их скрипт, который у них "украли", есть и у меня.

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

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

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

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