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

nik1967

Old Men
Проверенный
Вот ведь блин, пока пример писал, 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;
 

sergey3695

Ветеран
Модератор
Shift85, это я проглядел
Код:
#define Shadow
Но все равно мог бы и в модуль заглянуть.
 
Последнее редактирование:

Shift85

Старожил
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;
 

sergey3695

Ветеран
Модератор
Shift85, ну если у меня
Код:
procedure TNewLblExtOnClick(var Line: TNewLblExt; Event: TNotifyEvent);
begin
  for i:=0 to 1 do Line.LblExt[i].OnClick:= Event;
end;
на клике, то => (я подсказал, больше ниче не знаю. буду как риддлер 8-) (ну а что, раз старожила уже, должен соображать :D)
 

Shift85

Старожил
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;
Как прописать команду?
 

vint56

Ветеран
Проверенный
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;
 

Shift85

Старожил
Всем привет.
Как сделать, чтобы при нехватке места текст автоматически переходил на следующую строку?
 

Вложения

EvilAlex

Старожил
Всем привет.
Как сделать, чтобы при нехватке места текст автоматически переходил на следующую строку?
Уменьш ширину лабела и увеличь высоту...

еще как вариант, в [CustomMessages] после программа установит добавить %n , без пробелов, перенесет строку...
 

Shift85

Старожил
EvilAlex, Не работает.:(
Код:
SelectDirLabel:=CreateShadowLabel(WizardForm, ExpandConstant('{cm:SelectDirLabel} '), ScaleX(24),ScaleY(50), ScaleX(0), ScaleY(100), 'Tahoma', 8, 1, [], clWhite, clBlack, True, False, taLeftJustify);
 

Вложения

EvilAlex

Старожил
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;
 

Shift85

Старожил
Как добавить тень на текст на Эдит наложенный через лэйбл?
 
Последнее редактирование:

sergey3695

Ветеран
Модератор

Вложения

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