1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

Вопрос Тень текста

Тема в разделе "Inno Setup", создана пользователем XLASER, 18 май 2014.

  1. Ветеран

    Регистрация:
    23 авг 2013
    Сообщения:
    34
    Симпатии:
    0
    Доброе время суток! Подскажите пожалуйста как сделать тень на текст? Заранее благодарю.
     
  2. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    896
    Симпатии:
    614
    Держи
    Код (Text):
    //////////////////////// TLabelExNew ////////////////////////

    type
      TNewLblExt = record LblExt:array[0..1]of TLabel; end;
    var
      i: integer;

    function TNewLblExtCreate(AParent:TWinControl;FontName:String;FontStyle:TFontStyles;aLeft,aTop,aWidth,aHeight:integer;aAlignment:TPopupAlignment;AAutoSize,aWordWrap:Boolean):TNewLblExt;
    begin
    for i:= 0 to 1 do begin
      Result.LblExt[i]:= TLabel.Create(AParent);
    with Result.LblExt[i] do begin
      Parent := AParent;
      Alignment := aAlignment;
      Transparent := True;
      WordWrap := aWordWrap;
      AutoSize := AAutoSize;
    if not aAutoSize then begin
      Height:= aHeight;
    end;
    #ifdef Shadow
      Left:= aLeft-ScaleX(i*1);
      Top:= ATop-Scaley(i*1);
    #else
      Left:= aLeft;
      Top:= ATop;
    #endif
      Width:= aWidth;
      ParentFont := False;
    with Font do begin
      Style:= FontStyle;
    if FontName <> '' then Name:= FontName;
    end;
    end;
    end;
    end;

    procedure TNewLblSize(var Line: TNewLblExt; Size: integer);
    begin
      for i:=0 to 1 do Line.LblExt[i].Font.Size:= Size;
    end;

    procedure TNewLblVisible(var Line: TNewLblExt; Auto:Boolean);
    begin
      for i:=0 to 1 do Line.LblExt[i].Visible:= Auto;
    end;

    procedure TNewLblExtOnClick(var Line: TNewLblExt; Event: TNotifyEvent);
    begin
      for i:=0 to 1 do Line.LblExt[i].OnClick:= Event;
    end;

    procedure TNewLblExtCaption(var Line: TNewLblExt; Text: String);
    begin
      for i:=0 to 1 do Line.LblExt[i].Caption:= Text;
    end;

    procedure TNewLblExtColor(var Line: TNewLblExt; BackColor, TextColor: TColor);
    begin
      Line.LblExt[0].Font.Color:= BackColor;
      Line.LblExt[1].Font.Color:= TextColor;
    end;

    //////////////////////// TLabelExNew ////////////////////////
     
    Код (Text):

    ; Шрифт лейблов
    #define Font  "Tahoma"
    ; Цвет лейблов
    #define Color  "$FFFFFF"
    //...
    // Процедура для создания текста с тенью
    #include "TLabelExNew.iss"
    //...
    var
        SelectSteam: TNewLblExt;
    const
      Font = '{#Font}';
      Color = {#Color};
    //...
      SelectSteam:=TNewLblExtCreate(WizardForm,Font,[],ScaleX(73),ScaleY(177),ScaleX(75),ScaleY(58),taLeftJustify,False,False);
      TNewLblExtColor(SelectSteam, clblack, Color);
      TNewLblSize(SelectSteam, 8);
      TNewLblExtCaption(SelectSteam,'Steam версия')
      TNewLblExtOnClick(SelectSteam, @Select1);
    //...
    // SelectDirPage
      TNewLblVisible(SelectSteam,False);
    // пример катать влом. и так должно быть понятно.
     
     
    XLASER нравится это.
  3. Ветеран

    Регистрация:
    23 авг 2013
    Сообщения:
    34
    Симпатии:
    0
    sergey3695, Мне надо тень на текст применить к Приветствие, Финишь и т.п.
    Пробовал дублировать скрипт.
    Код (Text):
    Welcome1:= TLabel.Create(WizardForm);
    with welcome1 do
    Begin
    AutoSize:= False;
       WordWrap:= True;
       SetBounds(ScaleX(100), ScaleY(30), ScaleX(600), ScaleY(190));
       Transparent:=True;
       Alignment := taCenter;
       Font.Name:= 'Georgia';
       Font.Size:= 16;
       Font.Color:=$000000;
       Font.Style:=[fsBold];
       OnMouseDown:=@LabelOnMouseDown;
       Parent:=WizardForm;
       Caption:=CustomMessage('Welcome1');
    end;
    //============================Íà÷àëî Òåíè========================
    Welcome2:= TLabel.Create(WizardForm);
    with welcome2 do
    Begin
    AutoSize:= False;
       WordWrap:= True;
       SetBounds(ScaleX(98), ScaleY(28), ScaleX(600), ScaleY(190));
       Transparent:=True;
       Alignment := taCenter;
       Font.Name:= 'Georgia';
       Font.Size:= 16;
       Font.Color:=$FFFFFF;
       Font.Style:=[fsBold];
       OnMouseDown:=@LabelOnMouseDown;
       Parent:=WizardForm;
       Caption:=CustomMessage('Welcome1');
    end;
    Но при таком скрипте как бы тень появляется на всех страницах инсталлятора. Можно здесь что то изменить что бы отображалось на одной странице которая мне нужна?
     
  4. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    896
    Симпатии:
    614
    XLASER, а в чем проблема-то
    Код (Text):
    procedure CurPageChanged(CurPageID: Integer);
    begin
    Welcome1.Hide;
    Welcome2.Hide;
    if CurPageID = wpWelcome then
    begin
    Welcome1.Show;
    Welcome2.Show;
    end;
    end;
     
    Самое главное вопрос стоял как сделать,а не как отобразить на определенной странице.
     
    Последнее редактирование: 18 май 2014
    XLASER нравится это.
  5. Ветеран

    Регистрация:
    23 авг 2013
    Сообщения:
    34
    Симпатии:
    0
    sergey3695, Это у меня написано, но всё равно отображается на всех страницах. Всю голову сломал уже. И не знаю что с этим делать! Что ещё можно сделать?
     
    Последнее редактирование: 18 май 2014
  6. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    896
    Симпатии:
    614
    XLASER, ну может скрипт с файлами выложить или в лс кинуть. я гадать не собираюсь.
     

Поделиться этой страницей