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)

Fak Eid 20-05-2024 12:09

1 Attachment(s)
Quote:

Originally Posted by BLACKFIRE69 (Post 504565)
  • adding compatibility for higher DPI is a headache, but anyway, we've to deal with it.
  • this update will fix the issue that shows the titlebar at higher DPI settings (>= 125%).
  • feel free to report back if there are other issues.

(Tested at 125% scale)

I have actually figured out the reason why the header was displayed. Maybe, it can help you debug better. It was due to the content overflow (leak) out the FCustomFluentWindow at different scales.

The Piece of code which I tested in the video @1080p 125%:
Code:

  { Exit Form }
  ExitForm.FCreateBlankForm(FMXForm.HandleHWND, $FF161616, ExtractAndLoad('exit.jpg'));
  ExitForm.Height(160);      //If you make this 165, the form will display fine
  ExitForm.Width(420);
  ExitForm.DisableFluentEffects;

  ExitShadowLayer.FCreate(ExitForm.Handle);
  ExitShadowLayer.Align(Client);
  ExitShadowLayer.FillColor(ALBlack);
  ExitShadowLayer.Opacity(0.5);
  ExitShadowLayer.HitTest(False);

  ExitLbl[2].FCreate(ExitForm.Handle);
  ExitLbl[2].Text('Quit Installer');
  ExitLbl[2].TextSetting(False, txLeading, txLeading);
  ExitLbl[2].FontSetting('Segoe UI SemiLight', VCLFontSizeToFMX(15), {#TextColor});
  ExitLbl[2].AutoSize(True);
  ExitLbl[2].Position(20, 10);
  ExitLbl[2].HitTest(False);

  ExitLbl[3].FCreate(ExitForm.Handle);
  ExitLbl[3].Text('Setup is not complete. If you exit now, the progam will not be installed.' + #13 + 'Exit now?');
  ExitLbl[3].TextSetting(True, txLeading, txLeading);
  ExitLbl[3].FontSetting('Segoe UI', VCLFontSizeToFMX(9), ALWhite);
  ExitLbl[3].AutoSize(False);
  ExitLbl[3].SetBounds(20, 55, 420, 115);
  ExitLbl[3].HitTest(False);
  // Yes
  ExitBtnLbl[1].FCreate(ExitForm.Handle);
  ExitBtnLbl[1].Text('Yes');
  ExitBtnLbl[1].AutoSize(True);
  ExitBtnLbl[1].FontSetting('Segoe UI', VCLFontSizeToFMX(9), ALWhite);
  ExitBtnLbl[1].TextSetting(False, txLeading, txLeading);
  ExitBtnLbl[1].Position(220, 115);

  ExitBtn[1].FCreate(ExitForm.Handle);
  ExitBtn[1].SetBounds(180, 110, 100, 25);
  ExitBtn[1].Opacity(0.2);
  ExitBtn[1].CornerStyle(3, 3, [tcTopLeft, tcTopRight, tcBottomLeft, tcBottomRight], ctRound);
  ExitBtn[1].OnClick(@CommonOnClick);
  ExitBtn[1].OnMouseEnter(@CommonButtonEnter);
  ExitBtn[1].OnMouseLeave(@CommonButtonLeave);
  // No
  ExitBtnLbl[2].FCreate(ExitForm.Handle);
  ExitBtnLbl[2].Text('No');
  ExitBtnLbl[2].AutoSize(True);
  ExitBtnLbl[2].FontSetting('Segoe UI', VCLFontSizeToFMX(9), ALWhite);
  ExitBtnLbl[2].TextSetting(False, txLeading, txLeading);
  ExitBtnLbl[2].Position(340, 115);

  ExitBtn[2].FCreate(ExitForm.Handle);
  ExitBtn[2].SetBounds(300, 110, 100, 25);
  ExitBtn[2].Opacity(0.2);
  ExitBtn[2].CornerStyle(3, 3, [tcTopLeft, tcTopRight, tcBottomLeft, tcBottomRight], ctRound);
  ExitBtn[2].OnClick(@CommonOnClick);
  ExitBtn[2].OnMouseEnter(@CommonButtonEnter);
  ExitBtn[2].OnMouseLeave(@CommonButtonLeave);
end;


Fak Eid 20-05-2024 12:35

1 Attachment(s)
A false screen pops-up for a few second and disappears every time the Setup.exe file is run. This was not happening in the 14th May or older version.

BLACKFIRE69 21-05-2024 03:27

FMXInno - Updates
 
Just forget about the previous builds (May 19, etc.) because they had some issues. 'FMXForm.Show' didn't work properly, 'Translucent' objects didn't function, and 'BeginHaltProc' was broken, etc.

This update addresses those issues.




FMXInno - Final Release [2024-May-21]


Code:

* Integrated all the updates so far.
* Made some improvements and fixed bugs.
* Added new properties to classes.
* Updated Fluent API.

* Improved 'SetActiveThemeModeAwareness':
  -- It now supports all the forms except 'NormalForm' and 'ClassicForm'.

  > Fluent: ChangeFluentTheme (Dark/Light)
  > FluentColor: ChangeFluentColor
  > FluentBlendedColor: ChangeBlendedColor
  > BlankForm: ChangeBlankFormColor

* Optimized for higher DPI.
* Ensured FMXForm and MsgForms are shown in the desktop center.

* The package now includes InnoSetup v6.0.5 + ResTools IDE instead of InnoSetup v5.6.1:
  -- Make sure to use 'EmptyWizardForm' to resize the setup, especially for InnoSetup 6+.

* All basic tests were done with InnoSetup v6.3.0 Dev:
  -- To ensure FMXInno works with the latest updates of InnoSetup.

* Compiled in RadStudio 12.1 + Patch 01.



Quote:

Originally Posted by Fak Eid (Post 504540)
PS: Please also add GetSelectedDiskName (to get the name of the selected drive) on FDiskList.

A new property, 'GetSelectedDiskName', is available under 'FDiskList'.


The first post has been updated.


.

Tihiy_Don 21-05-2024 04:23

Please add the Cursor method for the FColorButton component.

Fak Eid 23-05-2024 12:29

Quote:

Originally Posted by Fak Eid (Post 504574)
A false screen pops-up for a few second and disappears every time the Setup.exe file is run. This was not happening in the 14th May or older version.

This issue is still happening in FMXInno [21-May] for all types of forms, at all resolutions and in both Inno Setup version, that is, 6.3.0 and 5.6.0

Tihiy_Don 24-05-2024 03:40

I also have this problem, a white square appears briefly on blankform. There is no such problem with imageform.

BLACKFIRE69 26-05-2024 10:19

Quote:

Originally Posted by Fak Eid (Post 504614)
This issue is still happening in FMXInno [21-May] for all types of forms, at all resolutions and in both Inno Setup version, that is, 6.3.0 and 5.6.0


Windows gets new updates regularly, and i've upgraded to the newest version of RadStudio, so anything could be affect this. this is the best optimization that i can do on my part. if it doesn't work, then i can't do anything about it.

check the attachment.



Quote:

Originally Posted by Tihiy_Don (Post 504581)
Please add the Cursor method for the FColorButton component.


Added the 'cursor' property for custom blueprints.



InnoSetup 6.3.0 Dev:

Code:

* Compiled with the latest source code (2024-May-26).

* Added missing help files.

* Corrected custom syntax highlighting.
  -- In the previous build, i might have done something wrong. this build will fix it.


Fak Eid 27-05-2024 01:54

Help for FNewINI
 
I still need help with this
Earlier to read AppName from .ini file we used to:
Code:

#define AppName ReadIni(SourcePath + "Game\Installer.ini", "Installer", "Name", "")

[Setup]
AppName={#AppName}

Is it possible to do it using the new FNewINI command like:
Code:

[Setup]
AppName=ANewInI.ReadString('Installer', 'Name', '')


BLACKFIRE69 28-05-2024 13:29

9 Attachment(s)
Quote:

Originally Posted by Fak Eid (Post 504649)
I still need help with this
Earlier to read AppName from .ini file we used to:
Code:

#define AppName ReadIni(SourcePath + "Game\Installer.ini", "Installer", "Name", "")

[Setup]
AppName={#AppName}

Is it possible to do it using the new FNewINI command like:
Code:

[Setup]
AppName=ANewInI.ReadString('Installer', 'Name', '')




this tool is the CLI version of 'FNewINI' and can be used for preprocessing and automating everything at compile-time.

in the attachment, you'll find a simple example of how to read and configure the setup with the following INI file.



.

Fak Eid 28-05-2024 22:44

Hi @Blackfire,

It is good that we now have a preprocessor for Read INI, but personally I think that we only need that to pass {#AppName} and {#DirName} at the compile time during the setup creation process. Rest everything can be handled without preprocessor. The FNewINI is written well enough. Please consider an example I shared above for Icons creation. It is easy to read, has a common procedure for all AppExe, less code, has ability to add more parameters in future and doesn't use preprocessor. You can definitely enhance and add to FMXInno (if you feel)

If I have to use the preprocessor only, I'd rather use the older reliable method. But, thank you so much for the enhancements.

I'd be posting more on Redist installation handling and Data extraction handling. I'm coding and testing on them.

Fak Eid 29-05-2024 10:48

Quote:

Originally Posted by audiofeel (Post 504663)
the proposed version of @blackfire69 is good because an ordinary user no longer needs to manually create a checkbox and set the text and its coordinates to it, just make changes to the ini file and the checkbox will appear and the necessary archive will be searched for unpacking.

I've an almost complete version of code where the user doesn't need to write any code at all for creating selective components. It's in my 'Random_Gamertags' Repack.

I've almost completed changes and currently testing this with new FNewINI

Fak Eid 04-06-2024 09:19

Issue with FCombineText
 
1 Attachment(s)
Hi @Blackfire,

Not sure if you remember I asked how can I have just 1 character space instead of Tab Space for FCombineText, and you mentioned it can be done using 0 or -1, -2, etc. The problem is, it is not working for Smaller Font Size like 12-15. The two texts are not on same height and the gap is unusual. On Larger Font Size, like 16, it is working as expected. Can you help?

Code:

SectionText[1].FCreate(SectionContent[1].Handle, 500, 15, 'Developers :', INI_DEVELOPERS, -1, False);
SectionText[1].Text1Setting('{#FontName}', 12, {#FontColor}, False);
SectionText[1].Text2Setting('{#FontName}', 12, {#SelectedFontColor}, False);

SectionText[2].FCreate(SectionContent[1].Handle, 500, 35, 'Genre :', INI_GENRE, -1, False);
SectionText[2].Text1Setting('{#FontName}', 12, {#FontColor}, False);
SectionText[2].Text2Setting('{#FontName}', 12, {#SelectedFontColor}, False);


hitman797 04-06-2024 11:31

Quote:

Originally Posted by Fak Eid (Post 504690)
Hi @Blackfire,

Not sure if you remember I asked how can I have just 1 character space instead of Tab Space for FCombineText, and you mentioned it can be done using 0 or -1, -2, etc. The problem is, it is not working for Smaller Font Size like 12-15. The two texts are not on same height and the gap is unusual. On Larger Font Size, like 16, it is working as expected. Can you help?

Code:

SectionText[1].FCreate(SectionContent[1].Handle, 500, 15, 'Developers :', INI_DEVELOPERS, -1, False);
SectionText[1].Text1Setting('{#FontName}', 12, {#FontColor}, False);
SectionText[1].Text2Setting('{#FontName}', 12, {#SelectedFontColor}, False);

SectionText[2].FCreate(SectionContent[1].Handle, 500, 35, 'Genre :', INI_GENRE, -1, False);
SectionText[2].Text1Setting('{#FontName}', 12, {#FontColor}, False);
SectionText[2].Text2Setting('{#FontName}', 12, {#SelectedFontColor}, False);


Code:

    TTextAlign = (txCenter, txLeading, txTrailing);
    procedure Text1HorzAlign(HAlign: TTextAlign);
    procedure Text2HorzAlign(HAlign: TTextAlign);


Fak Eid 04-06-2024 23:50

1 Attachment(s)
Quote:

Originally Posted by hitman797 (Post 504692)
Code:

    TTextAlign = (txCenter, txLeading, txTrailing);
    procedure Text1HorzAlign(HAlign: TTextAlign);
    procedure Text2HorzAlign(HAlign: TTextAlign);


Hi @hitman @Blackfire

Thank you. I tried and have to manually align the text for this. However, in Smaller Font Size (like 12-15), the two text still doesn't seem to be aligned height-wise. Any fix for it?

Code:

  SectionText[1].FCreate(SectionContent[1].Handle, 500, 15, 'Developers :', INI_DEVELOPERS, -1, False);
  SectionText[1].Text1Setting('{#FontName}', 12, {#FontColor}, False);
  SectionText[1].Text2Setting('{#FontName}', 12, {#SelectedFontColor}, False);
  SectionText[1].Text1HorzAlign(txTrailing);
  SectionText[1].Text2HorzAlign(txTrailing);

  SectionText[2].FCreate(SectionContent[1].Handle, 505, 35, 'Genre :', INI_GENRE, -1, False);
  SectionText[2].Text1Setting('{#FontName}', 12, {#FontColor}, False);
  SectionText[2].Text2Setting('{#FontName}', 12, {#SelectedFontColor}, False);
  SectionText[2].Text1HorzAlign(txTrailing);
  SectionText[2].Text2HorzAlign(txTrailing);

  SectionText[3].FCreate(SectionContent[1].Handle, 500, 55, 'Release Date :', INI_RELEASE_DATE, -1, False);
  SectionText[3].Text1Setting('{#FontName}', 12, {#FontColor}, False);
  SectionText[3].Text2Setting('{#FontName}', 12, {#SelectedFontColor}, False);
  SectionText[3].Text1HorzAlign(txTrailing);
  SectionText[3].Text2HorzAlign(txTrailing);

Another issue: InstallFMXFont sometimes hangs the launch of Setup.exe during Runtime.

Tihiy_Don 05-06-2024 04:09

Quote:

Originally Posted by Fak Eid (Post 504697)
Another issue: InstallFMXFont sometimes hangs the launch of Setup.exe during Runtime.

HI. Use new method:
Code:

function InitializeSetup: Boolean;
begin
  AddFontResource2(ExtractAndLoad('{#MyFont1}'));
  FMXInnoInit;
  Result:= True;
end;

procedure DeinitializeSetup();
begin
  RemoveFontResource2(ExpandConstant('{tmp}\{#MyFont1}'));
  ISArcExCleanUp;
  FMXInnoShutDown;
end;

Now you do not need to specify InstallFMXFont in the FMXDesigning procedure

Fak Eid 08-06-2024 15:21

Quote:

Originally Posted by Tihiy_Don (Post 504701)
Now you do not need to specify InstallFMXFont in the FMXDesigning procedure

I knew about AddFontResource2. I thought 'InstallFMXFont' was the newest thing. Sorry, I can't keep track of updates.

Quote:

Originally Posted by audiofeel (Post 504762)
in my opinion, we lack this..
Code:

    procedure Text1VertAlign(VAlign: TTextAlign);
    procedure Text2VertAlign(VAlign: TTextAlign);

:o

Yes, i believe or whatever fixes this issue on smaller fonts. One of my FMX Installer is completely dependent on the use of it and I've to wait longer just to get this fixed. Although, it is working for larger font size like 16+.

BLACKFIRE69 10-06-2024 12:26

FMXInno - Updates
 
6 Attachment(s)
FMXInno - Final Release [2024-June-10]


What's new:

* Merged Runtime-Scripts into this build.

* 'FNewINI' updated.

- Now you can create a 'FNewINI' from a string.
Code:

  InIStr := '[SecM]'      +#13#10+
            'Key1=Val01'  +#13#10+
            'Key2=Val02'  +#13#10+
            ''            +#13#10+
            '[SecM\SecA]' +#13#10+
            'KeyA=ValA'  +#13#10+
            'KeyB=ValB';

  ANewINI.FcreateFromString(InIStr);

* Minor bug fixes and improvements.
* And it's recommended to use the latest version of InnoSetup v6.3.0.


The first post has been updated.


If you expect the following features, let me know:
Code:

1. PDF Viewer (*.pdf).
2. Markdown Viewer (*.md).
3. HTML Viewer (*.html).


---------------------------------------------------------------------------------------------------------------------

@Fak Eid,

* FCombineText/vertical mismatch:

- You have to use the Offset Y value to fix the vertical mismatch. (FCombineText.OffsetYText2(DY))
- Also, I removed the properties 'Text1HorzAlign' and 'Text2HorzAlign' from 'FCombineText'.

Example:

Code:

const
  c_max0 = 14;
  Pttrn  = 4; // 1, 2, 3 or 4.

procedure FMXDesigning;
var i, j, k, c_max: Integer;
begin
  ...
  if (c_max0 mod 2) = 0 then c_max := c_max0 else c_max := c_max0 - 1;

  { ACombineText }
  for i := 1 to c_max do begin
    if i <= (c_max div 2) then begin
      case Pttrn of
        1: j:=-1*(i-1);
        2: j:=-1*((c_max div 2)-i);
        3: j:=-1*Round(Abs((((c_max div 2) div 2)+1)-i));
        4: if i<=(((c_max div 2) div 2)+1) then j:=-1*(i-1) else j:=-1*((c_max div 2)-i);
        else j:=-1*(i-1);
      end;
      k:=0;
    end else begin
      case Pttrn of
        1: j:=(i-((c_max div 2)+1));
        2: j:=(c_max-i);
        3: j:=Round(Abs(((c_max+(c_max div 2)+1) div 2)-i));
        4: if i<=((c_max+(c_max div 2)+1) div 2) then j:=(i-((c_max div 2)+1)) else j:=(c_max-i);
        else j:=(i-((c_max div 2)+1));
      end;
      k:=20;
    end;
    ACombineText[i].FCreate(FMXForm.Handle,60,120+((i-1)*15)+k,'The Module Name:','FMXInno.dll',j,False);
    ACombineText[i].Text1Setting('Segoe UI', 10, ALBlack, False);
    ACombineText[i].Text2Setting('Segoe UI', 13, ALRed, False);
    ACombineText[i].Text1ShadowSetting(ALBlack, 0.2, 0.2);
    ACombineText[i].Text2ShadowSetting(ALRed, 0.1, 0.6);
    ACombineText[i].OffsetYText2(-1.5);
  end;
  ...
end;

https://i.ibb.co/1f7HkRR/1.png


---------------------------------------------------------------------------------------------------------------------

@audiofeel,

* 'DrawFrame' has been updated for FFluentStartBrowse and FFluentDirBrowse.

* Setup-exiting issue for 'FOSInfo' with Windows 11 24H2 insider builds.
- In insider builds, Microsoft is pushing hard and has disabled (not deprecated) some useful features by default. This may be the reason for that.
- Once 24H2 is released, I'll update everything to be compatible with the new release.
- I don't release any fixes for beta versions, but for now, I made some modifications in this build which, if detected, may make 'FOSInfo' work with 24H2.

(I deleted the virtual machine with Win11 24H2 installed, so I couldn't test it.)
* MInI updated.

- Previous code examples may not work with the new MInI.exe.
- Now it will accept parameters in any of the following formats:

Code:

    1. /Sec=Player    || --Sec=Player      || /s=Player    || -s=Player
    2. /Sec="Player"  || --Sec="Player"    || /s="Player"  || -s="Player"
    3. /Sec='Player'  || --Sec='Player'    || /s='Player'  || -s='Player'

    4. /Sec:Player    || --Sec:Player      || /s:Player    || -s:Player
    5. /Sec:"Player"  || --Sec:"Player"    || /s:"Player"  || -s:"Player"
    6. /Sec:'Player'  || --Sec:'Player'    || /s:'Player'  || -s:'Player'

    7. /Sec Player    || --Sec Player      || /s Player    || -s Player
    8. /Sec "Player"  || --Sec "Player"    || /s "Player"  || -s "Player"
    9. /Sec 'Player'  || --Sec 'Player'    || /s 'Player'  || -s 'Player'

- Added a new function called 'CalcTotalDiskSizeByte' which calculates the total size of disks in bytes.

For that, the INI file should look like this:

Code:

[Datas]

[Datas\Data1]
File={src}\data1.bf
Size=1245

[Datas\Data2]
File={src}\data2.bf
Size=2356

[Datas\Data3]
File={src}\data3.bf
Size=4578

Code:

USAGE:  MInI.exe CalcTotalDiskSizeByte /MainSec=Datas /Key=Size

[Setup]
...
ExtraDiskSpaceRequired={#ReadMInI('CalcTotalDiskSizeByte', '/MainSec=Datas /Key=Size')}
...


- Updated Example.iss file to retrieve disk sizes and component-disk sizes at compile time.

Now everything is automated, so there's nothing to do manually.




.

Tihiy_Don 10-06-2024 22:05

Will there be a fix for the FFormImgSlide component?

Fak Eid 11-06-2024 01:47

1 Attachment(s)
Quote:

Originally Posted by Tihiy_Don (Post 504782)
Will there be a fix for the FFormImgSlide component?

What is the issue with FFormImgSlide?

Quote:

Originally Posted by BLACKFIRE69 (Post 504778)
@Fak Eid,

* FCombineText/vertical mismatch:

Thank you that fixed all the issues with FCombineText. It is really a very important and necessary feature.

@Blackfire

I'd really like to have a 'HTML Viewer' example where I can integrate a youtube video to my installer which buffers based on internet connection instead of importing during setup.exe creation.

This is not a necessity and completely dependent if it can be implemented.
Link: https://www.skidrowreloaded.com/hori...e-v1-0-43-p2p/

Code:

<div class="html5-video-container" data-layer="0">
<video tabindex="-1" class="video-stream html5-main-video" webkit-playsinline="" playsinline="" controlslist="nodownload" style="width: 560px; height: 315px; left: 0px; top: 0px;"
src="blob:https://www.youtube.com/2ef7c9b2-0611-4dfd-b49b-4aa461f19f96" __idm_id__="2465793">
</video>
</div>


Fak Eid 12-06-2024 13:32

Abilities of FColorButton / Completely new type of Button
 
3 Attachment(s)
Right now in order to create the image I have to do an alternate like:
SettingsBtn: array[1..4] of FRectangle;
SettingsBtnIcon: array[1..4] of FText;
SettingsBtnLabel: array[1..4] of FText;

Code:

  SettingsBtn[1].FCreate(SettingsRect[1].Handle);
  SettingsBtn[1].FillColor(HTMLColorStrToFMXColor('#3d434f'));
  SettingsBtn[1].SetBounds(0, 120, 190, 40);
  SettingsBtn[1].Opacity(0.8);
  SettingsBtn[1].OnMouseEnter(@CommonMouseEnter);
  SettingsBtn[1].OnMouseLeave(@CommonMouseLeave);
  SettingsBtn[1].OnClick(@CommonClick);

  SettingsBtnIcon[1].FCreate(SettingsBtn[1].Handle);
  SettingsBtnIcon[1].Text(#57793);
  SettingsBtnIcon[1].SetBounds(0, 0, 80, 40);
  SettingsBtnIcon[1].FontSetting('Segoe UI Symbol', 18, {#SelectedFontColor});
  SettingsBtnIcon[1].HitTest(False);

  SettingsBtnLabel[2].FCreate(SettingsBtn[1].Handle);
  SettingsBtnLabel[2].Text('Directory');
  SettingsBtnLabel[2].SetBounds(60, 0, 190, 40);
  SettingsBtnLabel[2].FontSetting('{#FontName}', 16, {#SelectedFontColor});
  SettingsBtnLabel[2].TextSetting(false, txLeading, txCenter);
  SettingsBtnLabel[2].HitTest(False);

I even did an alternative using a combo of FColorButton and FCombineText, but it is not working as FCombineText doesn't have HitTest method.

Can someone suggest me any other alternative to achieve this with simple and less code. Does anyone think it is a good feature to implement? If not, I'll continue with the same code combo I was using.
procedure SetLB1Position(const X, Y: Single);
procedure SetLB2Position(const X, Y: Single);

Issue with FLabel: No Event Listeners of FLabel is responding. Edit: Fixed with HitTest(True); Thanks to audiofeel
Issue with FCombineText: No Event Listeners (getObject1, getObject2) are responding.
Enhancement on FVideoPlayer: Support for .mp4 file extension
Enhancement on FDiskList: I'd still like to see the Blue Covering Box, when set BackVisible(False). In this scenario, I'm unable to see the selected Disk. Edit : Also add, GetLB1Text. If user makes directory update to FEdit, I need to select the disk, the user has input as text. Also, display Disk Name if it exist. If not, show 'Logical Disk'

longpv818 12-06-2024 20:09

thank you so much. It's my looking.

---------------------------------------------------
Đến với TEM NHĂN CÔNG NGHIỆP THỊNH PHÁT là đến với niềm tin, đến với sự cam kết lâu dài cùng phát triển.
Với nhiều dịch vụ như làm tem inox ăn ṃn - name plate inox chuyên nghiệp trực tiếp tại xưởng. Toàn thể nhân viên luôn cam kết dịch vụ name plate inox, chất lượng cũng như giá thành tốt nhất cho tất cả khách hàng có nhu cầu làm biển hiệu công ty hoặc làm tem nhăn động cơ
Với một công ty th́ Tem nhăn động cơ là sản phẩm không thể thiếu để khách hàng thấy sự chuyện nghiệp cũng như văn hóa tốt đẹp của công ty.

Tem nhăn Thịnh Phát là đơn vị cung cấp biển inox ăn ṃn hcm, tem inox ăn ṃn cho máy móc - công tŕnh công nghiệp dân dụng ... và tem nhôm trên toàn quốc.
Những sản phẩm như biển inox ăn ṃn hoặc là biển pḥng ban th́ chúng tôi sẽ thiết kế và báo giá hoàn toàn miễn phí trước khi kư hợp đồng và sản xuất sản phẩm.
Bên cạnh đó với nhiều ưu điểm vượt trội th́ tem inox là sản phẩm được sử dụng rất phổ biến từ các máy móc gia đ́nh hằng ngày đến các công tŕnh công cộng hay các dự án công nghiệp lớn.
Để vinh danh cho nhân viên hoặc tổ chức cá nhân có thành tích hoặc thâm niên cống hiến th́ tem nhăn động cơ là một sản phẩm không thể thiếu.
Sau khi làm bảng hiệu alu hoặc làm bảng hiệu th́ các doanh nghiệp nên đặt các quà tặng doanh nghiệp để gửi tặng khách hàng đối tác để gắn kết hai công ty.
Biển bảng chỉ dẫn hay bảng hướng dẫn văn pḥng – ṭa nhà bằng kim loại vừa đảm bảo độ bền lại có tính thẩm mỹ cao đang được nhiều đơn vị lựa chọn.Tem Nhăn Thịnh Phát chuyên sản xuất trực tiếp tem inox ăn ṃn các bảng biển chỉ dẫn bằng inox ăn ṃn , đồng ăn ṃn, biển hiệu công ty , tem inox ăn ṃn giá rẻ với nhiều thiết kế đẹp và sang trọng cũng như gia công sản xuất theo thiết kế riêng theo yêu cầu,.

<img src="https://temnhanthinhphat.com/wp-content/uploads/2024/03/banner03-800x270.jpg" ]
biển chỉ dẫn inox ăn ṃn

<img src="https://temnhanthinhphat.com/wp-content/uploads/2024/03/IMG_1039-533x400.jpg" ]
biển chỉ dẫn inox ăn ṃn

<img src="https://temnhanthinhphat.com/wp-content/uploads/2024/03/img-0745-533x400.jpg" ]
biển chỉ dẫn inox ăn ṃn

<img src="https://temnhanthinhphat.com/wp-content/uploads/2024/03/img-0748-533x400.jpg" ]
biển chỉ dẫn inox ăn ṃn

<img src="https://temnhanthinhphat.com/wp-content/uploads/2024/03/img-2697-600x800.jpg" ]
biển chỉ dẫn inox ăn ṃn

<img src="https://temnhanthinhphat.com/wp-content/uploads/2020/08/engraved-stainless-steel-floor-level-signs_01.jpg" ]
Tem inox ăn ṃn giá rẻ

<img src="https://temnhanthinhphat.com/wp-content/uploads/2020/08/skinnydip-london-marine-grade-brushed-stainless-steel-engraved-etched-sign-01.jpg" ]
Bảng hướng dẫn ṭa nhà bằng inox ăn ṃn


Với kinh nghiệm nhiều năm làm tem inox bảng pḥng bằng inox và đội ngũ kỹ thuật, thiết kế nhiệt t́nh – nhiều kinh nghiệm chắc chắn sẽ mang lại cho Quư khách hàng sự hài ḷng và thỏa măn nhất từ thiết kế đến chất liệu và giá cả khi quư khách có nhu cầu làm bảng hiệu.
Đặc biệt chúng tôi khảo sát và thiết kế miễn phí trên toàn miền Nam.
Về bảng hiệu chúng tôi nhận thi công tất cả các loại biển pḥng bằng inox như :
– Bảng hiệu Alu chữ nổi
biển pḥng bằng inox , Chữ nổi Mica, Chữ nổi Alu, có đèn Led hoặc không.
– Bảng Hiệu đá granite, bảng hiệu đá hoa cương có gắn chữ inox hoặc mica.
– Bảng hiệu sau quầy tiếp tân …
– Và các loại tem inox ăn ṃn khác,

Quảng Cáo Thanh Thịnh Phát với đội ngũ kiến trúc sư, thiết kế bảng hiệu đẹp giàu kinh nghiệm, đội ngũ thợ thi công chuyên nghiệp,… chuyên thiết kế và thi công lắp đặt đa dạng các loại biển chỉ dẫn hồ bơi, biển báo hồ bơi làm bảng hiệu , biển quảng cáo đẹp như biển công ty, biển tóc, chữ nổi quảng cáo, biển đèn Led, bảng hiệu đẹp , biển quảng cáo điện tử, biển trivision, biển tấm lớn, bảng hiệu công ty hay bảng số nhà inox vàng xước .…

Không chỉ đa dạng các loại Logo inox ăn ṃn , chúng tôi c̣n làm bảng hiệu trên nhiều chất liệu khác nhau như mica, đồng ăn ṃn, bạt, Aluminum Composite, Innox, … đạt yêu cầu, chất lượng, có tính thẩm mỹ cao đáp ứng được yêu cầu của đông đảo khách hàng làm bảng hiệu công ty

CrownRepack 13-06-2024 01:16

1 Attachment(s)
Hi, can anyone help me with this error im getting, its just a simple picture i want to add to the language select startup box,

i have the necessary paths in my script but still get this error.

i already included in files section
[Files]
Source: "Files\spl.png"; DestDir: {tmp}; Flags: dontcopy

with all handles and in FMXDesigning i already
state

LangGameSplash.FCreate(LangForm.Handle);
LangGameSplash.SetBounds(5, 5, 266, 89);
LangGameSplash.FillPicture(ExpandConstant('{tmp}\s pl.png'), wmTileStretch);
LangGameSplash.HitTest(False);

but why i get this error that its not exist?

CrownRepack 13-06-2024 02:05

Nevermind guys, sorry, the problem is i put "ExpandConstant" instead of "ExtractandLoad"
ughhh

Fak Eid 13-06-2024 08:04

1 Attachment(s)
Can someone help me in creating these using style file?

Fak Eid 15-06-2024 10:45

1 Attachment(s)
Does anyone have any idea how can this be implemented?
I have SettingsForm: FCustomFluentWindow, and I just want to display this section on the form, without having another pop-up. How can this be implemented?

Like we have FStartMenuFolderTreeView, but it can only be on HWND handler, like FMXForm.HandleHWND. I'd want it inside an FCustomPage.Handle

Fak Eid 17-06-2024 00:18

Quote:

Originally Posted by audiofeel (Post 504813)
Is this solution not suitable for you?

This is for the directory. If this can somehow display menu folders, it can work. I thought if this feature was already present (like FStartMenuFolderTreeView) and if there exist a standard way by which we can do it.

BLACKFIRE69 17-06-2024 09:10

FXSignVerifier
 
5 Attachment(s)
Code:

App:      FXSignVerifier, A Signature Verifier For FMXInno 
Date:      2024-June-16 
CompilerZig v0.12.1


From now on, every FMXInno update attachment will be signed with a digital signature to verify that the update comes from a trusted source (in this case, me) and has not been tampered with.

So, what's the actual big deal with digital signing over checksum? Is a checksum not enough?


Checksum:
Quote:

1. No, a checksum is not enough. A checksum is used to verify the integrity of a file. It ensures that the file has not been corrupted or altered during transmission or storage.

2. Checksums are not secure against intentional tampering because if someone alters the file, they can also recompute the checksum.

3. Additionally, a checksum doesn't ensure that the file is coming from the original author (a trusted source).
Digital Signature:
Quote:

1. That's why digital signing comes in handy. A digital signature provides both integrity and authenticity. It ensures that the file has not been corrupted or altered and verifies the identity of the author.

2. Digital signatures are much more secure. They provide strong guarantees against tampering and forgery because the private key is known only to the signer (author).

3. They ensure the origin of the file (authenticity) and protect against modifications/corruptions (integrity).

Usage:
Code:

  FXSignVerifier.exe [-s sig_file] <-k pubkey> <-i file>

* You'll find the signature file and the public key for the latest version of FMXInno (2024-June-10) (.rar).
* The signature file will look like this:
Quote:

-----BEGIN SIGNATURE-----
Signature: signature from private key
RUTMYX9YetwBhHoWjuISrHpxLpFyXg2XiG02ff4cknKQU/6CAGlDsEIzuptvOLwACYfwEZhxNU9BRs4Kk78+obqIjcAPLkXU uQI=
Trusted: timestamp:1718633776, file:FMXInno + SKIA + Blend2D - Final Release [2024-June-10].rar, prehashed
3k+phFDdOLHstaec5OdCDUgQ2mEtZj1x4wpLkRPxGadrhSLovK 7TCBvb8Utsxj4JcYyxHkAjP0BbTBAVFRNzBA==
------END SIGNATURE------


.

hitman797 17-06-2024 10:53

Quote:

Originally Posted by Fak Eid (Post 504814)
This is for the directory. If this can somehow display menu folders, it can work. I thought if this feature was already present (like FStartMenuFolderTreeView) and if there exist a standard way by which we can do it.

use this procedure.
Code:

procedure SetPaths(const AUserPrograms, ACommonPrograms, AUserStartup, ACommonStartup: String);

Fak Eid 19-06-2024 13:24

@Blackfire69, Any idea how to import [Files] conditionally using FNewINI? No with pre-processor.

Any update on these?
FStartmenuFolderTreeView
HTMLViewer to play YT video
FDiskList enhancement and .mp4 support for FVideoPlayer

I tried this with HTML Viewer with WebView, but the huge logos of YT headbar takes the whole screen. My dimension for showing this is small. Anyways, if this can be done, will be a huge help for my Steam Limitless, as then the user won't have to import and include the video file in Setup.

Fak Eid 24-06-2024 04:12

Preprocessing value creation
 
This can read all single values of your Installer.ini without any use of plugin. Check example here or here

Code:

#define ReadInstaller(Section, Key, Default) ReadIni(SourcePath        + "Game\Installer.ini", Section, Key, Default)

[Setup]
AllowNoIcons=yes
AllowRootDirectory=true
AppId={{F9787790-D97B-457E-80DA-F69C91F862A8}
AppName={#ReadInstaller("Installer", "Name", "")}
AppVersion=1.0
AppCopyright=Random_Gamertags
DefaultDirName=C:\{#ReadInstaller("Installer", "DirName", "")}


CrownRepack 28-06-2024 11:29

Hi, I'm trying to add a function in my installer similar to CODEX or FLT installer where there's a checkbox that is "Copy Crack from directory" or "Apply Crack" ,

I want to repack the game in its original uncracked state and do multiple selections for a crack, so what I want is someone to help me write a code, or there is a template to basically just copy the crack from a specific folder

For example I have a game Cuphead, and in the main directory folder of the game I have a folder called "Crack" and in there I have the cracks

So what's the code to basically just copy the contents of the Crack folder to the game after installing if the user checks the checkbox... thank you

Fak Eid 28-06-2024 12:25

You should rather put your "Crack" folder in source than in application installation location. I prefer that.

Code:

[Files]
Source: "{src}\Crack\*"; DestDir: "{app}"; Check: ApplyCrack

Code:

function ApplyCrack: Boolean;
begin
  Result := Checkbox[1].IsChecked;
end;


Fak Eid 29-06-2024 02:12

Quote:

Originally Posted by audiofeel (Post 504931)
I wouldn't do that for several reasons. The antivirus scan block this executable file. It can be replaced by an administrator or a moderator of an internet resource (or someone else when they post this repack on their site). We need to check whether the real file was actually copied from that folder, or if it was replaced (We need to check the file size or its hash value.). Only then "Result:=True". In general, you're trying to complicate things and invent a new wheel, even though it's already been invented for a long time. It would be much clearer if you had the executable file in a single archive.:o

Alternate to that, if you really want to do so, you can compress 'Crack' folder like crack.bin and extract it just like additional component based on checkbox click. you can verify that crack.bin in your installer itself, then.

ErinMonroe 02-07-2024 05:15

Is there a way to add a serial key page using this style? I am new to this!

Fak Eid 02-07-2024 05:39

Quote:

Originally Posted by ErinMonroe (Post 504946)
Is there a way to add a serial key page using this style? I am new to this!

You can refer Example_QuickMsg_3.iss from the main post

ErinMonroe 04-07-2024 06:00

Lockscreen
 
How do I activate the lock screen on this as in the example the lock screen does not appear to work.

Fak Eid 11-07-2024 13:05

I have a CustomForm: FCustomFluentWindow on which I have a 'browse' button for Directory change. When I click on it, I have DirBrowseDlg: FFLuentDirBrowse, which keeps flickering. The reason it is flickering is because the CustomForm is still open. If I close that CustomForm, the flickering stop.

@Blackfire, please acknowledge this issue to either fix it, or as a workaround I'm closing the CustomForm when 'Browse' button is clicked, but want Custom.Show after the user clicks on 'Ok'/'Cancel' on DirBrowseDlg. Can anybody help me with code snippet?

I might need
procedure ButtonOnMouseClick(ButtonIndex: Integer; Event: TNotifyEvent);

Fak Eid 12-07-2024 05:39

Even with this solution, we would still require an event listener like:
procedure ButtonOnMouseClick(ButtonIndex: Integer; Event: TNotifyEvent);

or else how will it enter @CommonOnClick code block, without creating custom buttons for ok and cancel.

BLACKFIRE69 14-07-2024 12:36

FMXInno Custom Shapes
 
3 Attachment(s)
FMXInno Custom Shapes:


Quote:

Is it boring to use regular shapes every time? if so, you can start creating your own shapes to use in FMXInno.

.

BLACKFIRE69 16-07-2024 04:03

1 Attachment(s)
hmm...
cool :p

.


All times are GMT -7. The time now is 02:05.

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