Вопрос Как добавить тень к тексту

  • Автор темы Автор темы Shift85
  • Дата начала Дата начала
Вот ведь блин, пока пример писал, sergey3695 меня опередил. Но пусть будет :)
Код:
#define NeedSize 43809
#define NeedInstallSize 67890
#include "TShadowLabel.iss"

[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp
DefaultGroupName=MyApp

[CustomMessages]
TotalSpace=Всего места на диске:
FreeSpace=Доступно места на диске:
InstallSpace=Требуется места для установки:
NeedSpace=Требуется места на диске:

[code]
var
   TotalSpaceLabel, FreeSpaceLabel, NeedSpacelabel, InstallSpaceLabel: TShadowLabel;
   FreeMB, TotalMB: Cardinal;

function NumToStr(Float: Extended): String;
begin
   Result:= format('%.2n', [Float]); StringChange(Result, ',', '.');
     while (Result[Length(Result)] = '0')or((Result[Length(Result)] = '.')and(Pos('.', Result) > 0)) do
       SetLength(Result, Length(Result)-1);
end;

function MbOrTb(Float: Extended): String;
begin
   if Float < 1024 then Result:= NumToStr(Float)+' Мб' else
   if Float/1024 < 1024 then Result:= NumToStr(Float/1024)+' Гб' else
     Result:= NumToStr(Float/(1024*1024))+' Тб';
end;

procedure DirEditOnChange(Sender: TObject);
var
   Drive: String;
begin
   Drive:= ExtractFileDrive(WizardForm.DirEdit.Text);
   GetSpaceOnDisk(Drive, True, FreeMB, TotalMB);

   SetShadowLabelCaption(TotalSpaceLabel, ExpandConstant('{cm:TotalSpace} ')+MbOrTb(TotalMB));
   SetShadowLabelCaption(FreeSpaceLabel, ExpandConstant('{cm:FreeSpace} ')+MbOrTb(FreeMB)+' ('+IntToStr(round(FreeMB*100/TotalMB))+'% )');

   WizardForm.NextButton.Enabled:= (FreeMB>{#NeedInstallSize})and(FreeMB>{#NeedSize});
   if WizardForm.NextButton.Enabled then SetShadowLabelColor(FreeSpaceLabel, clsilver, clWhite) else SetShadowLabelColor(FreeSpaceLabel, clblack, $0000FF);
end;

procedure InitializeWizard();
begin
   TotalSpaceLabel:= CreateShadowLabel(WizardForm.SelectDirpage, '', ScaleX(0),ScaleY(120), ScaleX(300), ScaleY(20), 'tahoma', 14, 1, [], clWhite, clsilver, True, False, taCenter);
   FreeSpaceLabel:= CreateShadowLabel(WizardForm.SelectDirpage, '', ScaleX(0),ScaleY(140), ScaleX(300), ScaleY(20), 'tahoma', 14, 1, [], clWhite, clsilver, True, False, taCenter);
   InstallSpacelabel:= CreateShadowLabel(WizardForm.SelectDirpage, ExpandConstant('{cm:InstallSpace} ')+MbOrTb({#NeedInstallSize}), ScaleX(0),ScaleY(160), ScaleX(300), ScaleY(20), 'tahoma', 14, 1, [], clWhite, clsilver, True, False, taCenter);
   NeedSpaceLabel:= CreateShadowLabel(WizardForm.SelectDirpage, ExpandConstant('{cm:NeedSpace} ')+MbOrTb({#NeedSize}), ScaleX(0),ScaleY(180), ScaleX(300), ScaleY(20), 'tahoma', 14, 1, [], clWhite, clsilver, True, False, taCenter);

   WizardForm.DiskSpaceLabel.Hide;
   WizardForm.DirEdit.OnChange:= @DirEditOnChange;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
   case CurPageID of
     wpSelectDir: DirEditOnChange(nil);
   end;
end;
 
Shift85, это я проглядел
Код:
#define Shadow
Но все равно мог бы и в модуль заглянуть.
 
Последнее редактирование:
nik1967, Как прописать таскание лейбла с тенью?
К примеру:
Код:
function ReleaseCapture(): Longint; external 'ReleaseCapture@user32.dll stdcall';

procedure LabelOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  ReleaseCapture;
  SendMessage(WizardForm.Handle,$0112,$F012,0)
end;
 
Shift85, ну если у меня
Код:
procedure TNewLblExtOnClick(var Line: TNewLblExt; Event: TNotifyEvent);
begin
  for i:=0 to 1 do Line.LblExt[i].OnClick:= Event;
end;
на клике, то => (я подсказал, больше ниче не знаю. буду как риддлер 8-) (ну а что, раз старожила уже, должен соображать :D)
 
sergey3695,
Код:
procedure SetShadowLabelEvent(var Line: TShadowLabel; ClickEvent: TNotifyEvent; MouseDown, MouseUp: TMouseEvent; MouseMove: TMouseMoveEvent);
begin
  If ClickEvent <> nil then Line.Foreground.OnClick:= ClickEvent;
  If MouseDown <> nil then Line.Foreground.OnMouseDown:= MouseDown;
  If MouseUp <> nil then Line.Foreground.OnMouseUp:= MouseUp;
  If MouseMove <> nil then Line.Foreground.OnMouseMove:= MouseMove;
end;

Как прописать команду?
 
Shift85
#define NeedSize 43809
#define NeedInstallSize 67890
#include "TShadowLabel.iss"

[Setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirname={pf}\MyApp
DefaultGroupName=MyApp

[CustomMessages]
TotalSpace=Всего места на диске:
FreeSpace=Доступно места на диске:
InstallSpace=Требуется места для установки:
NeedSpace=Требуется места на диске:

[ code]
var
TotalSpaceLabel, FreeSpaceLabel, NeedSpacelabel, InstallSpaceLabel: TShadowLabel;
FreeMB, TotalMB: Cardinal;

function ReleaseCapture(): Longint; external 'ReleaseCapture@user32.dll stdcall';

procedure LabelOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(WizardForm.Handle,$0112,$F012,0)
end;


function NumToStr(Float: Extended): String;
begin
Result:= format('%.2n', [Float]); StringChange(Result, ',', '.');
while (Result[Length(Result)] = '0')or((Result[Length(Result)] = '.')and(Pos('.', Result) > 0)) do
SetLength(Result, Length(Result)-1);
end;

function MbOrTb(Float: Extended): String;
begin
if Float < 1024 then Result:= NumToStr(Float)+' Мб' else
if Float/1024 < 1024 then Result:= NumToStr(Float/1024)+' Гб' else
Result:= NumToStr(Float/(1024*1024))+' Тб';
end;

procedure DirEditOnChange(Sender: TObject);
var
Drive: String;
begin
Drive:= ExtractFileDrive(WizardForm.DirEdit.Text);
GetSpaceOnDisk(Drive, True, FreeMB, TotalMB);

SetShadowLabelCaption(TotalSpaceLabel, ExpandConstant('{cm:TotalSpace} ')+MbOrTb(TotalMB));
SetShadowLabelCaption(FreeSpaceLabel, ExpandConstant('{cm:FreeSpace} ')+MbOrTb(FreeMB)+' ('+IntToStr(round(FreeMB*100/TotalMB))+'% )');

WizardForm.NextButton.Enabled:= (FreeMB>{#NeedInstallSize})and(FreeMB>{#NeedSize});
if WizardForm.NextButton.Enabled then SetShadowLabelColor(FreeSpaceLabel, clsilver, clWhite) else SetShadowLabelColor(FreeSpaceLabel, clblack, $0000FF);
end;

procedure InitializeWizard();
begin
with WizardForm do begin
Bevel.Hide;
InnerNotebook.Hide;
OuterNotebook.Hide;
Position:=poScreenCenter;
Color := clGray;
end;

TotalSpaceLabel:= CreateShadowLabel(WizardForm, '', ScaleX(0),ScaleY(120), ScaleX(300), ScaleY(20), 'tahoma', 14, 1, [], clWhite, clsilver, True, False, taCenter);
FreeSpaceLabel:= CreateShadowLabel(WizardForm, '', ScaleX(0),ScaleY(140), ScaleX(300), ScaleY(20), 'tahoma', 14, 1, [], clWhite, clsilver, True, False, taCenter);
InstallSpacelabel:= CreateShadowLabel(WizardForm, ExpandConstant('{cm:InstallSpace} ')+MbOrTb({#NeedInstallSize}), ScaleX(0),ScaleY(160), ScaleX(300), ScaleY(20), 'tahoma', 14, 1, [], clWhite, clsilver, True, False, taCenter);
NeedSpaceLabel:= CreateShadowLabel(WizardForm, ExpandConstant('{cm:NeedSpace} ')+MbOrTb({#NeedSize}), ScaleX(0),ScaleY(180), ScaleX(300), ScaleY(20), 'tahoma', 14, 1, [], clWhite, clsilver, True, False, taCenter);

WizardForm.DiskSpaceLabel.Hide;
WizardForm.DirEdit.OnChange:= @DirEditOnChange;

//Создаем лейбл на всю форму, чтоб ее можно было двигать
with TLabel.Create(WizardForm) do begin
Parent:=WizardForm;
AutoSize:=False;
Top:=0;
Left:=0;
Width:=WizardForm.Width;
Height:= WizardForm.Height
Transparent:=True;
OnMouseDown:=@LabelOnMouseDown;
end;
end;

procedure HideComponents;
begin
HideShadowLabel(TotalSpaceLabel);
HideShadowLabel(FreeSpaceLabel);
HideShadowLabel(InstallSpacelabel);
HideShadowLabel(NeedSpaceLabel);
end;

procedure CurPageChanged(CurPageID: Integer);
begin
HideComponents;
case CurPageID of
wpSelectDir:
begin
ShowShadowLabel(TotalSpaceLabel);
ShowShadowLabel(FreeSpaceLabel);
ShowShadowLabel(InstallSpacelabel);
ShowShadowLabel(NeedSpaceLabel);
DirEditOnChange(nil);
end;
end;
end;
 
Всем привет.
Как сделать, чтобы при нехватке места текст автоматически переходил на следующую строку?
 

Вложения

  • Было.PNG
    Было.PNG
    19.3 KB · Просмотры: 27
  • Стало.PNG
    Стало.PNG
    17.9 KB · Просмотры: 24
Всем привет.
Как сделать, чтобы при нехватке места текст автоматически переходил на следующую строку?
Уменьш ширину лабела и увеличь высоту...

еще как вариант, в [CustomMessages] после программа установит добавить %n , без пробелов, перенесет строку...
 
EvilAlex, Не работает.:(
Код:
SelectDirLabel:=CreateShadowLabel(WizardForm, ExpandConstant('{cm:SelectDirLabel} '), ScaleX(24),ScaleY(50), ScaleX(0), ScaleY(100), 'Tahoma', 8, 1, [], clWhite, clBlack, True, False, taLeftJustify);
 

Вложения

  • Снимок.PNG
    Снимок.PNG
    13.6 KB · Просмотры: 17
EvilAlex, Не работает.:(
Код:
SelectDirLabel:=CreateShadowLabel(WizardForm, ExpandConstant('{cm:SelectDirLabel} '), ScaleX(24),ScaleY(50), ScaleX(0), ScaleY(100), 'Tahoma', 8, 1, [], clWhite, clBlack, True, False, taLeftJustify);
а автосиз отключен, я его тут не вижу просто)) у меня по другому было на этом дизе)

Код:
[CustomMessages]
rus.SelectDir1=Программа установит%n«{#MyAppName}»

SelectDir:=TLabel.Create(WizardForm);
with SelectDir do
begin
  Top:= ScaleY(135);
  Left:= ScaleX(27);
  Width:= ScaleX(450);
  Height:= ScaleY(200);
  AutoSize:= false;
  WordWrap:= true;
  Font.Size:={#FontSize};
  Font.Color:={#FontColor};
  Font.Style:=[fsBold];
  Font.Name:='Tahoma';
  Transparent:= true;
  Parent:= WizardForm;
  Caption:= ExpandConstant('{cm:SelectDir1}');
end;
 
Как добавить тень на текст на Эдит наложенный через лэйбл?
 
Последнее редактирование:

Вложения

Последнее редактирование:
Назад
Сверху