FileForums

FileForums (https://fileforums.com/index.php)
-   Conversion Tutorials (https://fileforums.com/forumdisplay.php?f=55)
-   -   FMXInno - Windows Fluent Design Installer UI for Inno (https://fileforums.com/showthread.php?t=104852)

hitman797 08-10-2023 01:03

Quote:

Originally Posted by audiofeel (Post 502754)
I don't quite understand what the timer is for? :rolleyes:

A timer is set to update the listbox when we change the path in the label.

BLACKFIRE69 08-10-2023 12:45

FMXInno - Updates
 
FMXInno - Updates

Code:

FMXInno - Changes

1. Added new classes:
  - FTreeView
  - FTreeViewItem
  - FMenuBar
  - FMenuBarItem

2. FCheckboxTree - Removed the following properties:
  - procedure Selectable(FEnable: Boolean)
  - procedure RemoveBckgnd

3. Added some new functions.

4. Some improvements:
  - TitleBar
  - FForm

5. Bug Fixing.


TreeView + MainMenu:


Code:

{ MainMenu }
  PMenuBar.FCreate(FMXForm.Handle);
  PMenuBar.ImageList(ImgList.Handle);

  { Home }
  pMenuItem[1].FCreate(PMenuBar.Handle);
  pMenuItem[1].Text('Home');
  pMenuItem[1].ImageIndex(0);
  PMenuBar.AddItem(pMenuItem[1].Handle);

  pMenuItem[2].FCreate(pMenuItem[1].Handle);
  pMenuItem[2].Text('Open');
  pMenuItem[2].ShortCut(wGetShortCut(vkO, [ssCtrl]));
  pMenuItem[2].ImageIndex(1);
  pMenuItem[2].OnClick(@CommonOnClick);
  pMenuItem[1].AddItem(pMenuItem[2].Handle);

  ...
{ MainMenu }


Code:

{ TreeView 1 - Left }
  kTreeView.FCreate(FMXForm.Handle);
  kTreeView.SetBounds(NSX(40), NSY(120), NSX(249), NSY(329));
  kTreeView.ImageList(ImgList.Handle);

  kTreeViewItem[1].FCreate(kTreeView.Handle);    // User
  kTreeViewItem[1].ImageIndex(20);
  kTreeViewItem[1].Text(GetUserNameString);
  kTreeViewItem[1].Margins(NSX(-20),0,0,0);
  kTreeView.AddItem(kTreeViewItem[1].Handle);

  kTreeViewItem[2].FCreate(kTreeView.Handle);    // Desktop
  kTreeViewItem[2].ImageIndex(21);
  kTreeViewItem[2].Text('Desktop');
  kTreeViewItem[2].Margins(NSX(-20),0,0,0);
  kTreeView.AddItem(kTreeViewItem[2].Handle);

  ...
{ TreeView 1 - Left }


Code:

{ TreeView 2 - Right }
  mTreeView.FCreate(FMXForm.Handle);
  mTreeView.SetBounds(NSX(340), NSY(120), NSX(249), NSY(329));
  mTreeView.ShowCheckboxes(True);

  mTreeViewItem[1].FCreate(mTreeView.Handle);
  mTreeViewItem[1].StyledSettings([]);
  mTreeViewItem[1].FontSettings('Segoe UI', 12, AlRed, [fsBold, fsUnderline]);
  mTreeViewItem[1].Text('Come, Let''s Destroy Our World!');
  mTreeView.AddItem(mTreeViewItem[1].Handle);

  { Weapon Preset }
  mTreeViewItem[2].FCreate(mTreeViewItem[1].Handle);
  mTreeViewItem[2].StyledSettings([]);
  mTreeViewItem[2].FontSettings('Segoe UI', 12, AlBlue, [fsBold]);
  mTreeViewItem[2].Text('Weapon Preset');
  mTreeViewItem[1].AddItem(mTreeViewItem[2].Handle);

  mTreeViewItem[3].FCreate(mTreeViewItem[2].Handle);
  mTreeViewItem[3].Text('Soviet');
  mTreeViewItem[2].AddItem(mTreeViewItem[3].Handle);

  ...
{ TreeView 2 - Right }


.

hitman797 08-10-2023 14:07

2 Attachment(s)
Quote:

Originally Posted by BLACKFIRE69 (Post 502770)
FMXInno - Updates

Code:

FMXInno - Changes

1. Added new classes:
  - FTreeView
  - FTreeViewItem
  - FMenuBar
  - FMenuBarItem

2. FCheckboxTree - Removed the following properties:
  - procedure Selectable(FEnable: Boolean)
  - procedure RemoveBckgnd

3. Added some new functions.

4. Some improvements:
  - TitleBar
  - FForm

5. Bug Fixing.

.

Great job my friend, thank you.
Code:

procedure TDialogForm.Button1Click(Sender: TObject);
begin
  if length(Label1.Text) = 3 then
  begin
    CreateDir(Label1.Text+Edit1.Text);
    Label1.Text:= Label1.Text+Edit1.Text;
  end else begin
    CreateDir(Label1.Text+'\'+Edit1.Text);
    Label1.Text:= Label1.Text+'\'+Edit1.Text;
  end;
  Timer1.Enabled:= True;
end;

procedure TDialogForm.FormCreate(Sender: TObject);
var
 hDriveArry: TStringDynArray;
 hDriveName: String;
begin
  ListBox1.Clear;
  ListBox1.BeginUpdate;
  hDriveArry:= TDirectory.GetLogicalDrives;
  for hDriveName in hDriveArry do
  begin
  ListBox1.Items.Add(hDriveName);
  end;
  ListBox1.EndUpdate;
  Timer1.Enabled:= True;
end;

procedure TDialogForm.ListBox1ItemClick(const Sender: TCustomListBox;
  const Item: TListBoxItem);
begin
  Label1.Text:= ListBox1.Items.Strings[ListBox1.ItemIndex];
  Timer1.Enabled:= True;
end;

procedure TDialogForm.ListBox2ItemClick(const Sender: TCustomListBox;
  const Item: TListBoxItem);
begin
  if length(Label1.Text) = 3 then
  begin
    Label1.Text:= Label1.text+ListBox2.Items.Strings[ListBox2.ItemIndex];
  end else begin
    Label1.Text:= Label1.text+'\'+ListBox2.Items.Strings[ListBox2.ItemIndex];
  end;
  Timer1.Enabled:= True;
end;

procedure TDialogForm.SpeedButton1Click(Sender: TObject);
begin
  Label1.Text:= 'C:\Windows';
  Timer1.Enabled:= True;
end;

procedure TDialogForm.SpeedButton2Click(Sender: TObject);
begin
  Label1.Text:= ExtractFileDir(Label1.Text);
  Timer1.Enabled:= True;
end;

procedure TDialogForm.Timer1Timer(Sender: TObject);
var
 hDirArry: TStringDynArray;
 hDirName: String;
begin
  ListBox2.Clear;
  ListBox2.BeginUpdate;
  hDirName:= Label1.Text;
  hDirArry:= TDirectory.GetDirectories(hDirName);
  for hDirName in hDirArry do
  begin
    ListBox2.Items.Add(ExtractFileName(hDirName));
  end;
  ListBox2.EndUpdate;
  Timer1.Enabled:= False;
end;

in innosetup we have this function.
Code:

function Length(S: String): Longint;
function CreateDir(const Dir: String): Boolean;
function RemoveDir(const Dir: String): Boolean;
//
function ExtractFileExt(const FileName: String): String;
function ExtractFileDir(const FileName: String): String;
function ExtractFilePath(const FileName: String): String;
function ExtractFileName(const FileName: String): String;
function ExtractFileDrive(const FileName: String): String;
//
function GetCurrentDir: String;
function SetCurrentDir(const Dir: String): Boolean;
function GetWinDir: String;
function GetSystemDir: String;
function GetSysWow64Dir: String;
function GetTempDir: String;

but we need to add this function:
System.IOUtils:
Code:

function TDirectory.GetFiles(const Path: string): TStringDynArray;
function TDirectory.GetDirectories(const Path: string): TStringDynArray;
function TDirectory.GetLogicalDrives: TStringDynArray;
TArrayOfString = array of String; in innosetup

ListBox:
Code:

procedure ListBoxItemClick(const Sender: TCustomListBox;
  const Item: TListBoxItem);

Label:
Code:

function GetText: WideString;

BLACKFIRE69 08-10-2023 16:47

Quote:

Originally Posted by hitman797 (Post 502773)
but we need to add this function:
System.IOUtils:
Code:

function TDirectory.GetFiles(const Path: string): TStringDynArray;
function TDirectory.GetDirectories(const Path: string): TStringDynArray;
function TDirectory.GetLogicalDrives: TStringDynArray;
TArrayOfString = array of String; in innosetup

ListBox:
Code:

procedure ListBoxItemClick(const Sender: TCustomListBox;
  const Item: TListBoxItem);

Label:
Code:

function GetText: WideString;



i think you may not have noticed that FMXInno has already included these things.


Quote:

Originally Posted by hitman797 (Post 502773)
Code:

function TDirectory.GetFiles(const Path: string): TStringDynArray;

Code:

var
  FindHandle: Longint;

begin
  FindHandle := pFindFiles('C:\Test01', '*.*', '', ffrkRelative, True, False);

  if FindHandle <> 0 then
  begin
    WinTB1.Text('Files: ' + IntToStr(pFileCount(FindHandle)));

    try
      for i:=0 to pFileCount(FindHandle)-1 do
        Memo.AddLine(pPickFile(FindHandle, i));
    finally
      pFindFree(FindHandle);
    end;
  end;
end;



Quote:

Originally Posted by hitman797 (Post 502773)
Code:

function TDirectory.GetDirectories(const Path: string): TStringDynArray;

Code:

var
  FindHandle: Longint;

begin
  FindHandle := pFindFiles('C:\Test01', '*', '', ffrkRelative, True, True);

  if FindHandle <> 0 then
  begin
    WinTB1.Text('Dirs: ' + IntToStr(pDirCount(FindHandle)));

    try
      for i:=0 to pDirCount(FindHandle)-1 do
        Memo.AddLine(pPickDir(FindHandle, i));
    finally
      pFindFree(FindHandle);
    end;
  end;
end;



Quote:

Originally Posted by hitman797 (Post 502773)
Code:

function TDirectory.GetLogicalDrives: TStringDynArray;

Code:

begin
  LogicalDrives.FCreate;

  if LogicalDrives.Count > 0 then
  begin
    for i := 0 to LogicalDrives.Count - 1 do
      Memo.AddLine(LogicalDrives.Letter(i));
  end else
    MsgBox('"LogicalDrives" failded!', mbError, MB_OK);
end;



Quote:

Originally Posted by hitman797 (Post 502773)
ListBox:
Code:

procedure ListBoxItemClick(const Sender: TCustomListBox;
  const Item: TListBoxItem);


Code:

procedure ListBoxOnChange(Sender: TObject);
var
  i: integer;
  TargetLstItm: FListBoxItem;
begin
  if ListBox.GetItemIndex > -1 then
  begin
    for i := 0 to length(ListBoxItems)-1 do
      if Sender = TObject(ListBoxItems[i].GetObject) then
      begin
        TargetLstItm := ListBoxItems[i] as FListBoxItem;
        break;
      end;

    WinTB1.Text(TargetLstItm.GeText);
  end;
end;


ListBox.FCreate(FMXForm.Handle);
ListBox.SetBounds(NSX(32), NSY(53), NSX(297), NSY(249));
ListBox.OnChange(@ListBoxOnChange);


Tihiy_Don 08-10-2023 22:21

Update first post please. I also ask you to mark the version that indicates this update.

hitman797 09-10-2023 11:45

1 Attachment(s)
FLabel:
function GetText: WideString; don't work.
FTimer:
function GetObject: LongInt;
FFloatAnimation:
function GetObject: LongInt;

Code:

procedure OnTimer6(Sender: TObject);
var
  i: Integer;
  FindHandle: Longint;
begin
  FindHandle:= pFindFiles(FMXLabel[197].GetText, '*', '', ffrkRelative, False, True);
  if FindHandle <> 0 then
  begin
    SetArrayLength(ListBoxItems, pDirCount(FindHandle));
    FMXListBox[3].BeginUpdate;
    try
      for i:= 0 to pDirCount(FindHandle) -1 do
      begin
      ListBoxItems[i]:= InitListBoxItemHandle;
      ListBoxItems[i].FCreate(FMXListBox[3].Handle);
      ListBoxItems[i].Text(ExtractFileName(pPickDir(FindHandle, i)));
      FMXListBox[3].AddItem(ListBoxItems[i].Handle);
      end;
    finally
    pFindFree(FindHandle);
    FMXListBox[3].EndUpdate;
end;
  FMXTimer[6].Enabled(False);
end;
end;


BLACKFIRE69 09-10-2023 21:52

Quote:

Originally Posted by hitman797 (Post 502785)
FLabel:
function GetText: WideString; don't work.
FTimer:
function GetObject: LongInt;
FFloatAnimation:
function GetObject: LongInt;


in the next update of FMXInno, i'll add these missing properties. ;)



Quote:

Originally Posted by hitman797 (Post 502785)
Code:

procedure OnTimer6(Sender: TObject);
var
  i: Integer;
  FindHandle: Longint;
begin
  FindHandle:= pFindFiles(FMXLabel[197].GetText, '*', '', ffrkRelative, False, True);
  if FindHandle <> 0 then
  begin
    SetArrayLength(ListBoxItems, pDirCount(FindHandle));
    FMXListBox[3].BeginUpdate;
    try
      for i:= 0 to pDirCount(FindHandle) -1 do
      begin
      ListBoxItems[i]:= InitListBoxItemHandle;
      ListBoxItems[i].FCreate(FMXListBox[3].Handle);
      ListBoxItems[i].Text(ExtractFileName(pPickDir(FindHandle, i)));
      FMXListBox[3].AddItem(ListBoxItems[i].Handle);
      end;
    finally
    pFindFree(FindHandle);
    FMXListBox[3].EndUpdate;
end;
  FMXTimer[6].Enabled(False);
end;
end;




try this way...


Code:

procedure OnTimer6(Sender: TObject);
var
  ...
begin
  FindHandle:= pFindFiles(FMXLabel[197].GetText, '*', '', ffrkOnlyName, False, True);
  if FindHandle <> 0 then
  begin
    ...
    try
      for i:= 0 to pDirCount(FindHandle) -1 do
      begin
      ...
      ListBoxItems[i].Text(pPickDir(FindHandle, i));
      ...
      end;
    finally
    ...
end;
  ...
end;
end;


BLACKFIRE69 09-10-2023 23:46

FMXInno Updates
 
FMXInno Updates - [2023-Oct-10]

Code:

Changes:

* If someone experiences flickering when switching between dark mode and light mode,
  it has now been fixed.
* Added some missing properties.
* Made some improvements.



The first post has been updated.


.

ADMIRAL 11-10-2023 12:07

Quote:

Originally Posted by audiofeel (Post 502741)
Thanks for the hotfix. It seems that everything you need is working properly.

HI, Is it inno script project or compiler?

ADMIRAL 13-10-2023 06:37

Quote:

Originally Posted by audiofeel (Post 502799)
this will be a scenario for Inno Setup

I tried to make it once when the sample was just made, but I couldn't. Even now, if I want to make it, I won't succeed. If possible, please complete it and share the code so that I can increase my ability to make this type of script.
Thankful

hitman797 13-10-2023 09:41

Quote:

Originally Posted by ADMIRAL (Post 502806)
I tried to make it once when the sample was just made, but I couldn't. Even now, if I want to make it, I won't succeed. If possible, please complete it and share the code so that I can increase my ability to make this type of script.
Thankful

BLACKFIRE69, made this script possible by adding many of the components to this library.
and audiofeel, created this scenario using this library.
So, thanks to them

Jahan1373 13-10-2023 23:05

Icons
 
Hello, thank you for the initiative of this beautiful script and your round-the-clock effort, you can only make it so that you have more than one icon on the desktop, thank you very much.

hitman797 14-10-2023 08:28

6 Attachment(s)
Razor12911, He's going to kill me after this for stealing his work.

Jahan1373 14-10-2023 08:33

https://www.mediafire.com/file/2cddc...rpack.rar/file

Hello, I visited the site about the installation of the metro for almost a year, but it was not as good as this one, but it has problems and it is still not complete. I hope that this movie will solve some problems.

hitman797 14-10-2023 09:20

Quote:

Originally Posted by Jahan1373 (Post 502829)
https://www.mediafire.com/file/2cddc...rpack.rar/file

Hello, I visited the site about the installation of the metro for almost a year, but it was not as good as this one, but it has problems and it is still not complete. I hope that this movie will solve some problems.

...get the number of Files in the Recycle Bin and their total size?
Code:

                 
type
  PSHQueryRBInfo = ^TSHQueryRBInfo;
  TSHQueryRBInfo = packed record
    cbSize: DWORD;
    // Size of the structure, in bytes.
    // This member must be filled in prior to calling the function.
    i64Size: Int64;
    // Total size of all the objects in the specified Recycle Bin, in bytes.
    i64NumItems: Int64;
    // Total number of items in the specified Recycle Bin.
  end;

const
  shell32 = 'shell32.dll';

function SHQueryRecycleBin(szRootPath: PChar; SHQueryRBInfo: PSHQueryRBInfo): HResult;
  stdcall; external shell32 Name 'SHQueryRecycleBinA';

function GetDllVersion(FileName: string): Integer;
var
  InfoSize, Wnd: DWORD;
  VerBuf: Pointer;
  FI: PVSFixedFileInfo;
  VerSize: DWORD;
begin
  Result  := 0;
  InfoSize := GetFileVersionInfoSize(PChar(FileName), Wnd);
  if InfoSize <> 0 then
  begin
    GetMem(VerBuf, InfoSize);
    try
      if GetFileVersionInfo(PChar(FileName), Wnd, InfoSize, VerBuf) then
        if VerQueryValue(VerBuf, '\', Pointer(FI), VerSize) then
          Result := FI.dwFileVersionMS;
    finally
      FreeMem(VerBuf);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  DllVersion: integer;
  SHQueryRBInfo: TSHQueryRBInfo;
  r: HResult;
begin
  DllVersion := GetDllVersion(PChar(shell32));
  if DllVersion >= $00040048 then
  begin
    FillChar(SHQueryRBInfo, SizeOf(TSHQueryRBInfo), #0);
    SHQueryRBInfo.cbSize := SizeOf(TSHQueryRBInfo);
    R := SHQueryRecycleBin(nil, @SHQueryRBInfo);
    if r = s_OK then
    begin
      label1.Caption := Format('Size:%d Items:%d',
        [SHQueryRBInfo.i64Size, SHQueryRBInfo.i64NumItems]);
    end
    else
      label1.Caption := Format('Err:%x', [r]);
  end;
end;

{
The SHQueryRecycleBin API used in this method is
only available on systems with the latest shell32.dll installed with IE4 /
Active Desktop.
}


ADMIRAL 14-10-2023 11:09

Quote:

Originally Posted by audiofeel (Post 502809)
To be honest, if I were Blackfire69, I'd tell us to go to hell. I do not know why, but he helps us and you all. And listen... let's all thank him for spending his time with us. Keep it if you can figure it out. I lost interest in him, all hope for Hitman797. And maybe Blackfire69 will hold it.
I warn you right away that he is not ready :o
Everything was pulled out by the hitman797 user with the help of dumps, etc. I immediately warn him that he is not ready, there is no animation of the transition from the waiting page and the directory selection page is not ready.
It completely repeats the original up to the X - Y coordinates
by the way, Razor12911 is a very kind person and has not once communicated with me and with many NPAs in this forum thread. I think he will come to a meeting in and reveal the raw materials of the project in Delphi
P.S a month ago I thought that my country had been minted now I think that everyone has been minted

I must say that you are absolutely right
No matter how much we thank all three of them, it is still not enough for their efforts
Thank you for sharing this script, I am trying to rewrite this script myself so that I can reach a level like I was able to do in React JS.

Jahan1373 15-10-2023 21:53

Hello, audiofeel you have worked hard, I hope you will complete this project, the important thing is you and those who accept you, please don't be offended by what others say and finish the work, hoping for bright days for you and all the friends of the site.

BLACKFIRE69 16-10-2023 06:53

Quote:

Originally Posted by hitman797 (Post 502830)
...get the number of Files in the Recycle Bin and their total size?


@hitman797,

ok, i'll add a new function to retrieve RecycleBin info in a future 'FMXInno' update.
currently, there are no new features or bug fixes to push an update.
so, feel free to use your own library until the next update, especially if you need it right now.


Delphi DLL:

Code:

library AMyDll;
{$R *.res}

const
  C_M_BYTES = 1024 * 1024;

type
  DWORDLONG = UInt64;
  DWORD = FixedUInt;
  LPCWSTR = PWideChar;
  LPSHQUERYRBINFO = ^SHQUERYRBINFO;
  SHQUERYRBINFO = packed record
    cbSize      : DWORD;    // Size of struct SHQUERYRBINFO.
    i64Size    : DWORDLONG; // Files size in Bytes.
    i64NumItems : DWORDLONG; // Files Count.
  end;

function SHQueryRecycleBinW(pszRootPath: LPCWSTR; pSHQueryRBInfo: LPSHQUERYRBINFO): HResult; stdcall;
  external 'shell32.dll' name 'SHQueryRecycleBinW';

function AGetRecycleBinInfo(ARootPath: WideString; var TotalSizeMB: extended;
  var FileCount: Integer): Boolean; stdcall;
var
  RBInfo: SHQUERYRBINFO; // Structure to store RecycleBin info
  RBRoot: LPCWSTR;      // Root path for the RecycleBin query
begin
  try
    // RBRoot <> nil --> Retrieve RecycleBin info from ARootPath.
    // RBRoot =  nil --> Retrieve RecycleBin info from All Drives.
    if Length(ARootPath) = 0 then RBRoot := nil else RBRoot := LPCWSTR(ARootPath);

    RBInfo.cbSize := SizeOf(RBInfo);  // Set the size of the structure

    if SHQueryRecycleBinW(RBRoot, @RBInfo) = S_OK then
    begin
      TotalSizeMB := RBInfo.i64Size / C_M_BYTES;
      FileCount  := RBInfo.i64NumItems;
      Result      := True;
    end else
      Result      := False;
  except
    Result        := False;
  end;
end;

exports
  AGetRecycleBinInfo;

begin
end.



InnoSetup:

Code:

function AGetRecycleBinInfo(ARootPath: WideString; var TotalSizeMB: Extended; var FileCount: Integer): Boolean;
  external 'AGetRecycleBinInfo@files:AMyDll.dll stdcall';


procedure TestBtnClick(Sender: TObject);
var
  TotalSizeMB: Extended;
  FileCount: Integer;
begin
  if AGetRecycleBinInfo('', TotalSizeMB, FileCount) then
  begin
    Memo.Lines.Add(format('RecycleBin Files Size:      < %0.2n GB >', [TotalSizeMB / 1024]));
    Memo.Lines.Add(format('RecycleBin Files Count:  < %d >', [FileCount]));
  end else
    Memo.Lines.Add('AGetRecycleBinInfo Error!')
end;


.

hitman797 16-10-2023 07:14

Quote:

Originally Posted by BLACKFIRE69 (Post 502852)

ok, i'll add a new function to retrieve RecycleBin info in a future 'FMXInno' update.
currently, there are no new features or bug fixes to push an update.
so, feel free to use your own library until the next update, especially if you need it right now.
.

Great work, thanks for the library.
I will use this library until the update is released to FMXInno. :rolleyes:

Tihiy_Don 16-10-2023 22:32

Quote:

Originally Posted by BLACKFIRE69 (Post 502852)
@hitman797,
ok, i'll add a new function to retrieve RecycleBin info in a future 'FMXInno' update.
currently, there are no new features or bug fixes to push an update.
so, feel free to use your own library until the next update, especially if you need it right now.


I have been using your library for a long time in my distributions, as well as repacks from FMXTeam.

P.S. I'm still waiting for the implementation of creating a form with a background in the form of a video.

hitman797 19-10-2023 08:27

Radiant Shapes
 
3 Attachment(s)
Radiant Shapes:
RadiantShapes.exe

BLACKFIRE69 20-10-2023 05:20

CorePack Installer: Simple
 
11 Attachment(s)
CorePack Installer: Simple - [Demo]


.

Behnam2018 20-10-2023 20:25

Hello, thanks, but the shortcut does not work on the desktop

hitman797 20-10-2023 22:19

Quote:

Originally Posted by Behnam2018 (Post 502884)
Hello, thanks, but the shortcut does not work on the desktop

Edit the Setup.ini

Code:

[Execs]
; AppExe<1>=Tile Caption|Exec Directory|Exec File|Shortcut Name/Action Name|IconFilename|IconIndex
; ex:
;  AppExe1=Red Dead Redemption 2||Launcher.exe|Red Dead Redemption 2 v1.0.1436|{app}\Launcher.exe|0
AppExe1=Red Dead Redemption 2||Launcher.exe|Red Dead Redemption 2 v1.0.1436|{app}\RDR2_icon.ico|0


BLACKFIRE69 14-11-2023 05:04

FMXInno - Updates
 
FMXInno Updates - [2023-Nov-13]

Code:

* Added new functions:
  -- function wGetRecycleBinInfo(ARootPath: WideString; var TotalSizeMB: Extended; var FileCount: Integer): Boolean;
  -- function wCopyToClipboard(const AStr: WideString): Boolean;
  -- function wPasteFromClipboard: WideString;
 
* Updated FForm class.

* Updated FluentApi (Internal + External).
  -- Make sure to update your current scripts as follows:
 
    function EnableFluent(const WinHandle: HWND; DarkTheme, NoBorders, NoTitleBar: Boolean; Opacity: Single; BrightnessPct: Byte): Integer;
    external 'EnableFluent@{tmp}\FluentApi.dll stdcall uninstallonly delayload';
 
    to
 
    function EnableFluent(const WinHandle: HWND; DarkTheme, NoBorders, NoTitleBar: Boolean; Opacity: Single; BrightnessPct: Byte): Integer;
    external 'faC1222296@{tmp}\FluentApi.dll stdcall uninstallonly delayload';

* Updated ISArcEx (Internal + External).
  -- Added a new method:
    > ISArcExIsSuspended.
       
  -- The following methods have been renamed and updated:
    > Suspend/Resume Proc, ChangeLanguage.
       
* Updated Botva2-like classes:
  -- FPictureButton2, FPictureVisiblePart, FPictureProgressBar, and FPictureTrackBar.

* Some improvements and bug fixes.


Code:

* Compiled in RadStudio 12 Athens.
  -- Embarcadero claims that the performance has been improved for FMX.

  -- FMXInno already comes with built-in support for SKIA, but since RadStudio 12
    and onward, Delphi has native support for SKIA.
    If you need me to update SKIA in FMXInno, I'll do that on request.
       
  Note: This update doesn't use the RadStudio 12 native SKIA (v6.0.0); instead,
        this update uses the previous version (v5.0.0).



The first post has been updated.

ADMIRAL 14-11-2023 06:52

Quote:

Originally Posted by audiofeel (Post 502741)
Thanks for the hotfix. It seems that everything you need is working properly.

Hi dear friend
The installation path selection section in windows 10 pro new Updates. it has a problem and does not work
I tried to change the codes but it doesn't work

Masquerade 14-11-2023 10:44

@BLACKFIRE69
I'd like to continue my discussion from Krinkels.org about my font issue, I downloaded and ran your test project and the font does display correctly but the setup will not close - it just hangs once close button is pressed.

Is it possible that there's a bug in my Windows?

ADMIRAL 14-11-2023 11:56

1 Attachment(s)
Quote:

Originally Posted by audiofeel (Post 502902)
the "overview" (Обзор) button

thanks for answer but it's was about metro0 script that you posted

BLACKFIRE69 14-11-2023 21:15

Quote:

Originally Posted by Masquerade (Post 502905)
@BLACKFIRE69
I'd like to continue my discussion from Krinkels.org about my font issue, I downloaded and ran your test project and the font does display correctly but the setup will not close - it just hangs once close button is pressed.

Is it possible that there's a bug in my Windows?


@Masquerade, can you tell me which of the following tests works for you?
.

BLACKFIRE69 14-11-2023 22:53

Quote:

Originally Posted by Behnam2018 (Post 502884)
Hello, thanks, but the shortcut does not work on the desktop


everything is working fine.

.

BLACKFIRE69 14-11-2023 23:11

Quote:

Originally Posted by ADMIRAL (Post 502908)
thanks for answer but it's was about metro0 script that you posted

@ADMIRAL,

after making a few changes to the code, you can make it work. however, if i'm correct, there're some aspects in the script that need further implementation. it would be better to ask the authors to complete the script. ;)


Code:

Edit1:

* Replace the current 'ListBoxOnChange' code with this.

procedure ListBoxOnChange(Sender: TObject);
var
  ADir: String;
begin
  if (FMXListBox[2].GetItemIndex > -1) then
  begin
    ADir := FMXEdit[1].GetText;
    StringChange(ADir, ExtractFileDrive(ADir), FMXListBox[2].GetItemText(FMXListBox[2].GetItemIndex));
    FMXLabel[197].Text(MinimizePathName(ADir, WizardForm.DirEdit.Font, WizardForm.DirEdit.Width));
    FMXEdit[1].Text(MinimizePathName(ADir, WizardForm.DirEdit.Font, WizardForm.DirEdit.Width));
    WizardForm.DirEdit.Text:= ADir;

    FMXDiskUsage.SetDir(WizardForm.DirEdit.Text);
    FMXLabel[82].Text(MbOrTb(FMXDiskUsage.FreeSpace, 1));
    FMXLabel[85].Text(MbOrTb(FMXDiskUsage.FreeSpace, 1) + ' is available from the selected drive');
    FMXArc[5].Angle(FMXDiskUsage.FreeSpace, FMXDiskUsage.TotalSpace);
  end;
end;

procedure ListBx3OnChange(Sender: TObject);
var
  ADir: WideString;
begin
  if FMXListBox[3].GetItemIndex > -1 then
  begin
    ADir:= ExtractFileDrive(FMXEdit[1].GetText) + '\' + AddBackslash(FMXListBox[3].GetItemText(FMXListBox[3].GetItemIndex)) + '{#MyAppName}';
    FMXLabel[197].Text(MinimizePathName(ADir, WizardForm.DirEdit.Font, WizardForm.DirEdit.Width));
    FMXEdit[1].Text(MinimizePathName(ADir, WizardForm.DirEdit.Font, WizardForm.DirEdit.Width));
    WizardForm.DirEdit.Text:= ADir;

    FMXDiskUsage.SetDir(WizardForm.DirEdit.Text);
    FMXLabel[82].Text(MbOrTb(FMXDiskUsage.FreeSpace, 1));
    FMXLabel[85].Text(MbOrTb(FMXDiskUsage.FreeSpace, 1) + ' is available from the selected drive');
    FMXArc[5].Angle(FMXDiskUsage.FreeSpace, FMXDiskUsage.TotalSpace);
  end;
end;


Code:

Edit2:

* Comment out the following line in the code.

//FMXEdit[1].OnChange(@ListBoxOnChange);


Code:

Edit3:

* Replace the ListBoxOnChange event with ListBx3OnChange for the FMXListBox[3].

FMXListBox[3].OnChange(@ListBx3OnChange);

.

Masquerade 15-11-2023 00:45

Quote:

Originally Posted by BLACKFIRE69 (Post 502912)
@Masquerade, can you tell me which of the following tests works for you?
.

Test 1: Font works, hangs on closing
Test 1A: Font works, hangs on closing
Test 2: Font works, window closes but hangs in taskbar.
Test 2A: Font works, window closes but hangs in taskbar.

BLACKFIRE69 15-11-2023 01:29

Quote:

Originally Posted by Masquerade (Post 502916)
Test 1: Font works, hangs on closing
Test 1A: Font works, hangs on closing
Test 2: Font works, window closes but hangs in taskbar.
Test 2A: Font works, window closes but hangs in taskbar.


ok mate. maybe try it on a different PC. here, everything works fine, even on virtual machines. also, try disabling the antivirus.

ADMIRAL 15-11-2023 08:02

Quote:

Originally Posted by BLACKFIRE69 (Post 502914)
@ADMIRAL,

after making a few changes to the code, you can make it work. however, if i'm correct, there're some aspects in the script that need further implementation. it would be better to ask the authors to complete the script. ;)


Code:

Edit1:

* Replace the current 'ListBoxOnChange' code with this.

procedure ListBoxOnChange(Sender: TObject);
var
  ADir: String;
begin
  if (FMXListBox[2].GetItemIndex > -1) then
  begin
    ADir := FMXEdit[1].GetText;
    StringChange(ADir, ExtractFileDrive(ADir), FMXListBox[2].GetItemText(FMXListBox[2].GetItemIndex));
    FMXLabel[197].Text(MinimizePathName(ADir, WizardForm.DirEdit.Font, WizardForm.DirEdit.Width));
    FMXEdit[1].Text(MinimizePathName(ADir, WizardForm.DirEdit.Font, WizardForm.DirEdit.Width));
    WizardForm.DirEdit.Text:= ADir;

    FMXDiskUsage.SetDir(WizardForm.DirEdit.Text);
    FMXLabel[82].Text(MbOrTb(FMXDiskUsage.FreeSpace, 1));
    FMXLabel[85].Text(MbOrTb(FMXDiskUsage.FreeSpace, 1) + ' is available from the selected drive');
    FMXArc[5].Angle(FMXDiskUsage.FreeSpace, FMXDiskUsage.TotalSpace);
  end;
end;

procedure ListBx3OnChange(Sender: TObject);
var
  ADir: WideString;
begin
  if FMXListBox[3].GetItemIndex > -1 then
  begin
    ADir:= ExtractFileDrive(FMXEdit[1].GetText) + '\' + AddBackslash(FMXListBox[3].GetItemText(FMXListBox[3].GetItemIndex)) + '{#MyAppName}';
    FMXLabel[197].Text(MinimizePathName(ADir, WizardForm.DirEdit.Font, WizardForm.DirEdit.Width));
    FMXEdit[1].Text(MinimizePathName(ADir, WizardForm.DirEdit.Font, WizardForm.DirEdit.Width));
    WizardForm.DirEdit.Text:= ADir;

    FMXDiskUsage.SetDir(WizardForm.DirEdit.Text);
    FMXLabel[82].Text(MbOrTb(FMXDiskUsage.FreeSpace, 1));
    FMXLabel[85].Text(MbOrTb(FMXDiskUsage.FreeSpace, 1) + ' is available from the selected drive');
    FMXArc[5].Angle(FMXDiskUsage.FreeSpace, FMXDiskUsage.TotalSpace);
  end;
end;


Code:

Edit2:

* Comment out the following line in the code.

//FMXEdit[1].OnChange(@ListBoxOnChange);


Code:

Edit3:

* Replace the ListBoxOnChange event with ListBx3OnChange for the FMXListBox[3].

FMXListBox[3].OnChange(@ListBx3OnChange);

.


Thank you for your quick reply, but even with the edit's codes, I am still facing the same problem. Are there any problems for you with these codes in the script?

ADMIRAL 15-11-2023 08:06

Quote:

Originally Posted by audiofeel (Post 502915)
This part of the code was implemented by @Hitman797. I think that sometimes he will have a free hour and he will fix everything thanks to your edits in the code.:)
==Here is the latest "clean version" for the changes==

In the first test, my partitions and folders were not displayed at all, and by adding codes, I only encountered errors.

ADMIRAL 15-11-2023 08:10

1 Attachment(s)
Quote:

Originally Posted by audiofeel (Post 502915)
This part of the code was implemented by @Hitman797. I think that sometimes he will have a free hour and he will fix everything thanks to your edits in the code.:)
==Here is the latest "clean version" for the changes==

Again, I tried to change the redirection section similar to the photo by simulating the codes, but again it was useless because the coding method is different in both.

Masquerade 15-11-2023 12:18

Weird... I installed the font to my system and now all is fine :confused:
Sorry for the issues! Inno isn't my thing...

ADMIRAL 16-11-2023 06:54

Quote:

Originally Posted by audiofeel (Post 502943)
@ADMIRAL Test whether your directory selection is working correctly now
:o

thanks to you
Yes, it worked this time
The path selection section works correctly, except that it does not show C drive folders for the first time, but the important thing is that the path can be selected.
and add folder button works too.

can you share the iss file?

Jahan1373 16-11-2023 08:24

Script metro need for speed
 
Everything is great and good, only I saw 2 big problems, one of them did not have the date of the watch
2. When I chose the installation location, it wrote the volume on the image, it wrote the same. 2. There were only problems, thanks for your good script

hitman797 16-11-2023 09:10

Quote:

Originally Posted by Jahan1373 (Post 502955)
Everything is great and good, only I saw 2 big problems, one of them did not have the date of the watch
2. When I chose the installation location, it wrote the volume on the image, it wrote the same. 2. There were only problems, thanks for your good script

wait for @BLACKFIRE69 to update the library to add those things.
and you missing the music button and counter app running.:o


All times are GMT -7. The time now is 23:34.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions Inc.
FileForums @ https://fileforums.com