├── .gitignore ├── Config.json ├── Diagramme sans nom.drawio ├── Download res ├── pDoawloadres.dpr ├── pDoawloadres.dproj └── pDoawloadres.res ├── Images ├── img1.png ├── img10.png ├── img11.png ├── img2.png ├── img3.png ├── img4.png ├── img5.png ├── img6.png ├── img7.png ├── img8.png └── img9.png ├── Installer ├── Setup.iss └── setup.ifp ├── Packages ├── CustomButton1.pas ├── TYGComponents.dpk ├── TYGComponents.dproj └── TYGComponents.res ├── README.md ├── WGHelp.dpr ├── WGHelp.dproj ├── WGHelp.res ├── Win32 └── Release │ ├── Winget Helper-cache │ ├── cacheIndex.txt │ └── part1 │ │ ├── Winget Helper1.cab │ │ └── output-info.ini │ └── Winget Helper.aip ├── Win64 └── Debug │ ├── config.xml │ └── uMain.dcu ├── Windel.groupproj ├── WindelGrp.groupproj ├── WingetHelper.res ├── __history ├── uFrameBase.dfm.~1~ ├── uFrameBase.dfm.~2~ ├── uFrameBase.dfm.~3~ ├── uFrameBase.pas.~1~ ├── uFrameBase.pas.~2~ ├── uFrameBase.pas.~3~ ├── uFrameUpgrade.dfm.~19~ ├── uFrameUpgrade.dfm.~20~ ├── uFrameUpgrade.dfm.~21~ ├── uFrameUpgrade.dfm.~22~ ├── uFrameUpgrade.dfm.~23~ ├── uFrameUpgrade.dfm.~24~ ├── uFrameUpgrade.dfm.~25~ ├── uFrameUpgrade.dfm.~26~ ├── uFrameUpgrade.dfm.~27~ ├── uFrameUpgrade.dfm.~28~ ├── uFrameUpgrade.pas.~14~ ├── uFrameUpgrade.pas.~15~ ├── uFrameUpgrade.pas.~16~ ├── uFrameUpgrade.pas.~17~ ├── uFrameUpgrade.pas.~18~ ├── uFrameUpgrade.pas.~19~ ├── uFrameUpgrade.pas.~20~ ├── uFrameUpgrade.pas.~21~ ├── uFrameUpgrade.pas.~22~ └── uFrameUpgrade.pas.~23~ ├── icons ├── f1 (1).png ├── f1 (2).png ├── f1.png ├── favicon.ico ├── keyboard-font.zip └── keyboard-font │ ├── KeyExtendedCSd-rv2K.ttf │ ├── KeyNormalCSd-MAYv.ttf │ └── misc │ ├── KEYBOARD-0acf.doc │ ├── KEYBOARD-36a3.rtf │ ├── LICENSE-bf26.txt │ ├── README-09a2.txt │ ├── REGISTER-5d51.txt │ └── VENDOR-d7ea.txt ├── openssl-1.0.2p-x64_86-win64.zip ├── openssl-1.0.2p-x64_86-win64 ├── HashInfo.txt ├── OpenSSL License.txt └── ReadMe.txt ├── pTestString.dpr ├── pTestString.dproj ├── pTestString.res ├── pWinDel.identcache ├── pWinDel.res ├── pWinDel_Icon.ico ├── pWinDel_Icon1.ico ├── pWinDel_Icon2.ico ├── pWinDel_Icon3.ico ├── pWinDel_Icon4.ico ├── testString.dfm ├── testString.pas ├── uConst.pas ├── uFrameBase.dfm ├── uFrameBase.pas ├── uFrameConfig.dfm ├── uFrameConfig.pas ├── uFrameList.dfm ├── uFrameList.pas ├── uFrameSearch.dfm ├── uFrameSearch.pas ├── uFrameUpgrade.dfm ├── uFrameUpgrade.pas ├── uFrameUpgrade2.dfm ├── uFrameUpgrade2.pas ├── uMain.dfm ├── uMain.pas ├── uOptions.dfm ├── uOptions.pas ├── uRunWinget.dfm ├── uRunWinget.pas ├── udlgClose.dfm ├── udlgClose.pas ├── utestcomponents.dfm └── utestcomponents.pas /.gitignore: -------------------------------------------------------------------------------- 1 | # Uncomment these types if you want even more clean repository. But be careful. 2 | # It can make harm to an existing project source. Read explanations below. 3 | # 4 | # Resource files are binaries containing manifest, project icon and version info. 5 | # They can not be viewed as text or compared by diff-tools. Consider replacing them with .rc files. 6 | #*.res 7 | # 8 | # Type library file (binary). In old Delphi versions it should be stored. 9 | # Since Delphi 2009 it is produced from .ridl file and can safely be ignored. 10 | #*.tlb 11 | # 12 | # Diagram Portfolio file. Used by the diagram editor up to Delphi 7. 13 | # Uncomment this if you are not using diagrams or use newer Delphi version. 14 | #*.ddp 15 | # 16 | # Visual LiveBindings file. Added in Delphi XE2. 17 | # Uncomment this if you are not using LiveBindings Designer. 18 | #*.vlb 19 | # 20 | # Deployment Manager configuration file for your project. Added in Delphi XE2. 21 | # Uncomment this if it is not mobile development and you do not use remote debug feature. 22 | #*.deployproj 23 | # 24 | # C++ object files produced when C/C++ Output file generation is configured. 25 | # Uncomment this if you are not using external objects (zlib library for example). 26 | #*.obj 27 | # 28 | 29 | # Delphi compiler-generated binaries (safe to delete) 30 | *.exe 31 | *.dll 32 | *.bpl 33 | *.bpi 34 | *.dcp 35 | *.so 36 | *.apk 37 | *.drc 38 | *.map 39 | *.dres 40 | *.rsm 41 | *.tds 42 | *.dcu 43 | *.lib 44 | *.a 45 | *.o 46 | *.ocx 47 | 48 | # Delphi autogenerated files (duplicated info) 49 | *.cfg 50 | *.hpp 51 | *Resource.rc 52 | 53 | # Delphi local files (user-specific info) 54 | *.local 55 | *.identcache 56 | *.projdata 57 | *.tvsconfig 58 | *.dsk 59 | 60 | # Delphi history and backups 61 | __history/ 62 | __recovery/ 63 | *.~* 64 | 65 | # Castalia statistics file (since XE7 Castalia is distributed with Delphi) 66 | *.stat 67 | 68 | # Boss dependency manager vendor folder https://github.com/HashLoad/boss 69 | modules/ 70 | Win64/Debug/pWinDel.exe 71 | Win64/Debug/pWinDel.rsm 72 | *.dcu 73 | *.dcu 74 | Win64/Debug/pWinDel.exe 75 | Win64/Debug/pWinDel.rsm 76 | Win64/Debug/uMain.dcu 77 | pWinDel.dproj.local 78 | pWinDel.dproj.local 79 | pWinDel.identcache 80 | -------------------------------------------------------------------------------- /Config.json: -------------------------------------------------------------------------------- 1 | { 2 | "OpenMinimized": false 3 | } -------------------------------------------------------------------------------- /Diagramme sans nom.drawio: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Download res/pDoawloadres.dpr: -------------------------------------------------------------------------------- 1 | program pDoawloadres; 2 | 3 | {$APPTYPE CONSOLE} 4 | 5 | {$R *.res} 6 | 7 | uses 8 | System.SysUtils, Windows; 9 | 10 | procedure Test_VerLanguageName; 11 | var 12 | wLang : LangID; 13 | szLang: Array [0..254] of Char; 14 | begin 15 | wLang := GetSystemDefaultLCID; 16 | VerLanguageName(wLang, szLang, SizeOf(szLang)); 17 | Writeln(szLang); 18 | end; 19 | 20 | procedure Test_GetLocaleInfo; 21 | var 22 | Buffer : PChar; 23 | Size : integer; 24 | begin 25 | Size := GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SENGLANGUAGE, nil, 0); 26 | GetMem(Buffer, Size); 27 | try 28 | GetLocaleInfo (LOCALE_USER_DEFAULT, LOCALE_SENGLANGUAGE, Buffer, Size); 29 | Writeln(Buffer); 30 | finally 31 | FreeMem(Buffer); 32 | end; 33 | end; 34 | 35 | begin 36 | try 37 | Test_VerLanguageName; 38 | Test_GetLocaleInfo; 39 | Sleep(5000); 40 | except 41 | on E: Exception do 42 | Writeln(E.ClassName, ': ', E.Message); 43 | end; 44 | end. 45 | -------------------------------------------------------------------------------- /Download res/pDoawloadres.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Download res/pDoawloadres.res -------------------------------------------------------------------------------- /Images/img1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img1.png -------------------------------------------------------------------------------- /Images/img10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img10.png -------------------------------------------------------------------------------- /Images/img11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img11.png -------------------------------------------------------------------------------- /Images/img2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img2.png -------------------------------------------------------------------------------- /Images/img3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img3.png -------------------------------------------------------------------------------- /Images/img4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img4.png -------------------------------------------------------------------------------- /Images/img5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img5.png -------------------------------------------------------------------------------- /Images/img6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img6.png -------------------------------------------------------------------------------- /Images/img7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img7.png -------------------------------------------------------------------------------- /Images/img8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img8.png -------------------------------------------------------------------------------- /Images/img9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Images/img9.png -------------------------------------------------------------------------------- /Installer/Setup.iss: -------------------------------------------------------------------------------- 1 | ; Script generated by the Inno Script Studio Wizard. 2 | ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! 3 | 4 | #define MyAppName "Winget Helper" 5 | #define MyAppVersion "0.2.0.2" 6 | #define MyAppPublisher "YGO" 7 | #define MyAppURL "https://github.com/Yves848/WinDel/" 8 | #define MyAppExeName "WGHelp.exe" 9 | 10 | [Setup] 11 | ; NOTE: The value of AppId uniquely identifies this application. 12 | ; Do not use the same AppId value in installers for other applications. 13 | ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) 14 | AppId={{B1144CEA-D704-4607-B2DD-553EE9EC26E2} 15 | AppName={#MyAppName} 16 | AppVersion={#MyAppVersion} 17 | ;AppVerName={#MyAppName} {#MyAppVersion} 18 | AppPublisher={#MyAppPublisher} 19 | AppPublisherURL={#MyAppURL} 20 | AppSupportURL={#MyAppURL} 21 | AppUpdatesURL={#MyAppURL} 22 | DefaultDirName={pf}\{#MyAppName} 23 | DefaultGroupName={#MyAppName} 24 | OutputBaseFilename=WGHelpSetup 25 | Compression=lzma 26 | SolidCompression=yes 27 | 28 | [Languages] 29 | Name: "english"; MessagesFile: "compiler:Default.isl" 30 | 31 | [Tasks] 32 | Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked 33 | 34 | [Files] 35 | ; NOTE: Don't use "Flags: ignoreversion" on any shared system files 36 | Source: "..\Win32\Release\WGHelp.exe"; DestDir: "{app}"; DestName: "WGHelp.exe" 37 | 38 | [Icons] 39 | Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" 40 | Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon 41 | 42 | [Run] 43 | Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent 44 | -------------------------------------------------------------------------------- /Installer/setup.ifp: -------------------------------------------------------------------------------- 1 |  2 | [Header] 3 | ProjectFileVersion = 1.1 4 | [General] 5 | Program name = Winget Helper 6 | Program version = 0.2 7 | Windows 2000 = 0 8 | Windows XP = 0 9 | Windows Server 2003 = 0 10 | Windows Vista = 0 11 | Windows Server 2008 = 0 12 | Windows 7 = 0 13 | Windows 8 = 0 14 | Windows 10 = 0 15 | Windows Server 2016 = 0 16 | DoNotCheckOS = 1 17 | Company name = YGO 18 | Website = https:// 19 | SFA = 0 20 | DFA = 0 21 | Comp = 1 22 | [Graphics] 23 | Wizard image =
24 | Header image =
25 | Show Label = 1 26 | VisualStylesEnabled = 1 27 | [Files] 28 | Installation path = \\\ 29 | Autcip = 1 30 | [Uninstall] 31 | Vwau = 0 32 | Website = https:// 33 | Include uninstaller = 1 34 | Uninstaller filename = Uninstall 35 | UseCustomDisplayIcon = 0 36 | CustomDisplayIcon = \ 37 | [Licence] 38 | Licence dialog = 0 39 | [Finish] 40 | Sart program = 0 41 | Reboot computer = 0 42 | Program = \ 43 | ProgramArguments = 44 | [Shortcuts] 45 | Allowtc = 0 46 | Shortcut path = \\ 47 | [Serialoptions] 48 | Allows = 0 49 | Number = 1000 50 | Mask = #####-#####-#####-##### 51 | [SplashScreen] 52 | Image = 53 | Sound = 54 | Time = 2 55 | PlaySound = 0 56 | Allow = 0 57 | [Build] 58 | File = C:\Users\yvesg\git\WinDel\Installer\Setup.exe 59 | SetupIconPath = ..\icons\ancient.ico 60 | UninstallIconPath = ..\icons\ancient.ico 61 | CompressionMethod = 0 62 | CompressionLevel = 2 63 | [Updater] 64 | Allow = 0 65 | 1 = 66 | 2 = 67 | 3 = http:// 68 | 4 = http:// 69 | 5 = http:// 70 | 6 = Update 71 | Language = 0 72 | RunProg = 73 | RunProgs = 0 74 | Execdlls = 0 75 | [Languages] 76 | 1 77 | [Files/Dirs] 78 | C:\Users\yvesg\git\WinDel\Win32\Release\WingetHelper.exe 79 | 6.3 MB 80 | exe 81 | [Licence_Begin] 82 | 118 83 | {\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fcharset0 Arial;}} 84 | \viewkind4\uc1\pard\cf0\fs20\par 85 | } 86 | [Licence_End] 87 | [Registry] 88 | [Variables] 89 | [SCs] 90 | Startmenu 91 | WingetHelper 92 | \WingetHelper.exe 93 | 94 | 95 | 0 96 | [IFP_End] 97 | [Serials] 98 | [Serials_End] 99 | [Commands] 100 | -------------------------------------------------------------------------------- /Packages/CustomButton1.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Packages/CustomButton1.pas -------------------------------------------------------------------------------- /Packages/TYGComponents.dpk: -------------------------------------------------------------------------------- 1 | package TYGComponents; 2 | 3 | {$R *.res} 4 | {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} 5 | {$ALIGN 8} 6 | {$ASSERTIONS ON} 7 | {$BOOLEVAL OFF} 8 | {$DEBUGINFO OFF} 9 | {$EXTENDEDSYNTAX ON} 10 | {$IMPORTEDDATA ON} 11 | {$IOCHECKS ON} 12 | {$LOCALSYMBOLS ON} 13 | {$LONGSTRINGS ON} 14 | {$OPENSTRINGS ON} 15 | {$OPTIMIZATION OFF} 16 | {$OVERFLOWCHECKS ON} 17 | {$RANGECHECKS ON} 18 | {$REFERENCEINFO ON} 19 | {$SAFEDIVIDE OFF} 20 | {$STACKFRAMES ON} 21 | {$TYPEDADDRESS OFF} 22 | {$VARSTRINGCHECKS ON} 23 | {$WRITEABLECONST OFF} 24 | {$MINENUMSIZE 1} 25 | {$IMAGEBASE $400000} 26 | {$DEFINE DEBUG} 27 | {$ENDIF IMPLICITBUILDING} 28 | {$IMPLICITBUILD ON} 29 | 30 | requires 31 | rtl, 32 | vcl; 33 | 34 | contains 35 | CustomButton1 in 'CustomButton1.pas'; 36 | 37 | end. 38 | -------------------------------------------------------------------------------- /Packages/TYGComponents.dproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {B8D16885-9F6E-4815-A576-C6FD4ACB489A} 4 | TYGComponents.dpk 5 | 19.5 6 | VCL 7 | True 8 | Debug 9 | Win32 10 | 3 11 | Package 12 | 13 | 14 | true 15 | 16 | 17 | true 18 | Base 19 | true 20 | 21 | 22 | true 23 | Base 24 | true 25 | 26 | 27 | true 28 | Base 29 | true 30 | 31 | 32 | true 33 | Base 34 | true 35 | 36 | 37 | true 38 | Base 39 | true 40 | 41 | 42 | true 43 | Base 44 | true 45 | 46 | 47 | true 48 | Base 49 | true 50 | 51 | 52 | true 53 | Cfg_1 54 | true 55 | true 56 | 57 | 58 | true 59 | Base 60 | true 61 | 62 | 63 | .\$(Platform)\$(Config) 64 | .\$(Platform)\$(Config) 65 | false 66 | false 67 | false 68 | false 69 | false 70 | true 71 | true 72 | System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) 73 | All 74 | TYGComponents 75 | 76 | 77 | None 78 | rtl;$(DCC_UsePackage) 79 | 80 | 81 | None 82 | rtl;$(DCC_UsePackage) 83 | 84 | 85 | rtl;$(DCC_UsePackage) 86 | 87 | 88 | rtl;$(DCC_UsePackage) 89 | 90 | 91 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 92 | Debug 93 | true 94 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 95 | 1033 96 | vcl;rtl;$(DCC_UsePackage) 97 | 98 | 99 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) 100 | Debug 101 | true 102 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 103 | 1033 104 | vcl;rtl;$(DCC_UsePackage) 105 | 106 | 107 | DEBUG;$(DCC_Define) 108 | true 109 | false 110 | true 111 | true 112 | true 113 | true 114 | true 115 | 116 | 117 | false 118 | 119 | 120 | false 121 | RELEASE;$(DCC_Define) 122 | 0 123 | 0 124 | 125 | 126 | 127 | MainSource 128 | 129 | 130 | 131 | 132 | 133 | Base 134 | 135 | 136 | Cfg_1 137 | Base 138 | 139 | 140 | Cfg_2 141 | Base 142 | 143 | 144 | 145 | Delphi.Personality.12 146 | Package 147 | 148 | 149 | 150 | TYGComponents.dpk 151 | 152 | 153 | 154 | 155 | 156 | true 157 | 158 | 159 | 160 | 161 | true 162 | 163 | 164 | 165 | 166 | true 167 | 168 | 169 | 170 | 171 | TYGComponents.bpl 172 | true 173 | 174 | 175 | 176 | 177 | 1 178 | 179 | 180 | 0 181 | 182 | 183 | 184 | 185 | classes 186 | 64 187 | 188 | 189 | classes 190 | 64 191 | 192 | 193 | 194 | 195 | res\xml 196 | 1 197 | 198 | 199 | res\xml 200 | 1 201 | 202 | 203 | 204 | 205 | library\lib\armeabi-v7a 206 | 1 207 | 208 | 209 | 210 | 211 | library\lib\armeabi 212 | 1 213 | 214 | 215 | library\lib\armeabi 216 | 1 217 | 218 | 219 | 220 | 221 | library\lib\armeabi-v7a 222 | 1 223 | 224 | 225 | 226 | 227 | library\lib\mips 228 | 1 229 | 230 | 231 | library\lib\mips 232 | 1 233 | 234 | 235 | 236 | 237 | library\lib\armeabi-v7a 238 | 1 239 | 240 | 241 | library\lib\arm64-v8a 242 | 1 243 | 244 | 245 | 246 | 247 | library\lib\armeabi-v7a 248 | 1 249 | 250 | 251 | 252 | 253 | res\drawable 254 | 1 255 | 256 | 257 | res\drawable 258 | 1 259 | 260 | 261 | 262 | 263 | res\values 264 | 1 265 | 266 | 267 | res\values 268 | 1 269 | 270 | 271 | 272 | 273 | res\values-v21 274 | 1 275 | 276 | 277 | res\values-v21 278 | 1 279 | 280 | 281 | 282 | 283 | res\values 284 | 1 285 | 286 | 287 | res\values 288 | 1 289 | 290 | 291 | 292 | 293 | res\drawable 294 | 1 295 | 296 | 297 | res\drawable 298 | 1 299 | 300 | 301 | 302 | 303 | res\drawable-xxhdpi 304 | 1 305 | 306 | 307 | res\drawable-xxhdpi 308 | 1 309 | 310 | 311 | 312 | 313 | res\drawable-xxxhdpi 314 | 1 315 | 316 | 317 | res\drawable-xxxhdpi 318 | 1 319 | 320 | 321 | 322 | 323 | res\drawable-ldpi 324 | 1 325 | 326 | 327 | res\drawable-ldpi 328 | 1 329 | 330 | 331 | 332 | 333 | res\drawable-mdpi 334 | 1 335 | 336 | 337 | res\drawable-mdpi 338 | 1 339 | 340 | 341 | 342 | 343 | res\drawable-hdpi 344 | 1 345 | 346 | 347 | res\drawable-hdpi 348 | 1 349 | 350 | 351 | 352 | 353 | res\drawable-xhdpi 354 | 1 355 | 356 | 357 | res\drawable-xhdpi 358 | 1 359 | 360 | 361 | 362 | 363 | res\drawable-mdpi 364 | 1 365 | 366 | 367 | res\drawable-mdpi 368 | 1 369 | 370 | 371 | 372 | 373 | res\drawable-hdpi 374 | 1 375 | 376 | 377 | res\drawable-hdpi 378 | 1 379 | 380 | 381 | 382 | 383 | res\drawable-xhdpi 384 | 1 385 | 386 | 387 | res\drawable-xhdpi 388 | 1 389 | 390 | 391 | 392 | 393 | res\drawable-xxhdpi 394 | 1 395 | 396 | 397 | res\drawable-xxhdpi 398 | 1 399 | 400 | 401 | 402 | 403 | res\drawable-xxxhdpi 404 | 1 405 | 406 | 407 | res\drawable-xxxhdpi 408 | 1 409 | 410 | 411 | 412 | 413 | res\drawable-small 414 | 1 415 | 416 | 417 | res\drawable-small 418 | 1 419 | 420 | 421 | 422 | 423 | res\drawable-normal 424 | 1 425 | 426 | 427 | res\drawable-normal 428 | 1 429 | 430 | 431 | 432 | 433 | res\drawable-large 434 | 1 435 | 436 | 437 | res\drawable-large 438 | 1 439 | 440 | 441 | 442 | 443 | res\drawable-xlarge 444 | 1 445 | 446 | 447 | res\drawable-xlarge 448 | 1 449 | 450 | 451 | 452 | 453 | res\values 454 | 1 455 | 456 | 457 | res\values 458 | 1 459 | 460 | 461 | 462 | 463 | 1 464 | 465 | 466 | 1 467 | 468 | 469 | 0 470 | 471 | 472 | 473 | 474 | 1 475 | .framework 476 | 477 | 478 | 1 479 | .framework 480 | 481 | 482 | 1 483 | .framework 484 | 485 | 486 | 0 487 | 488 | 489 | 490 | 491 | 1 492 | .dylib 493 | 494 | 495 | 1 496 | .dylib 497 | 498 | 499 | 1 500 | .dylib 501 | 502 | 503 | 0 504 | .dll;.bpl 505 | 506 | 507 | 508 | 509 | 1 510 | .dylib 511 | 512 | 513 | 1 514 | .dylib 515 | 516 | 517 | 1 518 | .dylib 519 | 520 | 521 | 1 522 | .dylib 523 | 524 | 525 | 1 526 | .dylib 527 | 528 | 529 | 1 530 | .dylib 531 | 532 | 533 | 0 534 | .bpl 535 | 536 | 537 | 538 | 539 | 0 540 | 541 | 542 | 0 543 | 544 | 545 | 0 546 | 547 | 548 | 0 549 | 550 | 551 | 0 552 | 553 | 554 | 0 555 | 556 | 557 | 0 558 | 559 | 560 | 0 561 | 562 | 563 | 0 564 | 565 | 566 | 567 | 568 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 569 | 1 570 | 571 | 572 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 573 | 1 574 | 575 | 576 | 577 | 578 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 579 | 1 580 | 581 | 582 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 583 | 1 584 | 585 | 586 | 587 | 588 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 589 | 1 590 | 591 | 592 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 593 | 1 594 | 595 | 596 | 597 | 598 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 599 | 1 600 | 601 | 602 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 603 | 1 604 | 605 | 606 | 607 | 608 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 609 | 1 610 | 611 | 612 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 613 | 1 614 | 615 | 616 | 617 | 618 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 619 | 1 620 | 621 | 622 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 623 | 1 624 | 625 | 626 | 627 | 628 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 629 | 1 630 | 631 | 632 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 633 | 1 634 | 635 | 636 | 637 | 638 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 639 | 1 640 | 641 | 642 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 643 | 1 644 | 645 | 646 | 647 | 648 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 649 | 1 650 | 651 | 652 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 653 | 1 654 | 655 | 656 | 657 | 658 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 659 | 1 660 | 661 | 662 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 663 | 1 664 | 665 | 666 | 667 | 668 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 669 | 1 670 | 671 | 672 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 673 | 1 674 | 675 | 676 | 677 | 678 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 679 | 1 680 | 681 | 682 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 683 | 1 684 | 685 | 686 | 687 | 688 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 689 | 1 690 | 691 | 692 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 693 | 1 694 | 695 | 696 | 697 | 698 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 699 | 1 700 | 701 | 702 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 703 | 1 704 | 705 | 706 | 707 | 708 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 709 | 1 710 | 711 | 712 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 713 | 1 714 | 715 | 716 | 717 | 718 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 719 | 1 720 | 721 | 722 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 723 | 1 724 | 725 | 726 | 727 | 728 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 729 | 1 730 | 731 | 732 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 733 | 1 734 | 735 | 736 | 737 | 738 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 739 | 1 740 | 741 | 742 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 743 | 1 744 | 745 | 746 | 747 | 748 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 749 | 1 750 | 751 | 752 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 753 | 1 754 | 755 | 756 | 757 | 758 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 759 | 1 760 | 761 | 762 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 763 | 1 764 | 765 | 766 | 767 | 768 | 1 769 | 770 | 771 | 1 772 | 773 | 774 | 775 | 776 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 777 | 1 778 | 779 | 780 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 781 | 1 782 | 783 | 784 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 785 | 1 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 1 794 | 795 | 796 | 1 797 | 798 | 799 | 1 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | Contents\Resources 808 | 1 809 | 810 | 811 | Contents\Resources 812 | 1 813 | 814 | 815 | Contents\Resources 816 | 1 817 | 818 | 819 | 820 | 821 | library\lib\armeabi-v7a 822 | 1 823 | 824 | 825 | library\lib\arm64-v8a 826 | 1 827 | 828 | 829 | 1 830 | 831 | 832 | 1 833 | 834 | 835 | 1 836 | 837 | 838 | 1 839 | 840 | 841 | 1 842 | 843 | 844 | 1 845 | 846 | 847 | 1 848 | 849 | 850 | 0 851 | 852 | 853 | 854 | 855 | library\lib\armeabi-v7a 856 | 1 857 | 858 | 859 | 860 | 861 | 1 862 | 863 | 864 | 1 865 | 866 | 867 | 868 | 869 | Assets 870 | 1 871 | 872 | 873 | Assets 874 | 1 875 | 876 | 877 | 878 | 879 | Assets 880 | 1 881 | 882 | 883 | Assets 884 | 1 885 | 886 | 887 | 888 | 889 | 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 898 | 899 | 900 | False 901 | False 902 | False 903 | False 904 | True 905 | True 906 | 907 | 908 | 12 909 | 910 | 911 | 912 | 913 | 914 | -------------------------------------------------------------------------------- /Packages/TYGComponents.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Packages/TYGComponents.res -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Winget Helper 2 | 3 | A graphical interface for Winget 4 | 5 | ![Image1](https://raw.githubusercontent.com/Yves848/WinDel/master/Images/img1.png) 6 | 7 | A Brief demo video is available there : https://youtu.be/niizmd0TRWg 8 | 9 | ## Installation 10 | The setup of the latest release is available here : https://github.com/Yves848/WinDel/releases/download/0.2.0.2/Setup.exe 11 | 12 | ## History 13 | 14 | ### 0.2.0.2 15 | - Installer (Setup.exe) 16 | - Config pane 17 | - Windows notifications on package upgrade available 18 | - Can start with winndows session 19 | - Can run hidden (Tray icon menu available) 20 | 21 | *** 22 | # Screenshots 23 | 24 | ## Configuration 25 | ![](https://raw.githubusercontent.com/Yves848/WinDel/master/Images/img2.png) 26 | ## Notifications 27 | ![](https://raw.githubusercontent.com/Yves848/WinDel/master/Images/img3.png) 28 | ![](https://raw.githubusercontent.com/Yves848/WinDel/master/Images/img4.png) 29 | 30 | ## Package Searching 31 | 32 | ![](https://raw.githubusercontent.com/Yves848/WinDel/master/Images/img5.png) 33 | ![](https://raw.githubusercontent.com/Yves848/WinDel/master/Images/img6.png) 34 | ![](https://raw.githubusercontent.com/Yves848/WinDel/master/Images/img7.png) 35 | 36 | ## Packages Installed 37 | ![](https://raw.githubusercontent.com/Yves848/WinDel/master/Images/img8.png) 38 | 39 | ## Packages Upgrade 40 | ![](https://raw.githubusercontent.com/Yves848/WinDel/master/Images/img9.png) 41 | 42 | ## Closing the application 43 | ![](https://raw.githubusercontent.com/Yves848/WinDel/master/Images/img10.png) 44 | 45 | If the user click "Yes", the application minimize in tray an continue running in background. 46 | ![](https://raw.githubusercontent.com/Yves848/WinDel/master/Images/img11.png) 47 | 48 | If autocheck of the upgrades is configured, the notifications will be displayed. 49 | If "No" is choosed, the application quits. 50 | 51 | 52 | -------------------------------------------------------------------------------- /WGHelp.dpr: -------------------------------------------------------------------------------- 1 | program WGHelp; 2 | 3 | uses 4 | Winapi.Windows, 5 | Winapi.Messages, 6 | Vcl.Forms, 7 | uMain in 'uMain.pas' {fMain}, 8 | uConst in 'uConst.pas', 9 | uFrameBase in 'uFrameBase.pas' {frmBase: TFrame}, 10 | uFrameUpgrade2 in 'uFrameUpgrade2.pas' {frmHeritee: TFrame}, 11 | uFrameList in 'uFrameList.pas' {frmList: TFrame}, 12 | uFrameSearch in 'uFrameSearch.pas' {frmSearch: TFrame}, 13 | uRunWinget in 'uRunWinget.pas' {fRunWinget}, 14 | uFrameConfig in 'uFrameConfig.pas' {frmConfig: TFrame}, 15 | udlgClose in 'udlgClose.pas' {frmCloseDlg}; 16 | 17 | {$R *.res} 18 | 19 | begin 20 | 21 | Application.Initialize; 22 | pPArams.loadParams; 23 | Application.MainFormOnTaskbar := True; 24 | Application.ShowMainForm := not pParams.StartMinimized; 25 | Application.CreateForm(TfMain, fMain); 26 | if pParams.StartMinimized then 27 | begin 28 | fMain.Onshow := Nil; 29 | PostMessage(fMain.handle, WM_GETWINGETVERSION, 0, 0); 30 | PostMessage(fMain.handle, WM_GETUPGRADELIST, 0, 0); 31 | end; 32 | 33 | Application.Run; 34 | 35 | end. 36 | -------------------------------------------------------------------------------- /WGHelp.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/WGHelp.res -------------------------------------------------------------------------------- /Win32/Release/Winget Helper-cache/cacheIndex.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Win32/Release/Winget Helper-cache/cacheIndex.txt -------------------------------------------------------------------------------- /Win32/Release/Winget Helper-cache/part1/Winget Helper1.cab: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Win32/Release/Winget Helper-cache/part1/Winget Helper1.cab -------------------------------------------------------------------------------- /Win32/Release/Winget Helper-cache/part1/output-info.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Win32/Release/Winget Helper-cache/part1/output-info.ini -------------------------------------------------------------------------------- /Win32/Release/Winget Helper.aip: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | -------------------------------------------------------------------------------- /Win64/Debug/uMain.dcu: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/Win64/Debug/uMain.dcu -------------------------------------------------------------------------------- /Windel.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {76E4E0F7-E64A-484D-92A7-8BA909FE3864} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Default.Personality.12 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /WindelGrp.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {AD502CA9-6CA4-4925-8082-3D3222E40B49} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | Default.Personality.12 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /WingetHelper.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/WingetHelper.res -------------------------------------------------------------------------------- /__history/uFrameBase.dfm.~1~: -------------------------------------------------------------------------------- 1 | object Frame1: TFrame1 2 | Left = 0 3 | Top = 0 4 | Width = 640 5 | Height = 480 6 | TabOrder = 0 7 | end 8 | -------------------------------------------------------------------------------- /__history/uFrameBase.dfm.~2~: -------------------------------------------------------------------------------- 1 | object frmBase: TfrmBase 2 | Left = 0 3 | Top = 0 4 | Width = 640 5 | Height = 480 6 | TabOrder = 0 7 | end 8 | -------------------------------------------------------------------------------- /__history/uFrameBase.dfm.~3~: -------------------------------------------------------------------------------- 1 | object frmBase: TfrmBase 2 | Left = 0 3 | Top = 0 4 | Width = 640 5 | Height = 480 6 | TabOrder = 0 7 | object LinkLabel1: TLinkLabel 8 | Left = 72 9 | Top = 72 10 | Width = 60 11 | Height = 19 12 | Caption = 'LinkLabel1' 13 | TabOrder = 0 14 | UseVisualStyle = True 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /__history/uFrameBase.pas.~1~: -------------------------------------------------------------------------------- 1 | unit uFrameBase; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, 7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs; 8 | 9 | type 10 | TFrame1 = class(TFrame) 11 | private 12 | { Private declarations } 13 | public 14 | { Public declarations } 15 | end; 16 | 17 | implementation 18 | 19 | {$R *.dfm} 20 | 21 | end. 22 | -------------------------------------------------------------------------------- /__history/uFrameBase.pas.~2~: -------------------------------------------------------------------------------- 1 | unit uFrameBase; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, 7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs; 8 | 9 | type 10 | TfrmBase = class(TFrame) 11 | private 12 | { Private declarations } 13 | public 14 | { Public declarations } 15 | end; 16 | 17 | implementation 18 | 19 | {$R *.dfm} 20 | 21 | end. 22 | -------------------------------------------------------------------------------- /__history/uFrameBase.pas.~3~: -------------------------------------------------------------------------------- 1 | unit uFrameBase; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, 7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls; 8 | 9 | type 10 | TfrmBase = class(TFrame) 11 | LinkLabel1: TLinkLabel; 12 | private 13 | { Private declarations } 14 | public 15 | { Public declarations } 16 | end; 17 | 18 | implementation 19 | 20 | {$R *.dfm} 21 | 22 | end. 23 | -------------------------------------------------------------------------------- /__history/uFrameUpgrade.dfm.~19~: -------------------------------------------------------------------------------- 1 | object frameUpgrade: TframeUpgrade 2 | Left = 0 3 | Top = 0 4 | Width = 640 5 | Height = 480 6 | TabOrder = 0 7 | object ListView1: TListView 8 | Left = 0 9 | Top = 0 10 | Width = 496 11 | Height = 480 12 | Align = alClient 13 | BevelInner = bvNone 14 | Columns = < 15 | item 16 | AutoSize = True 17 | Caption = 'Description' 18 | MinWidth = 200 19 | end 20 | item 21 | AutoSize = True 22 | Caption = 'ID' 23 | end 24 | item 25 | Caption = 'Version' 26 | end 27 | item 28 | Caption = 'Available' 29 | end 30 | item 31 | Caption = 'Source' 32 | end> 33 | TabOrder = 0 34 | ViewStyle = vsList 35 | ExplicitLeft = -6 36 | ExplicitTop = 3 37 | end 38 | object Panel1: TPanel 39 | Left = 496 40 | Top = 0 41 | Width = 144 42 | Height = 480 43 | Align = alRight 44 | BevelOuter = bvNone 45 | Caption = 'Panel1' 46 | ShowCaption = False 47 | TabOrder = 1 48 | end 49 | end 50 | -------------------------------------------------------------------------------- /__history/uFrameUpgrade.dfm.~20~: -------------------------------------------------------------------------------- 1 | object frameUpgrade: TframeUpgrade 2 | Left = 0 3 | Top = 0 4 | Width = 640 5 | Height = 480 6 | TabOrder = 0 7 | object ListView1: TListView 8 | Left = 0 9 | Top = 0 10 | Width = 496 11 | Height = 480 12 | Align = alClient 13 | BevelInner = bvNone 14 | Columns = < 15 | item 16 | AutoSize = True 17 | Caption = 'Description' 18 | MinWidth = 200 19 | end 20 | item 21 | AutoSize = True 22 | Caption = 'ID' 23 | end 24 | item 25 | Caption = 'Version' 26 | end 27 | item 28 | Caption = 'Available' 29 | end 30 | item 31 | Caption = 'Source' 32 | end> 33 | GridLines = True 34 | TabOrder = 0 35 | ViewStyle = vsReport 36 | end 37 | object Panel1: TPanel 38 | Left = 496 39 | Top = 0 40 | Width = 144 41 | Height = 480 42 | Align = alRight 43 | BevelOuter = bvNone 44 | Caption = 'Panel1' 45 | ShowCaption = False 46 | TabOrder = 1 47 | end 48 | end 49 | -------------------------------------------------------------------------------- /__history/uFrameUpgrade.dfm.~21~: -------------------------------------------------------------------------------- 1 | object frameUpgrade: TframeUpgrade 2 | Left = 0 3 | Top = 0 4 | Width = 640 5 | Height = 480 6 | TabOrder = 0 7 | object ListView1: TListView 8 | Left = 0 9 | Top = 0 10 | Width = 496 11 | Height = 480 12 | Align = alClient 13 | BevelInner = bvNone 14 | Columns = < 15 | item 16 | AutoSize = True 17 | Caption = 'Description' 18 | MinWidth = 200 19 | end 20 | item 21 | AutoSize = True 22 | Caption = 'ID' 23 | end 24 | item 25 | Caption = 'Version' 26 | end 27 | item 28 | Caption = 'Available' 29 | end 30 | item 31 | Caption = 'Source' 32 | end> 33 | GridLines = True 34 | TabOrder = 0 35 | ViewStyle = vsReport 36 | end 37 | object Panel1: TPanel 38 | Left = 496 39 | Top = 0 40 | Width = 144 41 | Height = 480 42 | Align = alRight 43 | BevelOuter = bvNone 44 | Caption = 'Panel1' 45 | ShowCaption = False 46 | TabOrder = 1 47 | end 48 | end 49 | -------------------------------------------------------------------------------- /__history/uFrameUpgrade.dfm.~22~: -------------------------------------------------------------------------------- 1 | object frameUpgrade: TframeUpgrade 2 | Left = 0 3 | Top = 0 4 | Width = 640 5 | Height = 480 6 | TabOrder = 0 7 | object ListView1: TListView 8 | Left = 0 9 | Top = 0 10 | Width = 496 11 | Height = 480 12 | Align = alClient 13 | BevelInner = bvNone 14 | Columns = < 15 | item 16 | AutoSize = True 17 | Caption = 'Description' 18 | MinWidth = 200 19 | end 20 | item 21 | AutoSize = True 22 | Caption = 'ID' 23 | end 24 | item 25 | Caption = 'Version' 26 | end 27 | item 28 | Caption = 'Available' 29 | end 30 | item 31 | Caption = 'Source' 32 | end> 33 | GridLines = True 34 | TabOrder = 0 35 | ViewStyle = vsList 36 | end 37 | object Panel1: TPanel 38 | Left = 496 39 | Top = 0 40 | Width = 144 41 | Height = 480 42 | Align = alRight 43 | BevelOuter = bvNone 44 | Caption = 'Panel1' 45 | ShowCaption = False 46 | TabOrder = 1 47 | end 48 | end 49 | -------------------------------------------------------------------------------- /__history/uFrameUpgrade.dfm.~23~: -------------------------------------------------------------------------------- 1 | object frameUpgrade: TframeUpgrade 2 | Left = 0 3 | Top = 0 4 | Width = 640 5 | Height = 480 6 | TabOrder = 0 7 | object ListView1: TListView 8 | Left = 0 9 | Top = 0 10 | Width = 496 11 | Height = 480 12 | Align = alClient 13 | BevelInner = bvNone 14 | Columns = < 15 | item 16 | AutoSize = True 17 | Caption = 'Description' 18 | MinWidth = 200 19 | end 20 | item 21 | AutoSize = True 22 | Caption = 'ID' 23 | end 24 | item 25 | Caption = 'Version' 26 | end 27 | item 28 | Caption = 'Available' 29 | end 30 | item 31 | Caption = 'Source' 32 | end> 33 | GridLines = True 34 | RowSelect = True 35 | TabOrder = 0 36 | ViewStyle = vsReport 37 | end 38 | object Panel1: TPanel 39 | Left = 496 40 | Top = 0 41 | Width = 144 42 | Height = 480 43 | Align = alRight 44 | BevelOuter = bvNone 45 | Caption = 'Panel1' 46 | ShowCaption = False 47 | TabOrder = 1 48 | end 49 | end 50 | -------------------------------------------------------------------------------- /__history/uFrameUpgrade.dfm.~24~: -------------------------------------------------------------------------------- 1 | object frameUpgrade: TframeUpgrade 2 | Left = 0 3 | Top = 0 4 | ClientHeight = 441 5 | ClientWidth = 624 6 | Color = clBtnFace 7 | Font.Charset = DEFAULT_CHARSET 8 | Font.Color = clWindowText 9 | Font.Height = -12 10 | Font.Name = 'Segoe UI' 11 | Font.Style = [] 12 | TextHeight = 15 13 | object ListView1: TListView 14 | Left = 0 15 | Top = 0 16 | Width = 480 17 | Height = 441 18 | Align = alClient 19 | BevelInner = bvNone 20 | Columns = < 21 | item 22 | AutoSize = True 23 | Caption = 'Description' 24 | MinWidth = 200 25 | end 26 | item 27 | AutoSize = True 28 | Caption = 'ID' 29 | end 30 | item 31 | Caption = 'Version' 32 | end 33 | item 34 | Caption = 'Available' 35 | end 36 | item 37 | Caption = 'Source' 38 | end> 39 | GridLines = True 40 | RowSelect = True 41 | TabOrder = 0 42 | ViewStyle = vsReport 43 | end 44 | object Panel1: TPanel 45 | Left = 480 46 | Top = 0 47 | Width = 144 48 | Height = 441 49 | Align = alRight 50 | BevelOuter = bvNone 51 | Caption = 'Panel1' 52 | ShowCaption = False 53 | TabOrder = 1 54 | end 55 | end 56 | -------------------------------------------------------------------------------- /__history/uFrameUpgrade.dfm.~25~: -------------------------------------------------------------------------------- 1 | object frameUpgrade: TframeUpgrade 2 | Left = 0 3 | Top = 0 4 | ClientHeight = 441 5 | ClientWidth = 624 6 | Color = clBtnFace 7 | Font.Charset = DEFAULT_CHARSET 8 | Font.Color = clWindowText 9 | Font.Height = -12 10 | Font.Name = 'Segoe UI' 11 | Font.Style = [] 12 | TextHeight = 15 13 | object ListView1: TListView 14 | Left = 0 15 | Top = 0 16 | Width = 480 17 | Height = 441 18 | Align = alClient 19 | BevelInner = bvNone 20 | Columns = < 21 | item 22 | AutoSize = True 23 | Caption = 'Description' 24 | MinWidth = 200 25 | end 26 | item 27 | AutoSize = True 28 | Caption = 'ID' 29 | end 30 | item 31 | AutoSize = True 32 | Caption = 'Version' 33 | end 34 | item 35 | AutoSize = True 36 | Caption = 'Available' 37 | end 38 | item 39 | AutoSize = True 40 | Caption = 'Source' 41 | end> 42 | GridLines = True 43 | RowSelect = True 44 | TabOrder = 0 45 | ViewStyle = vsReport 46 | end 47 | object Panel1: TPanel 48 | Left = 480 49 | Top = 0 50 | Width = 144 51 | Height = 441 52 | Align = alRight 53 | BevelOuter = bvNone 54 | Caption = 'Panel1' 55 | ShowCaption = False 56 | TabOrder = 1 57 | end 58 | end 59 | -------------------------------------------------------------------------------- /__history/uFrameUpgrade.dfm.~26~: -------------------------------------------------------------------------------- 1 | object frameUpgrade: TframeUpgrade 2 | Left = 0 3 | Top = 0 4 | Width = 640 5 | Height = 480 6 | TabOrder = 0 7 | object ListView1: TListView 8 | Left = 0 9 | Top = 0 10 | Width = 480 11 | Height = 441 12 | Align = alClient 13 | BevelInner = bvNone 14 | Columns = < 15 | item 16 | AutoSize = True 17 | Caption = 'Description' 18 | MinWidth = 200 19 | end 20 | item 21 | AutoSize = True 22 | Caption = 'ID' 23 | end 24 | item 25 | AutoSize = True 26 | Caption = 'Version' 27 | end 28 | item 29 | AutoSize = True 30 | Caption = 'Available' 31 | end 32 | item 33 | AutoSize = True 34 | Caption = 'Source' 35 | end> 36 | GridLines = True 37 | RowSelect = True 38 | TabOrder = 0 39 | ViewStyle = vsReport 40 | end 41 | object Panel1: TPanel 42 | Left = 480 43 | Top = 0 44 | Width = 144 45 | Height = 441 46 | Align = alRight 47 | BevelOuter = bvNone 48 | Caption = 'Panel1' 49 | ShowCaption = False 50 | TabOrder = 1 51 | end 52 | end 53 | -------------------------------------------------------------------------------- /__history/uFrameUpgrade.dfm.~27~: -------------------------------------------------------------------------------- 1 | object frameUpgrade: TframeUpgrade 2 | Left = 0 3 | Top = 0 4 | ClientHeight = 441 5 | ClientWidth = 624 6 | Color = clBtnFace 7 | Font.Charset = DEFAULT_CHARSET 8 | Font.Color = clWindowText 9 | Font.Height = -12 10 | Font.Name = 'Segoe UI' 11 | Font.Style = [] 12 | TextHeight = 15 13 | object ListView1: TListView 14 | Left = 0 15 | Top = 0 16 | Width = 480 17 | Height = 441 18 | Align = alClient 19 | BevelInner = bvNone 20 | Columns = < 21 | item 22 | AutoSize = True 23 | Caption = 'Description' 24 | MinWidth = 200 25 | end 26 | item 27 | AutoSize = True 28 | Caption = 'ID' 29 | end 30 | item 31 | AutoSize = True 32 | Caption = 'Version' 33 | end 34 | item 35 | AutoSize = True 36 | Caption = 'Available' 37 | end 38 | item 39 | AutoSize = True 40 | Caption = 'Source' 41 | end> 42 | GridLines = True 43 | RowSelect = True 44 | TabOrder = 0 45 | ViewStyle = vsReport 46 | end 47 | object Panel1: TPanel 48 | Left = 480 49 | Top = 0 50 | Width = 144 51 | Height = 441 52 | Align = alRight 53 | BevelOuter = bvNone 54 | Caption = 'Panel1' 55 | ShowCaption = False 56 | TabOrder = 1 57 | end 58 | end 59 | -------------------------------------------------------------------------------- /__history/uFrameUpgrade.dfm.~28~: -------------------------------------------------------------------------------- 1 | object frameUpgrade: TframeUpgrade 2 | Left = 0 3 | Top = 0 4 | Width = 640 5 | Height = 480 6 | TabOrder = 0 7 | object ListView1: TListView 8 | Left = 0 9 | Top = 0 10 | Width = 640 11 | Height = 480 12 | Align = alClient 13 | BevelInner = bvNone 14 | Columns = < 15 | item 16 | AutoSize = True 17 | Caption = 'Description' 18 | MinWidth = 200 19 | end 20 | item 21 | AutoSize = True 22 | Caption = 'ID' 23 | end 24 | item 25 | AutoSize = True 26 | Caption = 'Version' 27 | end 28 | item 29 | AutoSize = True 30 | Caption = 'Available' 31 | end 32 | item 33 | AutoSize = True 34 | Caption = 'Source' 35 | end> 36 | GridLines = True 37 | RowSelect = True 38 | TabOrder = 0 39 | ViewStyle = vsReport 40 | ExplicitWidth = 480 41 | ExplicitHeight = 441 42 | end 43 | end 44 | -------------------------------------------------------------------------------- /__history/uFrameUpgrade.pas.~14~: -------------------------------------------------------------------------------- 1 | unit uFrameUpgrade; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,ShellApi, 7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, uFrameBase, Vcl.ExtCtrls, Vcl.StdCtrls; 8 | 9 | type 10 | TframeUpgrade = class(TfrmBase) 11 | Label1: TLabel; 12 | procedure Label1MouseEnter(Sender: TObject); 13 | procedure Label1MouseLeave(Sender: TObject); 14 | private 15 | { Private declarations } 16 | public 17 | { Public declarations } 18 | end; 19 | 20 | implementation 21 | 22 | {$R *.dfm} 23 | 24 | procedure TframeUpgrade.Label1MouseEnter(Sender: TObject); 25 | begin 26 | tLabel(Sender).Font.Style := [fsunderline]; 27 | screen.Cursor := crHandPoint; 28 | end; 29 | 30 | procedure TframeUpgrade.Label1MouseLeave(Sender: TObject); 31 | begin 32 | tLabel(Sender).Font.Style := []; 33 | screen.Cursor := crDefault; 34 | end; 35 | 36 | end. 37 | -------------------------------------------------------------------------------- /__history/uFrameUpgrade.pas.~15~: -------------------------------------------------------------------------------- 1 | unit uFrameUpgrade; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,ShellApi, 7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, uFrameBase, Vcl.ExtCtrls, Vcl.StdCtrls; 8 | 9 | type 10 | TframeUpgrade = class(TfrmBase) 11 | Label1: TLabel; 12 | procedure Label1MouseEnter(Sender: TObject); 13 | procedure Label1MouseLeave(Sender: TObject); 14 | procedure Label1Click(Sender: TObject); 15 | private 16 | { Private declarations } 17 | public 18 | { Public declarations } 19 | end; 20 | 21 | implementation 22 | 23 | {$R *.dfm} 24 | 25 | procedure TframeUpgrade.Label1Click(Sender: TObject); 26 | begin 27 | ShellExecute(Handle,'explore',PChar('c:\test\'),nil,nil,SW_SHOW); 28 | end; 29 | 30 | procedure TframeUpgrade.Label1MouseEnter(Sender: TObject); 31 | begin 32 | tLabel(Sender).Font.Style := [fsunderline]; 33 | screen.Cursor := crHandPoint; 34 | end; 35 | 36 | procedure TframeUpgrade.Label1MouseLeave(Sender: TObject); 37 | begin 38 | tLabel(Sender).Font.Style := []; 39 | screen.Cursor := crDefault; 40 | end; 41 | 42 | end. 43 | -------------------------------------------------------------------------------- /__history/uFrameUpgrade.pas.~16~: -------------------------------------------------------------------------------- 1 | unit uFrameUpgrade; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,ShellApi,System.IOUtils, 7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, uFrameBase, Vcl.ExtCtrls, Vcl.StdCtrls; 8 | 9 | type 10 | TframeUpgrade = class(TfrmBase) 11 | Label1: TLabel; 12 | procedure Label1MouseEnter(Sender: TObject); 13 | procedure Label1MouseLeave(Sender: TObject); 14 | procedure Label1Click(Sender: TObject); 15 | private 16 | { Private declarations } 17 | public 18 | { Public declarations } 19 | end; 20 | 21 | implementation 22 | 23 | {$R *.dfm} 24 | 25 | procedure TframeUpgrade.Label1Click(Sender: TObject); 26 | begin 27 | ShellExecute(Handle,'explore',PChar('c:\test\'),nil,nil,SW_SHOW); 28 | end; 29 | 30 | procedure TframeUpgrade.Label1MouseEnter(Sender: TObject); 31 | begin 32 | tLabel(Sender).Font.Style := [fsunderline]; 33 | screen.Cursor := crHandPoint; 34 | end; 35 | 36 | procedure TframeUpgrade.Label1MouseLeave(Sender: TObject); 37 | begin 38 | tLabel(Sender).Font.Style := []; 39 | screen.Cursor := crDefault; 40 | end; 41 | 42 | end. 43 | -------------------------------------------------------------------------------- /__history/uFrameUpgrade.pas.~17~: -------------------------------------------------------------------------------- 1 | unit uFrameUpgrade; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,ShellApi,System.IOUtils, 7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, uFrameBase, Vcl.ExtCtrls, Vcl.StdCtrls; 8 | 9 | type 10 | TframeUpgrade = class(TfrmBase) 11 | Label1: TLabel; 12 | procedure Label1MouseEnter(Sender: TObject); 13 | procedure Label1MouseLeave(Sender: TObject); 14 | procedure Label1Click(Sender: TObject); 15 | private 16 | { Private declarations } 17 | public 18 | { Public declarations } 19 | end; 20 | 21 | implementation 22 | 23 | {$R *.dfm} 24 | 25 | procedure TframeUpgrade.Label1Click(Sender: TObject); 26 | var 27 | sFolder : String; 28 | begin 29 | sFolder := tPath.GetTempPath; 30 | ShellExecute(Handle,'explore',PChar(sFolder),nil,nil,SW_SHOW); 31 | end; 32 | 33 | procedure TframeUpgrade.Label1MouseEnter(Sender: TObject); 34 | begin 35 | tLabel(Sender).Font.Style := [fsunderline]; 36 | screen.Cursor := crHandPoint; 37 | end; 38 | 39 | procedure TframeUpgrade.Label1MouseLeave(Sender: TObject); 40 | begin 41 | tLabel(Sender).Font.Style := []; 42 | screen.Cursor := crDefault; 43 | end; 44 | 45 | end. 46 | -------------------------------------------------------------------------------- /__history/uFrameUpgrade.pas.~18~: -------------------------------------------------------------------------------- 1 | unit uFrameUpgrade; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,ShellApi,System.IOUtils, 7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, uFrameBase, Vcl.ExtCtrls, Vcl.StdCtrls; 8 | 9 | type 10 | TframeUpgrade = class(TfrmBase) 11 | Label1: TLabel; 12 | private 13 | { Private declarations } 14 | public 15 | { Public declarations } 16 | end; 17 | 18 | implementation 19 | 20 | {$R *.dfm} 21 | 22 | end. 23 | -------------------------------------------------------------------------------- /__history/uFrameUpgrade.pas.~19~: -------------------------------------------------------------------------------- 1 | unit uFrameUpgrade; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,ShellApi,System.IOUtils, 7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, uFrameBase, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.ComCtrls; 8 | 9 | type 10 | TframeUpgrade = class(TfrmBase) 11 | ListView1: TListView; 12 | Panel1: TPanel; 13 | private 14 | { Private declarations } 15 | public 16 | { Public declarations } 17 | end; 18 | 19 | implementation 20 | 21 | {$R *.dfm} 22 | 23 | end. 24 | -------------------------------------------------------------------------------- /__history/uFrameUpgrade.pas.~20~: -------------------------------------------------------------------------------- 1 | unit uFrameUpgrade; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,ShellApi,System.IOUtils, 7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, uFrameBase, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.ComCtrls; 8 | 9 | type 10 | TframeUpgrade = class(TfrmBase) 11 | ListView1: TListView; 12 | Panel1: TPanel; 13 | private 14 | { Private declarations } 15 | public 16 | { Public declarations } 17 | end; 18 | 19 | implementation 20 | 21 | {$R *.dfm} 22 | 23 | end. 24 | -------------------------------------------------------------------------------- /__history/uFrameUpgrade.pas.~21~: -------------------------------------------------------------------------------- 1 | unit uFrameUpgrade; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,ShellApi,System.IOUtils, 7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, uFrameBase, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.ComCtrls; 8 | 9 | type 10 | TframeUpgrade = class(TfrmBase) 11 | ListView1: TListView; 12 | Panel1: TPanel; 13 | private 14 | { Private declarations } 15 | public 16 | { Public declarations } 17 | end; 18 | 19 | implementation 20 | 21 | {$R *.dfm} 22 | 23 | end. 24 | -------------------------------------------------------------------------------- /__history/uFrameUpgrade.pas.~22~: -------------------------------------------------------------------------------- 1 | unit uFrameUpgrade; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, 7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls; 8 | 9 | type 10 | TframeUpgrade = class(TFrame) 11 | ListView1: TListView; 12 | private 13 | { Private declarations } 14 | public 15 | { Public declarations } 16 | end; 17 | 18 | implementation 19 | 20 | {$R *.dfm} 21 | 22 | end. 23 | -------------------------------------------------------------------------------- /__history/uFrameUpgrade.pas.~23~: -------------------------------------------------------------------------------- 1 | unit uFrameUpgrade; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, 7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, uFrameBase; 8 | 9 | type 10 | TframeUpgrade = class(TFrmBase) 11 | ListView1: TListView; 12 | private 13 | { Private declarations } 14 | public 15 | { Public declarations } 16 | end; 17 | 18 | implementation 19 | 20 | {$R *.dfm} 21 | 22 | end. 23 | -------------------------------------------------------------------------------- /icons/f1 (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/f1 (1).png -------------------------------------------------------------------------------- /icons/f1 (2).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/f1 (2).png -------------------------------------------------------------------------------- /icons/f1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/f1.png -------------------------------------------------------------------------------- /icons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/favicon.ico -------------------------------------------------------------------------------- /icons/keyboard-font.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/keyboard-font.zip -------------------------------------------------------------------------------- /icons/keyboard-font/KeyExtendedCSd-rv2K.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/keyboard-font/KeyExtendedCSd-rv2K.ttf -------------------------------------------------------------------------------- /icons/keyboard-font/KeyNormalCSd-MAYv.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/keyboard-font/KeyNormalCSd-MAYv.ttf -------------------------------------------------------------------------------- /icons/keyboard-font/misc/KEYBOARD-0acf.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/keyboard-font/misc/KEYBOARD-0acf.doc -------------------------------------------------------------------------------- /icons/keyboard-font/misc/KEYBOARD-36a3.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi \deff4\deflang1033{\fonttbl{\f4\froman\fcharset0\fprq2 Times New Roman;}{\f39\fswiss\fcharset2\fprq2 Key Normal \'a9 SD 1994;}{\f40\fswiss\fcharset2\fprq2 Key Entended \'a9 SD 1995;} 2 | {\f45\fswiss\fcharset2\fprq2 Key Entended \'a9 SD 1994;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255; 3 | \red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\f4\lang2057 \snext0 Normal;}{\s1\qc\sb240\sa60\keepn 4 | \b\f4\fs52\ul\lang2057\kerning28 \sbasedon0\snext0 heading 1;}{\*\cs10 \additive Default Paragraph Font;}}{\info{\title !"\'a3$ %^&* ()_+}{\author Simon Daykin}{\operator Simon Daykin}{\creatim\yr1994\mo2\dy20\hr18\min40} 5 | {\revtim\yr1995\mo9\dy10\hr17\min44}{\printim\yr1994\mo2\dy20\hr20\min19}{\version8}{\edmins87}{\nofpages0}{\nofwords0}{\nofchars0}{\vern49203}}\paperw11907\paperh16840\margl1418\margr1418\margt851\margb1418 \widowctrl\ftnbj\aenddoc\formshade \fet0\sectd 6 | \psz9\linex0\headery709\footery709\endnhere {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4 7 | \pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang 8 | {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s1\qc\sb240\sa60\keepn \b\f4\fs52\ul\lang2057\kerning28 The Font File 9 | \ldblquote Key Extended\rdblquote 10 | \par \pard\plain \f4\lang2057 11 | \par \pard The TrueType font \ldblquote Key Extended\rdblquote contains the following keyboard keys. 12 | \par 13 | \par \pard \sl-600\slmult0\tx2268\tx6521 {\f45\fs48 \tab }{\f40\fs48 p[]}{\f39\fs48 14 | \par }\pard \sl-180\slmult0\tx2268\tx6521\tx8080\tx9923 {\f39\fs32 15 | \par }\pard \sl-600\slmult0\tx2268 {\f45\fs48 \tab }{\f40\fs48 tyu\tab #/*- 16 | \par }\pard \sl-600\slmult0\tx2268 {\f40\fs48 \tab ghj\tab 789 17 | \par \tab \tab \tab \tab 456+ 18 | \par \tab c\tab \tab 123 19 | \par \tab zvx\tab 0.@}{\f45\fs48 20 | \par }\pard 21 | \par \pard Also included are two alternative keys to allow a different keyboard layout to be produced 22 | \par \pard {\f40\fs48 " ~ 23 | \par }\pard From the above keys {\f40 0} - {\f40 9} are situated on the {\f39 0} - {\f39 9} keys. Most can be accessed directly from the numeric pad. The others are placed around the keyboard. 24 | \par \pard 25 | \par \pard Below is a full listing of the key strokes required to get the special keys. (I assume that the CapsLock is off!!!). 26 | \par \pard \tqc\tx1134\tqc\tx2835 \sect \sectd \margtsxn1418\margbsxn970\psz9\sbknone\linex0\headery709\footery709\cols2\endnhere \pard\plain \tqc\tx1134\tqc\tx2835 \f4\lang2057 27 | \par \tab {\ul KeyStokes}\tab {\ul Resulting Character 28 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab #\tab }{\f40\fs36 #}{\f39\fs36 \tab 29 | \par }\pard \tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab |'\tab }{\f40\fs36 @}{\f39\fs36 30 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab p\tab }{\f40\fs36 p}{\f39\fs36 31 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab [\tab }{\f40\fs36 [}{\f39\fs36 32 | \par \tab ]\tab }{\f40\fs36 ]}{\f39\fs36 33 | \par \tab t\tab }{\f40\fs36 t}{\f39\fs36 34 | \par \tab y\tab }{\f40\fs36 y 35 | \par }{\f39\fs36 \tab g\tab }{\f40\fs36 g}{\f39\fs36 36 | \par \tab u\tab }{\f40\fs36 u}{\f39\fs36 37 | \par }\pard \tqc\tx1134\tqc\tx2835 \column 38 | \par \pard \tqc\tx1134\tqc\tx2835 \tab {\ul KeyStokes}\tab {\ul Resulting Character 39 | \par } 40 | \par \pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab h\tab }{\f40\fs36 h}{\f39\fs36 41 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab j\tab }{\f40\fs36 j}{\f39\fs36 42 | \par \tab z\tab }{\f40\fs36 z}{\f39\fs36 43 | \par \tab x\tab }{\f40\fs36 x}{\f39\fs36 44 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab c\tab }{\f40\fs36 c}{\f39\fs36 45 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab v\tab }{\f40\fs36 v 46 | \par \tab }{\f39\fs36 2}{\f40\fs36 \tab " 47 | \par \tab 48 | \par \tab }{\f39\fs36 #}{\f40\fs36 \tab ~}{\f39\fs36 49 | \par }\pard \sect \sectd \margtsxn1418\psz9\sbknone\linex0\headery709\footery709\colsx709\endnhere \pard\plain \s1\qc\sb240\sa60\keepn \b\f4\fs52\ul\lang2057\kerning28 \page The Font File \ldblquote Key Normal\rdblquote 50 | \par \pard\plain \f4\lang2057 51 | \par \pard The TrueType font \ldblquote Key Normal\rdblquote contains the following keyboard keys. 52 | \par 53 | \par \pard \sl-600\slmult0 {\f39\fs48 \tab \'ac !"\'a3$}{\f39\fs28 }{\f39\fs48 %^&*}{\f39\fs28 }{\f39\fs48 ()_+}{\f45\fs48 54 | \par }\pard \sl-280\slmult0 55 | \par \pard \sl-600\slmult0 {\f39\fs48 \tab `1234567890-=#~\tab } 56 | \par \pard \sl-600\slmult0 {\f39\fs48 \tab Qqwertyuiop[]\tab } 57 | \par {\f39\fs48 \tab Aasdfghjkl;'@} 58 | \par {\f39\fs48 \tab |\\zxcvbnm,./?} 59 | \par {\f39\fs48 \tab Z X }{\f39\fs22 }{\f39\fs48 X Z 60 | \par }\pard 61 | \par \pard All of the above keys are a direct lower case character map of their actual keyboard keys, with a few exceptions. 62 | \par \pard \sl-300\slmult0 Backspace {\f39 ~} can be found shifted on the {\f39 #} key. 63 | \par Tab {\f39 Q} is on the capital {\f39 q} key. 64 | \par \pard 65 | \par \pard Below is a full listing of the key strokes required to get the special keys. (I assume that the CapsLock is off!!!). 66 | \par \pard 67 | \par \pard \tqc\tx1985\tqc\tx3969 \sect \sectd \margtsxn1418\psz9\sbknone\linex0\headery709\footery709\cols2\endnhere \pard\plain \tqc\tx1134\tqc\tx2835 \f4\lang2057 \tab {\ul KeyStokes}\tab {\ul Resulting Character 68 | \par }\pard \tqc\tx1134\tqc\tx2835 69 | \par \pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab |q\tab Q\tab 70 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab |a\tab A 71 | \par \tab |\\\tab | 72 | \par \tab |z\tab Z 73 | \par \tab |x\tab X 74 | \par \tab |/\tab ? 75 | \par }\pard \tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab |'\tab @ 76 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab |#\tab ~ 77 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab |`\tab \'ac 78 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab |1\tab ! 79 | \par }\pard \tqc\tx1134\tqc\tx2835 \column \tab {\ul KeyStokes}\tab {\ul Resulting Character 80 | \par }\pard \tqc\tx1134\tqc\tx2835 81 | \par \pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab |2\tab " 82 | \par }\pard \sl-460\slmult0\tqc\tx1134\tqc\tx2835 {\f39\fs36 \tab |3\tab \'a3 83 | \par \tab |4\tab $ 84 | \par \tab |5\tab % 85 | \par \tab |6\tab ^ 86 | \par \tab |7\tab & 87 | \par \tab |8\tab * 88 | \par \tab |9\tab ( 89 | \par \tab |0\tab ) 90 | \par \tab |-\tab _ 91 | \par \tab |=\tab + 92 | \par }} -------------------------------------------------------------------------------- /icons/keyboard-font/misc/LICENSE-bf26.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/keyboard-font/misc/LICENSE-bf26.txt -------------------------------------------------------------------------------- /icons/keyboard-font/misc/README-09a2.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/keyboard-font/misc/README-09a2.txt -------------------------------------------------------------------------------- /icons/keyboard-font/misc/REGISTER-5d51.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/keyboard-font/misc/REGISTER-5d51.txt -------------------------------------------------------------------------------- /icons/keyboard-font/misc/VENDOR-d7ea.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/icons/keyboard-font/misc/VENDOR-d7ea.txt -------------------------------------------------------------------------------- /openssl-1.0.2p-x64_86-win64.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/openssl-1.0.2p-x64_86-win64.zip -------------------------------------------------------------------------------- /openssl-1.0.2p-x64_86-win64/HashInfo.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/openssl-1.0.2p-x64_86-win64/HashInfo.txt -------------------------------------------------------------------------------- /openssl-1.0.2p-x64_86-win64/OpenSSL License.txt: -------------------------------------------------------------------------------- 1 | 2 | LICENSE ISSUES 3 | ============== 4 | 5 | The OpenSSL toolkit stays under a dual license, i.e. both the conditions of 6 | the OpenSSL License and the original SSLeay license apply to the toolkit. 7 | See below for the actual license texts. Actually both licenses are BSD-style 8 | Open Source licenses. In case of any license issues related to OpenSSL 9 | please contact openssl-core@openssl.org. 10 | 11 | OpenSSL License 12 | --------------- 13 | 14 | /* ==================================================================== 15 | * Copyright (c) 1998-2016 The OpenSSL Project. All rights reserved. 16 | * 17 | * Redistribution and use in source and binary forms, with or without 18 | * modification, are permitted provided that the following conditions 19 | * are met: 20 | * 21 | * 1. Redistributions of source code must retain the above copyright 22 | * notice, this list of conditions and the following disclaimer. 23 | * 24 | * 2. Redistributions in binary form must reproduce the above copyright 25 | * notice, this list of conditions and the following disclaimer in 26 | * the documentation and/or other materials provided with the 27 | * distribution. 28 | * 29 | * 3. All advertising materials mentioning features or use of this 30 | * software must display the following acknowledgment: 31 | * "This product includes software developed by the OpenSSL Project 32 | * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 33 | * 34 | * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to 35 | * endorse or promote products derived from this software without 36 | * prior written permission. For written permission, please contact 37 | * openssl-core@openssl.org. 38 | * 39 | * 5. Products derived from this software may not be called "OpenSSL" 40 | * nor may "OpenSSL" appear in their names without prior written 41 | * permission of the OpenSSL Project. 42 | * 43 | * 6. Redistributions of any form whatsoever must retain the following 44 | * acknowledgment: 45 | * "This product includes software developed by the OpenSSL Project 46 | * for use in the OpenSSL Toolkit (http://www.openssl.org/)" 47 | * 48 | * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY 49 | * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 50 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 51 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR 52 | * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 53 | * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 54 | * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 55 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 56 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 57 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 58 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 59 | * OF THE POSSIBILITY OF SUCH DAMAGE. 60 | * ==================================================================== 61 | * 62 | * This product includes cryptographic software written by Eric Young 63 | * (eay@cryptsoft.com). This product includes software written by Tim 64 | * Hudson (tjh@cryptsoft.com). 65 | * 66 | */ 67 | 68 | Original SSLeay License 69 | ----------------------- 70 | 71 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 72 | * All rights reserved. 73 | * 74 | * This package is an SSL implementation written 75 | * by Eric Young (eay@cryptsoft.com). 76 | * The implementation was written so as to conform with Netscapes SSL. 77 | * 78 | * This library is free for commercial and non-commercial use as long as 79 | * the following conditions are aheared to. The following conditions 80 | * apply to all code found in this distribution, be it the RC4, RSA, 81 | * lhash, DES, etc., code; not just the SSL code. The SSL documentation 82 | * included with this distribution is covered by the same copyright terms 83 | * except that the holder is Tim Hudson (tjh@cryptsoft.com). 84 | * 85 | * Copyright remains Eric Young's, and as such any Copyright notices in 86 | * the code are not to be removed. 87 | * If this package is used in a product, Eric Young should be given attribution 88 | * as the author of the parts of the library used. 89 | * This can be in the form of a textual message at program startup or 90 | * in documentation (online or textual) provided with the package. 91 | * 92 | * Redistribution and use in source and binary forms, with or without 93 | * modification, are permitted provided that the following conditions 94 | * are met: 95 | * 1. Redistributions of source code must retain the copyright 96 | * notice, this list of conditions and the following disclaimer. 97 | * 2. Redistributions in binary form must reproduce the above copyright 98 | * notice, this list of conditions and the following disclaimer in the 99 | * documentation and/or other materials provided with the distribution. 100 | * 3. All advertising materials mentioning features or use of this software 101 | * must display the following acknowledgement: 102 | * "This product includes cryptographic software written by 103 | * Eric Young (eay@cryptsoft.com)" 104 | * The word 'cryptographic' can be left out if the rouines from the library 105 | * being used are not cryptographic related :-). 106 | * 4. If you include any Windows specific code (or a derivative thereof) from 107 | * the apps directory (application code) you must include an acknowledgement: 108 | * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 109 | * 110 | * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 111 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 112 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 113 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 114 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 115 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 116 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 117 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 118 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 119 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 120 | * SUCH DAMAGE. 121 | * 122 | * The licence and distribution terms for any publically available version or 123 | * derivative of this code cannot be changed. i.e. this code cannot simply be 124 | * copied and put under another distribution licence 125 | * [including the GNU Public Licence.] 126 | */ 127 | -------------------------------------------------------------------------------- /openssl-1.0.2p-x64_86-win64/ReadMe.txt: -------------------------------------------------------------------------------- 1 | ============================================================================= 2 | OpenSSL v1.0.2p Precompiled Binaries for Win64 3 | ----------------------------------------------------------------------------- 4 | 5 | *** Release Information *** 6 | 7 | Release Date: Sep 19, 2018 8 | 9 | Author: Frederik A. Winkelsdorf (opendec.wordpress.com) 10 | for the Indy Project (www.indyproject.org) 11 | 12 | Requirements: Indy 10.5.5+ (SVN Version or Delphi 2009 and newer) 13 | 14 | Dependencies: The libraries have no noteworthy dependencies 15 | 16 | Installation: Copy both DLL files into your application directory 17 | 18 | Supported OS: Windows XP x64 up to Windows 10 x64 19 | 20 | ----------------------------------------------------------------------------- 21 | 22 | *** Legal Disclaimer *** 23 | 24 | THIS SOFTWARE IS PROVIDED BY ITS AUTHOR AND THE INDY PROJECT "AS IS" AND ANY 25 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 26 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 27 | DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY 28 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 29 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 30 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 31 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 32 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 33 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34 | 35 | OpenSSL license terms are provided in the file "OpenSSL License.txt". 36 | 37 | PLEASE CHECK IF YOU NEED TO COMPLY WITH EXPORT RESTRICTIONS FOR CRYPTOGRAPHIC 38 | SOFTWARE AND/OR PATENTS. 39 | 40 | ----------------------------------------------------------------------------- 41 | 42 | *** Build Information Win64 *** 43 | 44 | Built with: Windows Server 2003 SP1 Platform SDK for x64 45 | The Netwide Assembler (NASM) v2.11.08 Win32 46 | Strawberry Perl v5.22.0.1 Win32 Portable 47 | Windows PowerShell 48 | FinalBuilder 7 49 | 50 | Shell: Windows XP x64 Build Environment (Retail) 51 | 52 | Commands: perl configure VC-WIN64A 53 | ms\do_win64a 54 | adjusted ms\version32.rc (Indy Information inserted) 55 | nmake -f ms\ntdll.mak 56 | nmake -f ms\ntdll.mak test 57 | editbin.exe /rebase:base=0x11000000 libeay32.dll 58 | editbin.exe /rebase:base=0x12000000 ssleay32.dll 59 | 60 | ============================================================================= -------------------------------------------------------------------------------- /pTestString.dpr: -------------------------------------------------------------------------------- 1 | program pTestString; 2 | 3 | uses 4 | Vcl.Forms, 5 | testString in 'testString.pas' {Form1}; 6 | 7 | {$R *.res} 8 | 9 | begin 10 | Application.Initialize; 11 | Application.MainFormOnTaskbar := True; 12 | Application.CreateForm(TForm1, Form1); 13 | Application.Run; 14 | end. 15 | -------------------------------------------------------------------------------- /pTestString.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/pTestString.res -------------------------------------------------------------------------------- /pWinDel.identcache: -------------------------------------------------------------------------------- 1 | 2 | 'C:\Users\yvesg\git\WinDel\udlgClose.pas#C:\Users\yvesg\git\WinDel\uMain.pas(C:\Users\yvesg\git\WinDel\uFrameBase.pas%C:\Users\yvesg\git\WinDel\pWinDel.dpr*C:\Users\yvesg\git\WinDel\uFrameConfig.pas(C:\Users\yvesg\git\WinDel\uRunWinget.pas$C:\Users\yvesg\git\WinDel\uConst.pas,C:\Users\yvesg\git\WinDel\uFrameUpgrade2.pas(C:\Users\yvesg\git\WinDel\uFrameList.pas*C:\Users\yvesg\git\WinDel\uFrameSearch.pas -------------------------------------------------------------------------------- /pWinDel.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/pWinDel.res -------------------------------------------------------------------------------- /pWinDel_Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/pWinDel_Icon.ico -------------------------------------------------------------------------------- /pWinDel_Icon1.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/pWinDel_Icon1.ico -------------------------------------------------------------------------------- /pWinDel_Icon2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/pWinDel_Icon2.ico -------------------------------------------------------------------------------- /pWinDel_Icon3.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/pWinDel_Icon3.ico -------------------------------------------------------------------------------- /pWinDel_Icon4.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/pWinDel_Icon4.ico -------------------------------------------------------------------------------- /testString.dfm: -------------------------------------------------------------------------------- 1 | object Form1: TForm1 2 | Left = 0 3 | Top = 0 4 | Caption = 'Form1' 5 | ClientHeight = 442 6 | ClientWidth = 628 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -12 11 | Font.Name = 'Segoe UI' 12 | Font.Style = [] 13 | TextHeight = 15 14 | object Button1: TButton 15 | Left = 8 16 | Top = 16 17 | Width = 75 18 | Height = 25 19 | Caption = 'Button1' 20 | TabOrder = 0 21 | OnClick = Button1Click 22 | end 23 | object memo1: TMemo 24 | Left = 8 25 | Top = 64 26 | Width = 612 27 | Height = 370 28 | TabOrder = 1 29 | end 30 | object Button2: TButton 31 | Left = 104 32 | Top = 16 33 | Width = 75 34 | Height = 25 35 | Caption = 'Button2' 36 | TabOrder = 2 37 | OnClick = Button2Click 38 | end 39 | object IdHTTP1: TIdHTTP 40 | ProxyParams.BasicAuthentication = False 41 | ProxyParams.ProxyPort = 0 42 | Request.ContentLength = -1 43 | Request.ContentRangeEnd = -1 44 | Request.ContentRangeStart = -1 45 | Request.ContentRangeInstanceLength = -1 46 | Request.Accept = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' 47 | Request.BasicAuthentication = False 48 | Request.UserAgent = 'Mozilla/3.0 (compatible; Indy Library)' 49 | Request.Ranges.Units = 'bytes' 50 | Request.Ranges = <> 51 | HTTPOptions = [hoForceEncodeParams] 52 | Left = 176 53 | Top = 16 54 | end 55 | end 56 | -------------------------------------------------------------------------------- /testString.pas: -------------------------------------------------------------------------------- 1 | unit testString; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, 7 | System.Classes, Vcl.Graphics, 8 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, System.StrUtils, 9 | System.AnsiStrings, uConst, Vcl.AppEvnts, IdBaseComponent, IdComponent,XMLIntf, XMLDoc, 10 | IdTCPConnection, IdTCPClient, IdHTTP, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL; 11 | 12 | const 13 | sVersion = 'v1.5.1881'; 14 | 15 | type 16 | TForm1 = class(TForm) 17 | Button1: TButton; 18 | memo1: TMemo; 19 | IdHTTP1: TIdHTTP; 20 | Button2: TButton; 21 | procedure Button1Click(Sender: TObject); 22 | procedure Button2Click(Sender: TObject); 23 | 24 | private 25 | { Déclarations privées } 26 | 27 | public 28 | { Déclarations publiques } 29 | end; 30 | 31 | function GetKeyboardLanguageCodeStr: string; 32 | function GetWindowsLanguage: string; 33 | 34 | var 35 | Form1: TForm1; 36 | 37 | implementation 38 | 39 | {$R *.dfm} 40 | // function GetWindowsLanguage: string; 41 | // var 42 | // langId: word; 43 | // buffer: array [0..4] of Char; 44 | // begin 45 | // langId := GetUserDefaultUILanguage; 46 | // 47 | // // The primary language ID is in the low-order 10 bits, 48 | // // and the sublanguage ID is in the high-order 6 bits. 49 | // // Combine them to get the language ID in the format "LANG-SUBLANG". 50 | // StrFmt(buffer, '%x-%x', [langId and $3FF, langId shr 10]); 51 | // 52 | // Result := buffer; 53 | // end; 54 | 55 | function GetWindowsLanguage: string; 56 | var 57 | localeName: array [0 .. LOCALE_NAME_MAX_LENGTH] of Char; 58 | begin 59 | if GetUserDefaultLocaleName(localeName, LOCALE_NAME_MAX_LENGTH) > 0 then 60 | Result := localeName 61 | else 62 | Result := ''; 63 | end; 64 | 65 | function GetKeyboardLanguageCodeStr: string; 66 | var 67 | tid: word; 68 | lid: word; 69 | ndxLocale: integer; 70 | begin 71 | try 72 | 73 | tid := getCurrentThreadID; 74 | lid := getKeyboardLayout(tid); 75 | ndxLocale := languages.IndexOf(lid); 76 | Result := languages.localeName[ndxLocale]; 77 | except 78 | Result := 'xx'; // Error 79 | end; 80 | end; 81 | 82 | procedure TForm1.Button1Click(Sender: TObject); 83 | var 84 | l1, l2: integer; 85 | slocale: string; 86 | Stream: TMemoryStream; 87 | Url, FileName: String; 88 | IdSSL: TIdSSLIOHandlerSocketOpenSSL; 89 | begin 90 | slocale := languages.localeName[languages.IndexOf(SysLocale.DefaultLCID)]; 91 | Url := Format('https://raw.githubusercontent.com/microsoft/winget-cli/release-%s/Localization/Resources/%s/winget.resw',[sVersion,'fr-FR']); 92 | FileName := 'config.xml'; 93 | IdSSL := TIdSSLIOHandlerSocketOpenSSL.create(nil); 94 | IdSSL.SSLOptions.Method := sslvTLSv1_2; 95 | IdSSL.SSLOptions.Mode := sslmUnassigned; 96 | IdHTTP1.IOHandler := IdSSL; 97 | Stream := TMemoryStream.Create; 98 | try 99 | 100 | IdHTTP1.Get(Url, Stream); 101 | Stream.SaveToFile(FileName); 102 | finally 103 | Stream.Free; 104 | //IdHTTP1.Free; 105 | IdSSL.Free; 106 | end; 107 | end; 108 | 109 | procedure TForm1.Button2Click(Sender: TObject); 110 | var 111 | LDocument: IXMLDocument; 112 | LNodeElement, LNode: IXMLNode; 113 | i : integer; 114 | begin 115 | // 116 | if FileExists('d:\params.xml') then 117 | begin 118 | LDocument := TXMLDocument.Create(nil); 119 | LDocument.LoadFromFile('d:\params.xml'); { File should exist. } 120 | 121 | { Find a specific node. } 122 | LNodeElement := LDocument.ChildNodes.FindNode('root'); 123 | if (LNodeElement <> nil) then 124 | begin 125 | for I := 0 to LNodeElement.ChildNodes.Count - 1 do 126 | begin 127 | LNode := LNodeElement.ChildNodes.Get(I); 128 | { Display node name. } 129 | Writeln(sLineBreak + 'Node name: ' + LNode.NodeName); 130 | { Check whether the node type is Text. } 131 | if LNode.NodeType = ntText then 132 | begin 133 | memo1.lines.add('This is a node of type Text. The text is: ' + LNode.Text); 134 | end; 135 | { Check whether the node is text element. } 136 | if LNode.IsTextElement then 137 | begin 138 | memo1.lines.add('This is a text element. The text is: ' + LNode.Text); 139 | end; 140 | end; 141 | end; 142 | end 143 | else 144 | begin 145 | memo1.Lines.Add('nope'); 146 | end; 147 | end; 148 | 149 | end. 150 | -------------------------------------------------------------------------------- /uConst.pas: -------------------------------------------------------------------------------- 1 | unit uConst; 2 | 3 | interface 4 | 5 | uses 6 | System.Generics.Collections, 7 | System.JSON, 8 | System.Types, 9 | System.strUtils, 10 | System.SysUtils, 11 | System.Classes, 12 | System.IOUtils, 13 | System.Win.Registry, 14 | winapi.Windows, 15 | winapi.Messages, 16 | vcl.ComCtrls, 17 | sListView; 18 | 19 | const 20 | 21 | aLstWidths: TArray = [46, 38, 13, 8]; 22 | aLstFields: TArray = ['nom', 'id', 'version', 'source']; 23 | aUpdWidths: TArray = [40, 31, 13, 13, 8]; 24 | aUpgFields: TArray = ['nom', 'id', 'version', 'disponible', 'source']; 25 | aSearchFields: TArray = ['nom', 'id', 'version', 'corresp.', 'source']; 26 | 27 | aColListLibs: TArray = ['Description', 'Id', 'Version', 'Source']; 28 | aColUpdLibs: TArray = ['Description', 'Id', 'Version', 'Available', 'Source']; 29 | 30 | // sRunUpdate = 'winget upgrade --id %s'; 31 | // sRunInstall = 'winget install --id %s --force'; 32 | 33 | WM_GETWINGETVERSION = WM_USER + 2001; 34 | WM_STARTSEARCH = WM_GETWINGETVERSION + 1; 35 | WM_STARTLIST = WM_STARTSEARCH + 1; 36 | WM_RUNNEXT = WM_STARTLIST + 1; 37 | WM_CLOSERUNEXT = WM_RUNNEXT + 1; 38 | WM_FRAMERESIZE = WM_CLOSERUNEXT + 1; 39 | WM_GETUPGRADELIST = WM_FRAMERESIZE + 1; 40 | WM_HIDEMAIN = WM_GETUPGRADELIST + 1; 41 | 42 | type 43 | tPackageType = (ptInstall, ptUpgrade, ptSearch, ptList, ptUninstall); 44 | tActivitySet = procedure(bActive: Boolean) of object; 45 | tRemoveItem = procedure(sID: string) of object; 46 | 47 | tGridConfig = class 48 | class procedure MakeColumns(psLV: tsListView); 49 | end; 50 | 51 | tWingetcommand = class 52 | class function Install(sID: String): String; 53 | class function Upgrade: String; 54 | class function upgradePKG(sID: String): String; 55 | class Function List: String; 56 | class function Search(sText: String): String; 57 | class function version: String; 58 | class function UnInstall(sID: String): String; 59 | end; 60 | 61 | tColumnClass = class 62 | public 63 | sLabel: String; 64 | iPos: Integer; 65 | iLen: Integer; 66 | constructor create(aPos1, aLen: Integer); 67 | end; 68 | 69 | tParams = class 70 | private 71 | fJSON: TJSONObject; 72 | fConfigPath: string; 73 | fStartMinimized : Boolean; 74 | fAutoCheckUpdates : Boolean; 75 | fCheckUpateInterval : Integer; 76 | fRunOnStartup : Boolean; 77 | procedure initParams; 78 | procedure makeConfigPath; 79 | function ConfigExists: Boolean; 80 | public 81 | procedure loadParams; 82 | procedure saveParams; 83 | 84 | function getParamb(sParam: string): Boolean; 85 | function getParams(sParam: string): String; 86 | function getParamI(sParam: Integer): Integer; 87 | procedure SetParamb(sParam: string; bValue: Boolean); 88 | procedure SetParams(sParam: string; sValue: String); 89 | procedure setParamI(sParam : string; iVaue : Integer); 90 | property StartMinimized: Boolean read fStartMinimized Write fStartMinimized; 91 | Property AutoCheckUpdates : Boolean read fAutoCheckupdates Write fAutoCheckupdates; 92 | Property CheckUpdatesInterval : Integer read fCheckUpateInterval Write fCheckUpateInterval; 93 | Property RunOnStartup : Boolean read fRunOnStartup Write fRunOnStartup; 94 | end; 95 | 96 | tWingetPackage = Class 97 | private 98 | fFields: TArray; 99 | fType: tPackageType; 100 | fLine: string; 101 | dFields: TDictionary; 102 | procedure makeFields(sLine: String); 103 | procedure makeListFields(sLine: String); 104 | function splitCols(line : string): tStrings; 105 | published 106 | property Line: String read fLine; 107 | property PackageType: tPackageType read fType; 108 | public 109 | property Fields: TArray read fFields write fFields; 110 | constructor create(sLine: String; sType: tPackageType); overload; 111 | constructor create(pWingetPackage: tWingetPackage); overload; 112 | function getField(sField: string): String; 113 | function getAllFields: TStrings; 114 | End; 115 | 116 | var 117 | lListColumn: TStrings; 118 | lListUpdates: tStrings; 119 | wgCommands: TDictionary; 120 | pParams: tParams; 121 | 122 | procedure makeUpgradeDictonary(sLine: String); 123 | procedure removekey; 124 | function CurrentUserName: String; 125 | procedure RunOnStartup(sProgTitle, sCmdLine: string; bRunOnce: Boolean); 126 | procedure RemoveOnStartup(sProgTitle: string); 127 | 128 | implementation 129 | 130 | procedure RunOnStartup(sProgTitle, sCmdLine: string; bRunOnce: Boolean); 131 | var 132 | sKey: string; 133 | reg: TRegIniFile; 134 | begin 135 | if (bRunOnce) then 136 | sKey := 'Once' 137 | else 138 | sKey := ''; 139 | 140 | reg := TRegIniFile.create(''); 141 | reg.RootKey := HKEY_CURRENT_USER; 142 | reg.WriteString('\Software\Microsoft\Windows\CurrentVersion\Run' + sKey + #0, sProgTitle, sCmdLine); 143 | reg.Free; 144 | end; 145 | 146 | procedure RemoveOnStartup(sProgTitle: string); 147 | var 148 | sKey: string; 149 | reg: TRegIniFile; 150 | begin 151 | reg := TRegIniFile.create(''); 152 | reg.RootKey := HKEY_CURRENT_USER; 153 | reg.DeleteKey('\Software\Microsoft\Windows\CurrentVersion\Run', sProgTitle); 154 | reg.Free; 155 | end; 156 | 157 | function GetCharsCount(const AStr: UTF8String): Integer; 158 | var 159 | P: PWideChar; 160 | begin 161 | Result := 0; 162 | P := PWideChar(UnicodeString(AStr)); 163 | while P <> '' do begin 164 | Inc(Result); 165 | P := CharNextW(P); 166 | end; 167 | end; 168 | 169 | function CopyChars(sLine : String; iStart : Integer; iLen : Integer) : String; 170 | var 171 | i : integer; 172 | P: PWideChar; 173 | begin 174 | result := ''; 175 | i := 0; 176 | while i <= iLen do 177 | begin 178 | if (i >= iStart) and (i <= iLen) then 179 | begin 180 | P := PWideChar(UnicodeString(sLine[i])); 181 | result := result + P; 182 | while P <> '' do begin 183 | P := CharNextW(P); 184 | end; 185 | end; 186 | 187 | inc(i); 188 | end; 189 | end; 190 | 191 | function CurrentUserName: String; 192 | var 193 | u: array [0 .. 127] of Char; 194 | sz: DWord; 195 | begin 196 | sz := SizeOf(u); 197 | GetUserName(u, sz); 198 | Result := u; 199 | end; 200 | 201 | procedure removekey; 202 | var 203 | Mgs: TMsg; 204 | begin 205 | PeekMessage(Mgs, 0, WM_CHAR, WM_CHAR, PM_REMOVE); 206 | end; 207 | 208 | procedure makeUpgradeDictonary(sLine: String); 209 | var 210 | iLen: Integer; 211 | pColumn: tColumnClass; 212 | lHeaders: TStringDynArray; 213 | lsHeaders: tStringList; 214 | i: Integer; 215 | iPos1, iPos2: Integer; 216 | iPosCol, iLenCol: Integer; 217 | key: String; 218 | begin 219 | lHeaders := SplitString(sLine, ' '); 220 | i := 0; 221 | lsHeaders := tStringList.create; 222 | lsHeaders.AddStrings(lHeaders); 223 | while i <= lsHeaders.Count - 1 do 224 | begin 225 | if trim(lsHeaders[i]) = '' then 226 | begin 227 | lsHeaders.Delete(i); 228 | end 229 | else 230 | inc(i); 231 | end; 232 | 233 | if lListColumn <> Nil then 234 | FreeAndNil(lListColumn); 235 | 236 | lListColumn := tStringList.create; 237 | i := 0; 238 | repeat 239 | if (trim(lsHeaders[i]) <> '') then 240 | begin 241 | key := lsHeaders[i]; 242 | iPosCol := pos(key, sLine); 243 | iLenCol := 0; 244 | pColumn := tColumnClass.create(iPosCol, iLenCol); 245 | pColumn.sLabel := key; 246 | lListColumn.AddObject(key, pColumn); 247 | end; 248 | inc(i); 249 | until i > lsHeaders.Count - 1; 250 | 251 | i := 0; 252 | repeat 253 | if i < lListColumn.Count - 1 then 254 | begin 255 | iPos1 := tColumnClass(lListColumn.Objects[i]).iPos; 256 | iPos2 := tColumnClass(lListColumn.Objects[i + 1]).iPos; 257 | tColumnClass(lListColumn.Objects[i]).iLen := iPos2 - iPos1; 258 | end 259 | else 260 | begin 261 | iPos1 := tColumnClass(lListColumn.Objects[i]).iPos; 262 | tColumnClass(lListColumn.Objects[i]).iLen := (length(sLine) - iPos1) + 1 263 | end; 264 | inc(i); 265 | until i > lsHeaders.Count - 1; 266 | end; 267 | 268 | { tColumnClass } 269 | 270 | constructor tColumnClass.create(aPos1, aLen: Integer); 271 | begin 272 | iPos := aPos1; 273 | iLen := aLen; 274 | end; 275 | 276 | { tWingetPackage } 277 | 278 | constructor tWingetPackage.create(sLine: String; sType: tPackageType); 279 | var 280 | aColumn: tColumnClass; 281 | begin 282 | fType := sType; 283 | fLine := sLine; 284 | dFields := TDictionary.create(); 285 | case sType of 286 | ptInstall: 287 | begin 288 | end; 289 | ptUpgrade: 290 | begin 291 | Fields := aUpgFields; 292 | end; 293 | ptSearch: 294 | begin 295 | Fields := aSearchFields; 296 | end; 297 | ptList: 298 | begin 299 | if lListColumn.Count = 4 then 300 | Fields := aLstFields 301 | else 302 | Fields := aUpgFields; 303 | end; 304 | end; 305 | makeFields(sLine); 306 | case sType of 307 | ptInstall: 308 | ; 309 | ptUpgrade: 310 | ; 311 | ptSearch: 312 | begin 313 | dFields.Remove('source'); 314 | dFields.Add('source', 'Winget'); 315 | end; 316 | 317 | ptList: 318 | begin 319 | 320 | end; 321 | end; 322 | end; 323 | 324 | { tCommandClass } 325 | 326 | class function tWingetcommand.Install(sID: String): String; 327 | begin 328 | wgCommands.TryGetValue('install', Result); 329 | Result := format(Result, [sID]); 330 | end; 331 | 332 | class function tWingetcommand.List: String; 333 | begin 334 | wgCommands.TryGetValue('list', Result); 335 | end; 336 | 337 | class function tWingetcommand.Search(sText: String): String; 338 | begin 339 | wgCommands.TryGetValue('search', Result); 340 | Result := format(Result, [sText]); 341 | end; 342 | 343 | class function tWingetcommand.UnInstall(sID: String): String; 344 | begin 345 | wgCommands.TryGetValue('uninstall', Result); 346 | Result := format(Result, [sID]); 347 | end; 348 | 349 | class function tWingetcommand.Upgrade: String; 350 | begin 351 | wgCommands.TryGetValue('upgrade', Result); 352 | end; 353 | 354 | class function tWingetcommand.upgradePKG(sID: String): String; 355 | begin 356 | wgCommands.TryGetValue('upgradePKG', Result); 357 | Result := format(Result, [sID]); 358 | end; 359 | 360 | class function tWingetcommand.version: String; 361 | begin 362 | wgCommands.TryGetValue('version', Result); 363 | end; 364 | 365 | constructor tWingetPackage.create(pWingetPackage: tWingetPackage); 366 | begin 367 | // 368 | create(pWingetPackage.Line, pWingetPackage.PackageType); 369 | end; 370 | 371 | function tWingetPackage.getAllFields: TStrings; 372 | var 373 | sField: String; 374 | begin 375 | Result := tStringList.create; 376 | for sField in aUpgFields do 377 | begin 378 | Result.Add(getField(sField)); 379 | end; 380 | end; 381 | 382 | function tWingetPackage.getField(sField: string): String; 383 | begin 384 | if not dFields.TryGetValue(sField, Result) then 385 | Result := 'N/A'; 386 | 387 | end; 388 | 389 | procedure tWingetPackage.makeFields(sLine: String); 390 | var 391 | aColumn: tColumnClass; 392 | iCol: Integer; 393 | s : PWideChar; 394 | slCols : tStrings; 395 | begin 396 | iCol := 0; 397 | slCols := splitCols(sLine); 398 | while iCol <= slcols.Count - 1 do 399 | begin 400 | aColumn := tColumnClass(lListColumn.Objects[iCol]); 401 | dFields.Add(Fields[iCol], slCols[iCol]); 402 | inc(iCol); 403 | end; 404 | slCols.Free; 405 | end; 406 | 407 | function tWingetPackage.splitCols(line : string): tStrings; 408 | var 409 | i : integer; 410 | c,l, cl : integer; 411 | s : String; 412 | fName : String; 413 | begin 414 | result := tStringlist.Create; 415 | i := 0; 416 | c := 0; 417 | l := 0; 418 | cl := 0; 419 | fName := ''; 420 | while i < llistcolumn.Count do 421 | begin 422 | if (c < line.Length) then 423 | s := line[c+1] 424 | else 425 | s := ' '; 426 | cl := TEncoding.UTF8.GetByteCount(s); 427 | if cl > 1 then dec(cl); 428 | l := l + cl; 429 | fName := fName + s; 430 | if l >= tColumnClass(lListColumn.Objects[i]).iLen then 431 | begin 432 | l := 0; 433 | result.Add(fName); 434 | fName := ''; 435 | inc(i); 436 | end; 437 | inc(c); 438 | end; 439 | end; 440 | 441 | procedure tWingetPackage.makeListFields(sLine: String); 442 | begin 443 | 444 | end; 445 | 446 | { tGridConfig } 447 | 448 | class procedure tGridConfig.MakeColumns(psLV: tsListView); 449 | var 450 | aColumn: TListColumn; 451 | i: Integer; 452 | aTitles: TArray; 453 | Procedure cc(sTitle: String; iWidth: Integer); 454 | begin 455 | aColumn := psLV.Columns.Add; 456 | aColumn.Caption := sTitle; 457 | aColumn.Width := iWidth; 458 | aColumn.AutoSize := False; 459 | end; 460 | 461 | begin 462 | psLV.Columns.Clear; 463 | if lListColumn.Count = 4 then 464 | begin 465 | for i := 0 to length(aLstWidths) - 1 do 466 | begin 467 | cc(aColListLibs[i], aLstWidths[i]); 468 | end; 469 | end 470 | else 471 | begin 472 | for i := 0 to length(aUpdWidths) - 1 do 473 | begin 474 | cc(aColUpdLibs[i], aUpdWidths[i]); 475 | end; 476 | end; 477 | end; 478 | 479 | { tParams } 480 | 481 | function tParams.ConfigExists: Boolean; 482 | var 483 | sConfigFile: String; 484 | begin 485 | makeConfigPath; 486 | sConfigFile := TPath.Combine(fConfigPath, 'params.json'); 487 | Result := FileExists(sConfigFile); 488 | end; 489 | 490 | function tParams.getParamb(sParam: string): Boolean; 491 | var 492 | bValue : Boolean; 493 | begin 494 | Result := False; 495 | if fJSON.TryGetValue(sParam, bValue) then 496 | result := bValue; 497 | end; 498 | 499 | function tParams.getParamI(sParam: Integer): Integer; 500 | begin 501 | 502 | end; 503 | 504 | function tParams.getParams(sParam: string): String; 505 | begin 506 | 507 | end; 508 | 509 | procedure tParams.initParams; 510 | var 511 | sConfigFile: String; 512 | jAutoUpd : TJSONObject; 513 | begin 514 | sConfigFile := TPath.Combine(fConfigPath, 'params.json'); 515 | fJSON := TJSONObject.create; 516 | fJSON.AddPair('StartMinimized', tJSONBool.Create(False)); 517 | fJSON.AddPair('RunOnStartUp', TJSONBool.Create(False)); 518 | jAutoUpd := TJSONObject.Create; 519 | jAutoUpd.AddPair('RunAutoUpdCheck',TJSONBool.Create(False)); 520 | jAutoUpd.AddPair('Interval',TJSONNumber.Create(30)); 521 | fJSON.addpair('CheckUpdates',jAutoUpd); 522 | TFile.WriteAllText(sConfigFile, fJSON.ToJSON); 523 | end; 524 | 525 | procedure tParams.loadParams; 526 | var 527 | sConfigFile: String; 528 | jAutoUpd : TJSonValue; 529 | begin 530 | if ConfigExists then 531 | begin 532 | sConfigFile := TPath.Combine(fConfigPath, 'params.json'); 533 | fJSON := TJSONObject.create; 534 | fJSON := TJSONObject(fJSON.ParseJSONValue(TFile.ReadAllText(sConfigFile, TEncoding.UTF8))); 535 | fStartMinimized := getParamb('StartMinimized'); 536 | fRunOnStartup := getParamb('RunOnStartup'); 537 | 538 | 539 | jAutoUpd := fJSON.GetValue('CheckUpdates'); 540 | jAutoUpd.TryGetValue('RunAutoUpdCheck',fAutoCheckUpdates); 541 | jAutoUpd.TryGetValue('Interval',fCheckUpateInterval); 542 | 543 | end 544 | else 545 | initParams; 546 | 547 | // Load param variables. 548 | end; 549 | 550 | procedure tParams.makeConfigPath; 551 | var 552 | sUser: string; 553 | sPAth: String; 554 | begin 555 | sUser := CurrentUserName; 556 | sPAth := TPath.Combine('c:\users\', sUser); 557 | sPAth := TPath.Combine(sPAth, '.config\WingetHelper'); 558 | if not tDirectory.Exists(sPAth) then 559 | ForceDirectories(sPAth); 560 | fConfigPath := sPAth; 561 | end; 562 | 563 | procedure tParams.saveParams; 564 | var 565 | sConfigFile: String; 566 | jAutoUpd : TJSONObject; 567 | begin 568 | sConfigFile := TPath.Combine(fConfigPath, 'params.json'); 569 | fJSON.Free; 570 | fJSON := TJSONObject.create; 571 | fJSON.AddPair('StartMinimized', tJSONBool.Create(fStartMinimized)); 572 | fJSON.AddPair('RunOnStartUp', TJSONBool.Create(fRunOnStartup)); 573 | jAutoUpd := TJSONObject.Create; 574 | jAutoUpd.AddPair('RunAutoUpdCheck',TJSONBool.Create(fAutoCheckUpdates)); 575 | jAutoUpd.AddPair('Interval',TJSONNumber.Create(fCheckUpateInterval)); 576 | fJSON.addpair('CheckUpdates',jAutoUpd); 577 | TFile.WriteAllText(sConfigFile, fJSON.ToJSON); 578 | end; 579 | 580 | procedure tParams.SetParamb(sParam: string; bValue: Boolean); 581 | var 582 | jsPair: tJSONPair; 583 | begin 584 | jspair := fJSON.Get(sParam); 585 | if assigned(jsPair) then begin 586 | fJSON.RemovePair(sParam) 587 | end; 588 | fJSON.AddPair(sPAram, TJSONBool.Create(bValue)); 589 | end; 590 | 591 | procedure tParams.setParamI(sParam: string; iVaue: Integer); 592 | begin 593 | 594 | end; 595 | 596 | procedure tParams.SetParams(sParam, sValue: String); 597 | begin 598 | 599 | end; 600 | 601 | initialization 602 | 603 | wgCommands := TDictionary.create(); 604 | wgCommands.Add('list', 'winget list --accept-source-agreements'); 605 | wgCommands.Add('upgrade', 'winget upgrade --include-unknown'); 606 | wgCommands.Add('upgradePKG', 'winget upgrade --id "%s"'); 607 | wgCommands.Add('search', 'winget search "%s" --source winget'); 608 | wgCommands.Add('install', 'winget install --id "%s"'); 609 | wgCommands.Add('uninstall', 'winget uninstall --id "%s"'); 610 | wgCommands.Add('version', 'winget --version'); 611 | pParams := tParams.create; 612 | lListUpdates := tStringList.Create; 613 | 614 | Finalization 615 | 616 | wgCommands.Clear; 617 | wgCommands.Free; 618 | pParams.Free; 619 | lListUpdates.Free; 620 | 621 | end. 622 | -------------------------------------------------------------------------------- /uFrameBase.dfm: -------------------------------------------------------------------------------- 1 | object frmBase: TfrmBase 2 | Left = 0 3 | Top = 0 4 | Width = 640 5 | Height = 480 6 | TabOrder = 0 7 | end 8 | -------------------------------------------------------------------------------- /uFrameBase.pas: -------------------------------------------------------------------------------- 1 | unit uFrameBase; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, 7 | Winapi.Messages, 8 | System.SysUtils, 9 | System.Variants, 10 | System.Classes, 11 | Vcl.Graphics, 12 | Vcl.Controls, 13 | Vcl.Forms, 14 | Vcl.Dialogs, 15 | Vcl.ExtCtrls; 16 | 17 | type 18 | TfrmBase = class(TFrame) 19 | private 20 | { Private declarations } 21 | public 22 | { Public declarations } 23 | end; 24 | 25 | implementation 26 | 27 | {$R *.dfm} 28 | 29 | end. 30 | 31 | -------------------------------------------------------------------------------- /uFrameConfig.dfm: -------------------------------------------------------------------------------- 1 | inherited frmConfig: TfrmConfig 2 | object pnlMain: TsPanel 3 | Left = 0 4 | Top = 0 5 | Width = 640 6 | Height = 480 7 | Align = alClient 8 | Caption = 'pnlMain' 9 | ShowCaption = False 10 | TabOrder = 0 11 | object pnlTitleToolBar: TsPanel 12 | Left = 1 13 | Top = 1 14 | Width = 638 15 | Height = 24 16 | Align = alTop 17 | Alignment = taLeftJustify 18 | BevelOuter = bvNone 19 | Caption = 'Configuration' 20 | StyleElements = [seFont] 21 | ParentBackground = False 22 | ParentColor = True 23 | TabOrder = 0 24 | end 25 | object pnlSideTB: TsPanel 26 | Left = 454 27 | Top = 25 28 | Width = 185 29 | Height = 454 30 | Align = alRight 31 | Caption = 'pnlSideTB' 32 | ShowCaption = False 33 | TabOrder = 1 34 | object btnUnInstallRun: TsSpeedButton 35 | Left = 1 36 | Top = 397 37 | Width = 183 38 | Height = 56 39 | Align = alBottom 40 | Caption = 'Save Params'#13#10'(F8)' 41 | ImageIndex = 1 42 | Images = sCharImageList1 43 | OnClick = btnUnInstallRunClick 44 | TextOffset = 10 45 | ExplicitLeft = 2 46 | ExplicitTop = 9 47 | end 48 | end 49 | object sPageControl1: TsPageControl 50 | Left = 1 51 | Top = 25 52 | Width = 453 53 | Height = 454 54 | ActivePage = sTabSheet1 55 | Align = alClient 56 | TabOrder = 2 57 | object sTabSheet1: TsTabSheet 58 | Caption = 'General' 59 | object ckStartup: TsCheckBox 60 | Left = 16 61 | Top = 46 62 | Width = 102 63 | Height = 19 64 | Caption = 'Run on Sartup' 65 | TabOrder = 0 66 | OnMouseUp = ckStartupMouseUp 67 | end 68 | object ckStarMinimized: TsCheckBox 69 | Left = 16 70 | Top = 71 71 | Width = 110 72 | Height = 19 73 | Caption = 'Start Minimized' 74 | TabOrder = 1 75 | OnMouseUp = ckStarMinimizedMouseUp 76 | end 77 | object ckAutoUpdCheck: TsCheckBox 78 | Left = 16 79 | Top = 96 80 | Width = 186 81 | Height = 19 82 | Caption = 'Automatic Update verification' 83 | TabOrder = 2 84 | OnMouseUp = ckAutoUpdCheckMouseUp 85 | end 86 | object pnlFrequency: TsPanel 87 | Left = 32 88 | Top = 121 89 | Width = 296 90 | Height = 32 91 | Caption = 'pnlFrequency' 92 | ShowCaption = False 93 | TabOrder = 3 94 | Visible = False 95 | object sLabel2: TsLabel 96 | Left = 12 97 | Top = 7 98 | Width = 28 99 | Height = 15 100 | Caption = 'Every' 101 | end 102 | object sLabel1: TsLabel 103 | Left = 237 104 | Top = 7 105 | Width = 43 106 | Height = 15 107 | Caption = 'minutes' 108 | end 109 | object lblMin: TsLabel 110 | Left = 202 111 | Top = 8 112 | Width = 23 113 | Height = 15 114 | Alignment = taRightJustify 115 | AutoSize = False 116 | Caption = '0' 117 | end 118 | object tbInterval: TsTrackBar 119 | Left = 46 120 | Top = 0 121 | Width = 150 122 | Height = 45 123 | Max = 60 124 | Min = 5 125 | ParentShowHint = False 126 | Frequency = 5 127 | Position = 5 128 | PositionToolTip = ptTop 129 | ShowHint = True 130 | ShowSelRange = False 131 | TabOrder = 0 132 | TickStyle = tsNone 133 | OnChange = tbIntervalChange 134 | ShowProgress = True 135 | end 136 | end 137 | end 138 | object Winget: TsTabSheet 139 | Caption = 'Winget' 140 | object sLabelFX1: TsLabelFX 141 | Left = 16 142 | Top = 16 143 | Width = 47 144 | Height = 17 145 | Caption = 'Soon .....' 146 | Angle = 0 147 | Shadow.OffsetKeeper.LeftTop = 0 148 | Shadow.OffsetKeeper.RightBottom = 2 149 | end 150 | end 151 | end 152 | end 153 | object sFrameAdapter1: TsFrameAdapter 154 | Left = 536 155 | Top = 384 156 | end 157 | object sCharImageList1: TsCharImageList 158 | EmbeddedFonts = < 159 | item 160 | FontName = 'FontAwesome' 161 | FontData = {} 162 | end> 163 | Items = < 164 | item 165 | Char = 61465 166 | Color = clLime 167 | end 168 | item 169 | DrawContour = True 170 | Char = 61465 171 | end> 172 | Left = 502 173 | Top = 369 174 | Bitmap = {} 175 | end 176 | end 177 | -------------------------------------------------------------------------------- /uFrameConfig.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/uFrameConfig.pas -------------------------------------------------------------------------------- /uFrameList.dfm: -------------------------------------------------------------------------------- 1 | inherited frmList: TfrmList 2 | object pnlListMain: TsPanel 3 | Left = 0 4 | Top = 0 5 | Width = 640 6 | Height = 480 7 | Align = alClient 8 | Caption = 'pnlListMain' 9 | TabOrder = 0 10 | object listView1: TsListView 11 | Left = 1 12 | Top = 25 13 | Width = 453 14 | Height = 454 15 | BevelInner = bvNone 16 | BevelKind = bkFlat 17 | BevelOuter = bvNone 18 | Align = alClient 19 | Checkboxes = True 20 | Columns = < 21 | item 22 | Caption = 'Description' 23 | MinWidth = 200 24 | Width = 200 25 | end 26 | item 27 | Caption = 'ID' 28 | Width = 67 29 | end 30 | item 31 | Caption = 'Version' 32 | Width = 66 33 | end 34 | item 35 | Caption = 'Disponible' 36 | Width = 58 37 | end 38 | item 39 | Caption = 'Source' 40 | Width = 58 41 | end> 42 | RowSelect = True 43 | TabOrder = 0 44 | ViewStyle = vsReport 45 | end 46 | object pnlSideTB: TsPanel 47 | Left = 454 48 | Top = 25 49 | Width = 185 50 | Height = 454 51 | Align = alRight 52 | BevelOuter = bvNone 53 | Caption = 'pnlSideTB' 54 | Padding.Left = 4 55 | Padding.Right = 4 56 | Padding.Bottom = 4 57 | ShowCaption = False 58 | TabOrder = 1 59 | object btnUnInstallRun: TsSpeedButton 60 | Left = 4 61 | Top = 394 62 | Width = 177 63 | Height = 56 64 | Align = alBottom 65 | Caption = 'Uninstall Selected'#13#10'(F8)' 66 | ImageIndex = 1 67 | Images = sCharImageList1 68 | OnClick = btnUnInstallRunClick 69 | ExplicitLeft = 6 70 | end 71 | object pnlUpgTopSide: TsPanel 72 | Left = 4 73 | Top = 0 74 | Width = 177 75 | Height = 41 76 | Align = alTop 77 | BevelOuter = bvNone 78 | Caption = 'pnlUpgTopSide' 79 | ShowCaption = False 80 | TabOrder = 0 81 | end 82 | object pnlFilterGroup: TsPanel 83 | Left = 4 84 | Top = 41 85 | Width = 177 86 | Height = 72 87 | Align = alTop 88 | BevelOuter = bvNone 89 | Caption = 'pnlFilterGroup' 90 | ShowCaption = False 91 | TabOrder = 1 92 | object lblfltSource: TsLabel 93 | Left = 0 94 | Top = 0 95 | Width = 177 96 | Height = 15 97 | Align = alTop 98 | Alignment = taCenter 99 | Caption = 'Source' 100 | ExplicitWidth = 36 101 | end 102 | object cbbSourceFilter: TsComboBox 103 | Left = 0 104 | Top = 15 105 | Width = 177 106 | Height = 23 107 | Align = alTop 108 | TabOrder = 0 109 | OnChange = cbbSourceFilterChange 110 | Style = csDropDownList 111 | end 112 | end 113 | end 114 | object pnlTitleToolBar: TsPanel 115 | Left = 1 116 | Top = 1 117 | Width = 638 118 | Height = 24 119 | Align = alTop 120 | Alignment = taLeftJustify 121 | BevelOuter = bvNone 122 | Caption = 'Installed Packages' 123 | StyleElements = [seFont] 124 | ParentBackground = False 125 | ParentColor = True 126 | TabOrder = 2 127 | end 128 | end 129 | object sFrameAdapter1: TsFrameAdapter 130 | Left = 502 131 | Top = 297 132 | end 133 | object sCharImageList1: TsCharImageList 134 | EmbeddedFonts = < 135 | item 136 | FontName = 'FontAwesome' 137 | FontData = {} 138 | end> 139 | Items = < 140 | item 141 | Char = 61809 142 | Color = clRed 143 | end 144 | item 145 | Char = 61561 146 | Color = clBlue 147 | end> 148 | Left = 534 149 | Top = 401 150 | Bitmap = {} 151 | end 152 | object ActionList1: TActionList 153 | Left = 526 154 | Top = 249 155 | object UninstallSelected: TAction 156 | Caption = 'Uninstall Selected' 157 | ShortCut = 119 158 | OnExecute = UninstallSelectedExecute 159 | end 160 | end 161 | end 162 | -------------------------------------------------------------------------------- /uFrameList.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/uFrameList.pas -------------------------------------------------------------------------------- /uFrameSearch.dfm: -------------------------------------------------------------------------------- 1 | inherited frmSearch: TfrmSearch 2 | Width = 435 3 | Height = 266 4 | OnResize = FrameResize 5 | ExplicitWidth = 435 6 | ExplicitHeight = 266 7 | object pnlSearchMain: TsPanel 8 | Left = 0 9 | Top = 24 10 | Width = 435 11 | Height = 242 12 | Align = alClient 13 | BevelOuter = bvNone 14 | Caption = 'pnlSearchMain' 15 | ShowCaption = False 16 | TabOrder = 0 17 | ExplicitWidth = 856 18 | ExplicitHeight = 622 19 | object pnlSearchEdit: TsPanel 20 | Left = 0 21 | Top = 0 22 | Width = 435 23 | Height = 105 24 | Align = alTop 25 | BevelOuter = bvNone 26 | Caption = 'pnlSearchEdit' 27 | Color = clBackground 28 | ShowCaption = False 29 | ParentBackground = False 30 | TabOrder = 0 31 | ExplicitWidth = 856 32 | object btnLaunch: TsSpeedButton 33 | Left = 704 34 | Top = 16 35 | Width = 147 36 | Height = 49 37 | Caption = 'Search'#13#10'(Enter)' 38 | ImageIndex = 3 39 | Images = sCharImageList1 40 | Spacing = 15 41 | OnClick = btnLaunchClick 42 | end 43 | object edtPackageName: TsEdit 44 | Left = 25 45 | Top = 29 46 | Width = 673 47 | Height = 23 48 | TabOrder = 0 49 | TextHint = 'Package to search' 50 | OnKeyDown = edtPackageNameKeyDown 51 | BoundLabel.Active = True 52 | BoundLabel.Caption = 'Package to search' 53 | BoundLabel.Layout = sclTopLeft 54 | LabelFromTextHint = True 55 | end 56 | end 57 | object sPanel1: TsPanel 58 | Left = 0 59 | Top = 105 60 | Width = 435 61 | Height = 248 62 | Align = alTop 63 | Caption = 'sPanel1' 64 | TabOrder = 1 65 | ExplicitWidth = 856 66 | object ListView1: TsListView 67 | Left = 1 68 | Top = 1 69 | Width = 248 70 | Height = 246 71 | BevelInner = bvNone 72 | BevelOuter = bvNone 73 | Align = alClient 74 | Checkboxes = True 75 | Columns = < 76 | item 77 | Caption = 'Description' 78 | MinWidth = 200 79 | Width = 200 80 | end 81 | item 82 | Caption = 'ID' 83 | Width = 78 84 | end 85 | item 86 | Caption = 'Version' 87 | Width = 77 88 | end 89 | item 90 | Caption = 'Correspondance' 91 | Width = 77 92 | end 93 | item 94 | Caption = 'Source' 95 | Width = 77 96 | end> 97 | RowSelect = True 98 | TabOrder = 0 99 | ViewStyle = vsReport 100 | ExplicitWidth = 669 101 | end 102 | object pnlUpgSideBar: TsPanel 103 | Left = 249 104 | Top = 1 105 | Width = 185 106 | Height = 246 107 | Align = alRight 108 | BevelOuter = bvNone 109 | Caption = 'pnlUpgSideBar' 110 | Padding.Left = 4 111 | Padding.Right = 4 112 | ShowCaption = False 113 | TabOrder = 1 114 | ExplicitLeft = 670 115 | object sbAddtoSelection: TsSpeedButton 116 | Left = 4 117 | Top = 0 118 | Width = 177 119 | Height = 48 120 | Align = alTop 121 | Caption = 'Add to Selection'#13#10'(Ctrl-A)' 122 | ImageIndex = 1 123 | Images = sCharImageList1 124 | OnClick = sbAddtoSelectionClick 125 | Reflected = True 126 | ExplicitLeft = 8 127 | ExplicitTop = 49 128 | end 129 | end 130 | end 131 | object sPanel2: TsPanel 132 | Left = 0 133 | Top = 394 134 | Width = 435 135 | Height = 228 136 | Align = alClient 137 | Caption = 'sPanel2' 138 | TabOrder = 2 139 | ExplicitWidth = 856 140 | object lvInstall: TsListView 141 | Left = 1 142 | Top = 1 143 | Width = 248 144 | Height = 226 145 | BevelInner = bvNone 146 | BevelOuter = bvNone 147 | Align = alClient 148 | Checkboxes = True 149 | Columns = < 150 | item 151 | Caption = 'Description' 152 | MinWidth = 200 153 | Width = 200 154 | end 155 | item 156 | Caption = 'ID' 157 | Width = 78 158 | end 159 | item 160 | Caption = 'Version' 161 | Width = 77 162 | end 163 | item 164 | Caption = 'Correspondance' 165 | Width = 77 166 | end 167 | item 168 | Caption = 'Source' 169 | Width = 77 170 | end> 171 | RowSelect = True 172 | TabOrder = 0 173 | ViewStyle = vsReport 174 | ExplicitWidth = 669 175 | end 176 | object sPanel3: TsPanel 177 | Left = 249 178 | Top = 1 179 | Width = 185 180 | Height = 226 181 | Align = alRight 182 | BevelOuter = bvNone 183 | Caption = 'pnlUpgSideBar' 184 | Padding.Left = 4 185 | Padding.Right = 4 186 | ShowCaption = False 187 | TabOrder = 1 188 | ExplicitLeft = 670 189 | object sbInstallRun: TsSpeedButton 190 | Left = 4 191 | Top = 48 192 | Width = 177 193 | Height = 48 194 | Align = alTop 195 | Caption = 'Install Selected'#13#10'(F8)' 196 | ImageIndex = 0 197 | Images = sCharImageList1 198 | Spacing = 15 199 | OnClick = btnInstallRunClick 200 | Reflected = True 201 | ExplicitLeft = 178 202 | ExplicitTop = 41 203 | end 204 | object sbRemovefromSelection: TsSpeedButton 205 | Left = 4 206 | Top = 0 207 | Width = 177 208 | Height = 48 209 | Align = alTop 210 | Caption = 'Remove Selected'#13#10'(Ctrl-R)' 211 | ImageIndex = 2 212 | Images = sCharImageList1 213 | OnClick = sbRemovefromSelectionClick 214 | Reflected = True 215 | ExplicitLeft = 8 216 | ExplicitTop = 8 217 | end 218 | end 219 | end 220 | object spnl1: TsPanel 221 | Left = 0 222 | Top = 353 223 | Width = 435 224 | Height = 41 225 | Align = alTop 226 | Caption = 'spnl1' 227 | ShowCaption = False 228 | TabOrder = 3 229 | ExplicitWidth = 856 230 | object spdbtn1: TsSpeedButton 231 | Left = 1 232 | Top = 1 233 | Width = 433 234 | Height = 39 235 | Align = alClient 236 | ImageIndex = 4 237 | Images = sCharImageList1 238 | OnClick = spdbtn1Click 239 | ExplicitLeft = 392 240 | ExplicitTop = 16 241 | ExplicitWidth = 23 242 | ExplicitHeight = 22 243 | end 244 | end 245 | end 246 | object pnlTitleToolBar: TsPanel 247 | Left = 0 248 | Top = 0 249 | Width = 435 250 | Height = 24 251 | Align = alTop 252 | Alignment = taLeftJustify 253 | BevelOuter = bvNone 254 | Caption = 'Search Packages' 255 | Color = 12615680 256 | StyleElements = [seFont, seBorder] 257 | ParentBackground = False 258 | TabOrder = 1 259 | ExplicitWidth = 856 260 | end 261 | object dcSearch1: TDosCommand 262 | InputToOutput = False 263 | MaxTimeAfterBeginning = 0 264 | MaxTimeAfterLastOutput = 0 265 | OnCharDecoding = dcSearch1CharDecoding 266 | OnNewLine = dcSearch1NewLine 267 | Left = 320 268 | Top = 272 269 | end 270 | object sFrameAdapter1: TsFrameAdapter 271 | Left = 577 272 | Top = 385 273 | end 274 | object sCharImageList1: TsCharImageList 275 | EmbeddedFonts = < 276 | item 277 | FontName = 'FontAwesome' 278 | FontData = {} 279 | end> 280 | Items = < 281 | item 282 | Char = 61465 283 | Color = -5344256 284 | end 285 | item 286 | Char = 61543 287 | Color = -14121702 288 | end 289 | item 290 | Char = 61544 291 | Color = -16777054 292 | end 293 | item 294 | Char = 61671 295 | Color = -16757684 296 | end 297 | item 298 | ScalingFactor = 1.160000000000000000 299 | AddedSize = 58 300 | Char = 61539 301 | AddedChar = 61538 302 | AddedFontName = 'FontAwesome' 303 | Color = 65344 304 | AddedColor = clRed 305 | end> 306 | Left = 513 307 | Top = 393 308 | Bitmap = {} 309 | end 310 | object ActionList1: TActionList 311 | Left = 551 312 | Top = 313 313 | object InstallSelected: TAction 314 | Caption = 'Install Selected' 315 | ShortCut = 119 316 | OnExecute = InstallSelectedExecute 317 | end 318 | object AddChecked: TAction 319 | Caption = 'AddChecked' 320 | ShortCut = 16449 321 | OnExecute = AddCheckedExecute 322 | end 323 | object RemoveSelected: TAction 324 | Caption = 'RemoveSelected' 325 | ShortCut = 16466 326 | OnExecute = RemoveSelectedExecute 327 | end 328 | end 329 | end 330 | -------------------------------------------------------------------------------- /uFrameSearch.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/uFrameSearch.pas -------------------------------------------------------------------------------- /uFrameUpgrade.dfm: -------------------------------------------------------------------------------- 1 | inherited frameUpgrade: TframeUpgrade 2 | Left = 0 3 | Top = 0 4 | ClientHeight = 445 5 | ClientWidth = 626 6 | Color = clBtnFace 7 | Font.Charset = DEFAULT_CHARSET 8 | Font.Color = clWindowText 9 | Font.Height = -12 10 | Font.Name = 'Segoe UI' 11 | Font.Style = [] 12 | TextHeight = 15 13 | object ListView1: TListView 14 | Left = 0 15 | Top = 0 16 | Width = 626 17 | Height = 445 18 | Align = alClient 19 | BevelInner = bvNone 20 | Columns = < 21 | item 22 | AutoSize = True 23 | Caption = 'Description' 24 | MinWidth = 200 25 | end 26 | item 27 | AutoSize = True 28 | Caption = 'ID' 29 | end 30 | item 31 | AutoSize = True 32 | Caption = 'Version' 33 | end 34 | item 35 | AutoSize = True 36 | Caption = 'Available' 37 | end 38 | item 39 | AutoSize = True 40 | Caption = 'Source' 41 | end> 42 | GridLines = True 43 | RowSelect = True 44 | TabOrder = 0 45 | ViewStyle = vsReport 46 | ExplicitWidth = 624 47 | ExplicitHeight = 441 48 | end 49 | end 50 | -------------------------------------------------------------------------------- /uFrameUpgrade.pas: -------------------------------------------------------------------------------- 1 | unit uFrameUpgrade; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, 7 | Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, uFrameBase; 8 | 9 | type 10 | TframeUpgrade = class(TFrmBase) 11 | ListView1: TListView; 12 | private 13 | { Private declarations } 14 | public 15 | { Public declarations } 16 | end; 17 | 18 | implementation 19 | 20 | {$R *.dfm} 21 | 22 | end. 23 | -------------------------------------------------------------------------------- /uFrameUpgrade2.dfm: -------------------------------------------------------------------------------- 1 | inherited frmHeritee: TfrmHeritee 2 | OnResize = FrameResize 3 | object pnlUpgMain: TsPanel 4 | Left = 0 5 | Top = 24 6 | Width = 640 7 | Height = 456 8 | Align = alClient 9 | Caption = 'pnlUpgMain' 10 | ShowCaption = False 11 | TabOrder = 0 12 | object ListView1: TsListView 13 | Left = 1 14 | Top = 1 15 | Width = 511 16 | Height = 454 17 | BevelInner = bvNone 18 | BevelOuter = bvNone 19 | Align = alClient 20 | Checkboxes = True 21 | Columns = < 22 | item 23 | Caption = 'Description' 24 | MinWidth = 200 25 | Width = 200 26 | end 27 | item 28 | Caption = 'ID' 29 | Width = 79 30 | end 31 | item 32 | Caption = 'Version' 33 | Width = 76 34 | end 35 | item 36 | Caption = 'Available' 37 | Width = 76 38 | end 39 | item 40 | Caption = 'Source' 41 | Width = 76 42 | end> 43 | RowSelect = True 44 | TabOrder = 0 45 | ViewStyle = vsReport 46 | end 47 | object pnlUpgSideBar: TsPanel 48 | Left = 512 49 | Top = 1 50 | Width = 127 51 | Height = 454 52 | Align = alRight 53 | BevelOuter = bvNone 54 | Caption = 'pnlUpgSideBar' 55 | ShowCaption = False 56 | TabOrder = 1 57 | object sbUgRun: TsSpeedButton 58 | Left = 0 59 | Top = 398 60 | Width = 127 61 | Height = 56 62 | Align = alBottom 63 | Caption = 'Upgrade Selected'#13#10'(F8)' 64 | ImageIndex = 2 65 | Images = sCharImageList1 66 | OnClick = sbUgRunClick 67 | ExplicitLeft = 356 68 | ExplicitTop = 113 69 | ExplicitWidth = 177 70 | end 71 | object sbSelectAll: TsSpeedButton 72 | Left = 0 73 | Top = 41 74 | Width = 127 75 | Height = 56 76 | Align = alTop 77 | Caption = 'Select All'#13#10'(F5)' 78 | ImageIndex = 0 79 | Images = sCharImageList1 80 | OnClick = sbSelectAllClick 81 | ExplicitLeft = 356 82 | ExplicitTop = 113 83 | ExplicitWidth = 177 84 | end 85 | object pnlUpgTopSide: TsPanel 86 | Left = 0 87 | Top = 0 88 | Width = 127 89 | Height = 41 90 | Align = alTop 91 | BevelOuter = bvNone 92 | Caption = 'pnlUpgTopSide' 93 | ShowCaption = False 94 | TabOrder = 0 95 | end 96 | end 97 | end 98 | object pnlTitleToolBar: TsPanel 99 | Left = 0 100 | Top = 0 101 | Width = 640 102 | Height = 24 103 | Align = alTop 104 | Alignment = taLeftJustify 105 | BevelOuter = bvNone 106 | Caption = 'Upgradable Packages' 107 | Color = 12615680 108 | StyleElements = [seFont, seBorder] 109 | ParentBackground = False 110 | TabOrder = 1 111 | end 112 | object actlstUpgrade: TActionList 113 | Left = 568 114 | Top = 305 115 | object actSelectAll: TAction 116 | Caption = 'actSelectAll' 117 | ShortCut = 116 118 | OnExecute = actSelectAllExecute 119 | end 120 | object actUpgrade: TAction 121 | Caption = 'actUpgrade' 122 | ShortCut = 119 123 | OnExecute = actUpgradeExecute 124 | end 125 | end 126 | object sCharImageList1: TsCharImageList 127 | EmbeddedFonts = < 128 | item 129 | FontName = 'FontAwesome' 130 | FontData = {} 131 | end> 132 | Items = < 133 | item 134 | Char = 61510 135 | Color = clLime 136 | end 137 | item 138 | Char = 61590 139 | Color = clRed 140 | end 141 | item 142 | Char = 61573 143 | Color = clLime 144 | end> 145 | Left = 520 146 | Top = 353 147 | Bitmap = {} 148 | end 149 | end 150 | -------------------------------------------------------------------------------- /uFrameUpgrade2.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/uFrameUpgrade2.pas -------------------------------------------------------------------------------- /uMain.pas: -------------------------------------------------------------------------------- 1 | unit uMain; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, 7 | Winapi.Messages, 8 | System.Notification, 9 | System.SysUtils, 10 | System.Variants, 11 | System.IOUtils, 12 | System.Classes, 13 | System.Types, 14 | System.DateUtils, 15 | Vcl.Graphics, 16 | Vcl.Controls, 17 | Vcl.Forms, 18 | Vcl.Dialogs, 19 | Vcl.StdCtrls, 20 | System.StrUtils, 21 | System.RegularExpressions, 22 | uConst, 23 | Vcl.CheckLst, 24 | SynEdit, 25 | DosCommand, 26 | Vcl.WinXCtrls, 27 | Vcl.ExtCtrls, 28 | Vcl.Buttons, 29 | Vcl.ComCtrls, 30 | uFrameUpgrade2, 31 | uFrameBase, 32 | uFrameList, 33 | uFrameSearch, 34 | uFrameConfig, 35 | System.ImageList, 36 | Vcl.ImgList, 37 | System.Actions, 38 | Vcl.ActnList, 39 | sSkinProvider, 40 | sSkinManager, 41 | acAlphaImageList, 42 | sSpeedButton, 43 | sLabel, 44 | acFontStore, 45 | sPanel, 46 | Vcl.Menus, 47 | JvComponentBase, 48 | JvBalloonHint, 49 | JvTrayIcon, 50 | udlgClose; 51 | 52 | type 53 | TArg = reference to procedure(const Arg: T); 54 | 55 | TfMain = class(TForm) 56 | AI1: TActivityIndicator; 57 | DosCommand1: TDosCommand; 58 | pnlToolbar: TsPanel; 59 | pnlFooter: TPanel; 60 | pnlMain: TsPanel; 61 | actlst1: TActionList; 62 | actSearch: TAction; 63 | actList: TAction; 64 | actUpgrade: TAction; 65 | actQuit: TAction; 66 | sSkinManager1: TsSkinManager; 67 | sSkinProvider1: TsSkinProvider; 68 | sCharImageList1: TsCharImageList; 69 | sSpeedButton1: TsSpeedButton; 70 | sSpeedButton2: TsSpeedButton; 71 | sbQuit: TsSpeedButton; 72 | lblWingetVersion: TsLabelFX; 73 | sbConfig: TsSpeedButton; 74 | actConfig: TAction; 75 | lblScoopVersion: TsLabelFX; 76 | pmTray: TPopupMenu; 77 | W1: TMenuItem; 78 | WingetHelper1: TMenuItem; 79 | S1: TMenuItem; 80 | SearchPackages1: TMenuItem; 81 | N1: TMenuItem; 82 | N2: TMenuItem; 83 | sbUpgrade: TsSpeedButton; 84 | sSpeedButton3: TsSpeedButton; 85 | pmUpdatables: TMenuItem; 86 | dcupgradeSearch: TDosCommand; 87 | Timer1: TTimer; 88 | TrayIcon1: TTrayIcon; 89 | NotificationCenter1: TNotificationCenter; 90 | procedure DosCommand1NewLine(ASender: TObject; const ANewLine: string; AOutputType: TOutputType); 91 | procedure btnQuitClick(Sender: TObject); 92 | function DosCommand1CharDecoding(ASender: TObject; ABuf: TStream): string; 93 | procedure DosCommand1ExecuteError(ASender: TObject; AE: Exception; var AHandled: Boolean); 94 | procedure btnSearchClick(Sender: TObject); 95 | procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); 96 | procedure ygBtnSearchClick(Sender: TObject); 97 | procedure ygBtnQuitClick(Sender: TObject); 98 | procedure ygBtnListClick(Sender: TObject); 99 | procedure ygBtnUpgradeClick(Sender: TObject); 100 | procedure btnListClick(Sender: TObject); 101 | procedure btnUpgradeClick(Sender: TObject); 102 | procedure actQuitExecute(Sender: TObject); 103 | procedure actUpgradeExecute(Sender: TObject); 104 | procedure actListExecute(Sender: TObject); 105 | procedure actSearchExecute(Sender: TObject); 106 | procedure FormCreate(Sender: TObject); 107 | procedure sbQuitClick(Sender: TObject); 108 | procedure sSpeedButton2Click(Sender: TObject); 109 | procedure sSpeedButton1Click(Sender: TObject); 110 | procedure actConfigExecute(Sender: TObject); 111 | procedure sbConfigClick(Sender: TObject); 112 | procedure N2Click(Sender: TObject); 113 | procedure TrayIcon1DblClick(Sender: TObject); 114 | procedure S1Click(Sender: TObject); 115 | procedure SearchPackages1Click(Sender: TObject); 116 | procedure sbUpgradeClick(Sender: TObject); 117 | procedure sSpeedButton3Click(Sender: TObject); 118 | procedure W1Click(Sender: TObject); 119 | procedure Timer1Timer(Sender: TObject); 120 | procedure dcupgradeSearchNewLine(ASender: TObject; const ANewLine: string; AOutputType: TOutputType); 121 | procedure pmUpdatablesClick(Sender: TObject); 122 | procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); 123 | procedure FormShow(Sender: TObject); 124 | private 125 | { Private declarations } 126 | procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND; 127 | function makeUpgList(listIn: TStrings): tStrings; 128 | procedure GetVersion(var m: tMessage); message WM_GETWINGETVERSION; 129 | procedure StartSearch(var m: tMessage); message WM_STARTSEARCH; 130 | procedure StartList(var m: tMessage); message WM_STARTLIST; 131 | procedure taskSearch(Sender: TObject); 132 | procedure taskList(Sender: TObject); 133 | procedure taskUpgrade(Sender: TObject); 134 | procedure popup; 135 | procedure GetUpgradeList(var Msg : TMessage); message WM_GETUPGRADELIST; 136 | procedure ListUpgradeTerminated(Sender : TObject); 137 | procedure HideMain(var msg : TMessage); message WM_HIDEMAIN; 138 | public 139 | { Public declarations } 140 | lOutPut: tStrings; 141 | lOutPutUpg : tStrings; 142 | aFrame: TfrmBase; 143 | procedure upgradeTerminated(Sender: TObject); 144 | procedure upgradeAutoTerminated(Sender : TObject); 145 | procedure versionTerminated(Sender: TObject); 146 | procedure listTerminated(Sender: TObject); 147 | procedure LVSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); 148 | procedure ActivitySet(bActive: Boolean); 149 | procedure Show2(Sender : TObject); 150 | end; 151 | 152 | var 153 | fMain: TfMain; 154 | 155 | implementation 156 | 157 | {$R *.dfm} 158 | 159 | procedure TfMain.actConfigExecute(Sender: TObject); 160 | begin 161 | if aFrame <> Nil then 162 | aFrame.Free; 163 | 164 | aFrame := TfrmConfig.Create(pnlMain); 165 | 166 | aFrame.Parent := pnlMain; 167 | aFrame.Align := alClient; 168 | TfrmConfig(aFrame).loadparams; 169 | end; 170 | 171 | procedure TfMain.ActivitySet(bActive: Boolean); 172 | begin 173 | AI1.Animate := bActive; 174 | end; 175 | 176 | procedure TfMain.actListExecute(Sender: TObject); 177 | begin 178 | taskList(Sender); 179 | end; 180 | 181 | procedure TfMain.actQuitExecute(Sender: TObject); 182 | begin 183 | Close; 184 | end; 185 | 186 | procedure TfMain.actSearchExecute(Sender: TObject); 187 | begin 188 | taskSearch(Sender); 189 | end; 190 | 191 | procedure TfMain.actUpgradeExecute(Sender: TObject); 192 | begin 193 | taskUpgrade(Sender); 194 | end; 195 | 196 | procedure TfMain.btnListClick(Sender: TObject); 197 | begin 198 | taskList(Sender); 199 | end; 200 | 201 | procedure TfMain.btnQuitClick(Sender: TObject); 202 | begin 203 | Close; 204 | end; 205 | 206 | procedure TfMain.btnSearchClick(Sender: TObject); 207 | begin 208 | taskSearch(Sender); 209 | end; 210 | 211 | procedure TfMain.btnUpgradeClick(Sender: TObject); 212 | begin 213 | taskUpgrade(Sender); 214 | end; 215 | 216 | procedure TfMain.dcupgradeSearchNewLine(ASender: TObject; const ANewLine: string; AOutputType: TOutputType); 217 | begin 218 | if ANewLine.IndexOf(Chr(08)) = -1 then 219 | lOutPutUpg.Add(ANewLine); 220 | end; 221 | 222 | function TfMain.DosCommand1CharDecoding(ASender: TObject; ABuf: TStream): string; 223 | var 224 | pBytes: TBytes; 225 | iLength: Integer; 226 | begin 227 | iLength := ABuf.Size; 228 | if iLength > 0 then 229 | begin 230 | SetLength(pBytes, iLength); 231 | ABuf.Read(pBytes, iLength); 232 | try 233 | result := tEncoding.UTF8.GetString(pBytes); 234 | except 235 | result := ''; 236 | end; 237 | end 238 | else 239 | result := ''; 240 | end; 241 | 242 | procedure TfMain.DosCommand1ExecuteError(ASender: TObject; AE: Exception; var AHandled: Boolean); 243 | begin 244 | AHandled := True; 245 | end; 246 | 247 | procedure TfMain.DosCommand1NewLine(ASender: TObject; const ANewLine: string; AOutputType: TOutputType); 248 | begin 249 | if ANewLine.IndexOf(Chr(08)) = -1 then 250 | lOutPut.Add(ANewLine); 251 | end; 252 | 253 | procedure TfMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean); 254 | var 255 | frmCloseDlg : TfrmCloseDlg; 256 | begin 257 | frmCloseDlg := TfrmCloseDlg.Create(Self); 258 | CanClose := (frmCloseDlg.showModal = mrNo); 259 | frmCloseDlg.Free; 260 | if not CanClose then 261 | Hide; 262 | end; 263 | 264 | procedure TfMain.FormCreate(Sender: TObject); 265 | begin 266 | lOutPut := tStringList.Create; 267 | lOutPutUpg := tStringList.Create; 268 | Timer1.Interval := pParams.CheckUpdatesInterval * 60 * 1000; 269 | Timer1.Enabled := pParams.AutoCheckUpdates; 270 | end; 271 | 272 | procedure TfMain.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); 273 | var 274 | aComponent: TComponent; 275 | begin 276 | // 277 | if ssAlt in Shift then 278 | if Key = 80 then 279 | begin 280 | removekey; 281 | if (aFrame <> Nil) then 282 | begin 283 | if aFrame is TfrmSearch then 284 | begin 285 | TfrmSearch(aFrame).edtPackageName.SetFocus; 286 | end; 287 | end; 288 | end; 289 | end; 290 | 291 | procedure TfMain.FormShow(Sender: TObject); 292 | begin 293 | PostMessage(fMain.handle, WM_GETWINGETVERSION, 0, 0); 294 | PostMessage(fMain.handle, WM_GETUPGRADELIST, 0, 0); 295 | end; 296 | 297 | procedure TfMain.GetUpgradeList(var Msg: TMessage); 298 | begin 299 | if not dcupgradeSearch.IsRunning then 300 | begin 301 | lOutPutUpg.clear; 302 | Timer1.Enabled := False; 303 | dcupgradeSearch.CommandLine := tWingetcommand.Upgrade; 304 | dcupgradeSearch.OnTerminated := upgradeAutoTerminated; 305 | dcupgradeSearch.Execute; 306 | end; 307 | 308 | end; 309 | 310 | procedure TfMain.GetVersion(var m: tMessage); 311 | begin 312 | if not DosCommand1.IsRunning then 313 | begin 314 | DosCommand1.CommandLine := tWingetcommand.version; 315 | DosCommand1.OnTerminated := versionTerminated; 316 | DosCommand1.Execute; 317 | end; 318 | end; 319 | 320 | procedure TfMain.HideMain(var msg: TMessage); 321 | begin 322 | if pParams.StartMinimized then 323 | Hide; 324 | end; 325 | 326 | procedure TfMain.listTerminated(Sender: TObject); 327 | var 328 | i, iCol: Integer; 329 | liste: TListItems; 330 | Item: TListItem; 331 | sLine: string; 332 | sString: string; 333 | aColumn: tColumnClass; 334 | lOutClean: tStrings; 335 | aWingetPackage: tWingetPackage; 336 | begin 337 | i := 0; 338 | aFrame := TfrmList.Create(pnlMain); 339 | aFrame.Parent := pnlMain; 340 | aFrame.Align := alClient; 341 | TfrmList(aFrame).Init; 342 | lOutClean := makeUpgList(lOutPut); 343 | while i <= lOutClean.Count - 1 do 344 | begin 345 | sLine := lOutClean[i]; 346 | aWingetPackage := tWingetPackage.Create(sLine, ptList); 347 | TfrmList(aFrame).addItem(aWingetPackage); 348 | TfrmList(aFrame).AddFilterCB(aWingetPackage.getField('source')); 349 | inc(i); 350 | end; 351 | 352 | liste := TfrmList(aFrame).ListView1.Items; 353 | 354 | tGridConfig.MakeColumns(TfrmList(aFrame).ListView1); 355 | 356 | TfrmList(aFrame).setupColumnHeaders; 357 | tfrmList(aFrame).filterWinget; 358 | TfrmList(aFrame).ApplyFilter; 359 | TfrmList(aFrame).ListView1.OnSelectItem := LVSelectItem; 360 | PostMessage(aFrame.handle, WM_FRAMERESIZE, 0, 0); 361 | ActivitySet(False); 362 | end; 363 | 364 | procedure TfMain.ListUpgradeTerminated(Sender: TObject); 365 | begin 366 | // 367 | end; 368 | 369 | procedure TfMain.LVSelectItem(Sender: TObject; Item: TListItem; Selected: Boolean); 370 | var 371 | aWingetPackage: tWingetPackage; 372 | begin 373 | if Selected then 374 | if (Item.Data <> Nil) then 375 | begin 376 | aWingetPackage := tWingetPackage(Item.Data); 377 | end; 378 | end; 379 | 380 | function TfMain.makeUpgList(listIn: TStrings): tStrings; 381 | var 382 | sHeaders: string; 383 | ANewLine: string; 384 | iLine: Integer; 385 | bClean: Boolean; 386 | begin 387 | result := tStringList.Create; 388 | iLine := 0; 389 | bClean := False; 390 | while iLine <= listIn.Count - 1 do 391 | begin 392 | ANewLine := listIn[iLine]; 393 | if TRegEx.IsMatch(ANewLine, '----') then 394 | begin 395 | bClean := True; 396 | sHeaders := listIn[iLine - 1]; 397 | makeUpgradeDictonary(sHeaders); 398 | end 399 | else if bClean then 400 | result.Add(ANewLine); 401 | inc(iLine); 402 | end; 403 | end; 404 | 405 | procedure TfMain.N2Click(Sender: TObject); 406 | begin 407 | Close; 408 | end; 409 | 410 | procedure TfMain.popup; 411 | var 412 | MyNotification: TNotification; 413 | begin 414 | MyNotification := NotificationCenter1.CreateNotification; //Creates the notification 415 | try 416 | MyNotification.Name := 'Winget Helper Notification'; //Defines the name of the notification. 417 | MyNotification.Title := 'Winget Helper'; //Defines the name that appears when the notification is presented. 418 | MyNotification.AlertBody := Format('New Upgrades availables (%d)',[lListUpdates.count]); //Defines the body of the notification that appears below the title. 419 | MyNotification.EnableSound := True; 420 | 421 | NotificationCenter1.PresentNotification(MyNotification); //Presents the notification on the screen. 422 | finally 423 | MyNotification.Free; //Frees the variable 424 | end; 425 | //JvTrayIcon1.BalloonHint('Winget Hepler', Format('New Upgrades availables (%d)',[lListUpdates.count]), btInfo, 5000, false); 426 | //TrayIcon1.BalloonHint := Format('New Upgrades availables (%d)',[lListUpdates.count]); 427 | //TrayIcon1.BalloonTitle := 'Winget Helper'; 428 | //TrayIcon1.ShowBalloonHint; 429 | end; 430 | 431 | procedure TfMain.S1Click(Sender: TObject); 432 | begin 433 | show; 434 | taskSearch(Sender); 435 | end; 436 | 437 | procedure TfMain.sSpeedButton1Click(Sender: TObject); 438 | begin 439 | taskList(Sender); 440 | end; 441 | 442 | procedure TfMain.sSpeedButton2Click(Sender: TObject); 443 | begin 444 | taskSearch(Sender); 445 | end; 446 | 447 | procedure TfMain.sSpeedButton3Click(Sender: TObject); 448 | begin 449 | Timer1Timer(Sender); 450 | end; 451 | 452 | procedure TfMain.sbConfigClick(Sender: TObject); 453 | begin 454 | actConfigExecute(Sender); 455 | end; 456 | 457 | procedure TfMain.sbQuitClick(Sender: TObject); 458 | begin 459 | Close; 460 | end; 461 | 462 | procedure TfMain.sbUpgradeClick(Sender: TObject); 463 | begin 464 | taskUpgrade(Sender); 465 | end; 466 | 467 | procedure TfMain.SearchPackages1Click(Sender: TObject); 468 | begin 469 | taskList(Sender); 470 | Show; 471 | end; 472 | 473 | procedure TfMain.Show2(Sender: TObject); 474 | begin 475 | // 476 | end; 477 | 478 | procedure TfMain.StartList(var m: tMessage); 479 | begin 480 | taskList(Nil); 481 | end; 482 | 483 | procedure TfMain.StartSearch(var m: tMessage); 484 | begin 485 | btnSearchClick(Nil); 486 | end; 487 | 488 | procedure TfMain.taskList(Sender: TObject); 489 | begin 490 | ActivitySet(True); 491 | if aFrame <> Nil then 492 | aFrame.Free; 493 | lOutPut.clear; 494 | 495 | DosCommand1.OnTerminated := listTerminated; 496 | DosCommand1.CommandLine := tWingetcommand.List; 497 | DosCommand1.Execute; 498 | end; 499 | 500 | procedure TfMain.taskSearch(Sender: TObject); 501 | begin 502 | if aFrame <> Nil then 503 | aFrame.Free; 504 | 505 | aFrame := TfrmSearch.Create(pnlMain); 506 | 507 | aFrame.Parent := pnlMain; 508 | aFrame.Align := alClient; 509 | TfrmSearch(aFrame).Init; 510 | TfrmSearch(aFrame).activityset := ActivitySet; 511 | end; 512 | 513 | procedure TfMain.taskUpgrade(Sender: TObject); 514 | begin 515 | ActivitySet(True); 516 | if aFrame <> Nil then 517 | aFrame.Free; 518 | 519 | lOutPut.clear; 520 | 521 | aFrame := TfrmHeritee.Create(pnlMain); 522 | aFrame.Parent := pnlMain; 523 | aFrame.Align := alClient; 524 | TfrmHeritee(aFrame).ListView1.OnSelectItem := LVSelectItem; 525 | 526 | DosCommand1.OnTerminated := upgradeTerminated; 527 | DosCommand1.CommandLine := tWingetcommand.Upgrade; 528 | DosCommand1.Execute; 529 | end; 530 | 531 | procedure TfMain.Timer1Timer(Sender: TObject); 532 | begin 533 | //Memo1.Lines.Add('Timer'); 534 | PostMessage(handle, WM_GETUPGRADELIST, 0, 0); 535 | end; 536 | 537 | procedure TfMain.TrayIcon1DblClick(Sender: TObject); 538 | begin 539 | Show; 540 | end; 541 | 542 | procedure TfMain.pmUpdatablesClick(Sender: TObject); 543 | begin 544 | taskUpgrade(Sender); 545 | Show; 546 | end; 547 | 548 | procedure TfMain.upgradeAutoTerminated(Sender: TObject); 549 | var 550 | i, iCol: Integer; 551 | liste: TListItems; 552 | Item: TListItem; 553 | sLine: string; 554 | sString: string; 555 | aColumn: tColumnClass; 556 | lOutClean: tStrings; 557 | aWingetPackage: tWingetPackage; 558 | bNewPack : Boolean; 559 | begin 560 | i := 0; 561 | bNewPack := false; 562 | lOutClean := makeUpgList(lOutPutUpg); 563 | //Memo1.Lines.Add('#### Updates ####'); 564 | while i < lOutClean.Count - 1 do 565 | begin 566 | sLine := lOutClean[i]; 567 | aWingetPackage := tWingetPackage.Create(sLine, ptUpgrade); 568 | //Memo1.Lines.Add(sLine) ; 569 | if lListUpdates.IndexOf(aWingetPackage.getField('id')) = -1 then 570 | begin 571 | 572 | lListUpdates.AddObject(aWingetPackage.getField('id'),aWingetPackage); 573 | bNewPack := True; 574 | end; 575 | inc(i); 576 | end; 577 | ActivitySet(False); 578 | if bNewPack then popup; 579 | pmUpdatables.Caption := Format('Updatables Packages (%d)',[lListUpdates.Count]); 580 | Timer1.Enabled := pParams.AutoCheckUpdates; 581 | end; 582 | 583 | procedure TfMain.upgradeTerminated(Sender: TObject); 584 | var 585 | i, iCol: Integer; 586 | liste: TListItems; 587 | Item: TListItem; 588 | sLine: string; 589 | sString: string; 590 | aColumn: tColumnClass; 591 | lOutClean: tStrings; 592 | aWingetPackage: tWingetPackage; 593 | begin 594 | i := 0; 595 | lOutClean := makeUpgList(loutput); 596 | TfrmHeritee(aFrame).setupColumnHeaders; 597 | liste := TfrmHeritee(aFrame).ListView1.Items; 598 | while i < lOutClean.Count - 1 do 599 | begin 600 | sLine := lOutClean[i]; 601 | aWingetPackage := tWingetPackage.Create(sLine, ptUpgrade); 602 | Item := liste.Add; 603 | Item.Data := aWingetPackage; 604 | iCol := 0; 605 | while iCol <= length(aUpgFields) - 1 do 606 | begin 607 | if (iCol = 0) then 608 | begin 609 | Item.Caption := aWingetPackage.getField(aUpgFields[iCol]); 610 | end 611 | else 612 | begin 613 | Item.SubItems.Add(aWingetPackage.getField(aUpgFields[iCol])); 614 | end; 615 | inc(iCol); 616 | end; 617 | inc(i); 618 | end; 619 | ActivitySet(False); 620 | end; 621 | 622 | procedure TfMain.versionTerminated(Sender: TObject); 623 | begin 624 | lblWingetVersion.Caption := Format('Winget version %s', [lOutPut[0]]); 625 | // Chack if scoop is installed 626 | if TDirectory.Exists(Format('c:\users\%s\scoop', [CurrentUserName])) then 627 | begin 628 | lblScoopVersion.Caption := 'Scoop Installed ' + '💈'; 629 | end 630 | else 631 | begin 632 | lblScoopVersion.Caption := 'Scoop not installed ' + '💈'; 633 | end; 634 | OnShow := nil; 635 | end; 636 | 637 | procedure TfMain.W1Click(Sender: TObject); 638 | begin 639 | Show; 640 | end; 641 | 642 | procedure TfMain.WMSysCommand(var Msg: TWMSysCommand); 643 | begin 644 | if Msg.CmdType = SC_MINIMIZE then 645 | Hide 646 | else 647 | inherited; 648 | end; 649 | 650 | procedure TfMain.ygBtnListClick(Sender: TObject); 651 | begin 652 | taskList(Sender); 653 | end; 654 | 655 | procedure TfMain.ygBtnQuitClick(Sender: TObject); 656 | begin 657 | Close; 658 | end; 659 | 660 | procedure TfMain.ygBtnSearchClick(Sender: TObject); 661 | begin 662 | taskSearch(Sender); 663 | end; 664 | 665 | procedure TfMain.ygBtnUpgradeClick(Sender: TObject); 666 | begin 667 | taskUpgrade(Sender); 668 | end; 669 | 670 | end. 671 | 672 | -------------------------------------------------------------------------------- /uOptions.dfm: -------------------------------------------------------------------------------- 1 | object frmOptions: TfrmOptions 2 | Left = 0 3 | Top = 0 4 | AlphaBlend = True 5 | AlphaBlendValue = 235 6 | BorderStyle = bsSingle 7 | Caption = 'Options' 8 | ClientHeight = 423 9 | ClientWidth = 614 10 | Color = clBtnFace 11 | Font.Charset = DEFAULT_CHARSET 12 | Font.Color = clWindowText 13 | Font.Height = -12 14 | Font.Name = 'Segoe UI' 15 | Font.Style = [] 16 | GlassFrame.Enabled = True 17 | GlassFrame.SheetOfGlass = True 18 | Position = poMainFormCenter 19 | OnShow = FormShow 20 | TextHeight = 15 21 | object sPanel1: TsPanel 22 | Left = 0 23 | Top = 382 24 | Width = 614 25 | Height = 41 26 | Align = alBottom 27 | Caption = 'sPanel1' 28 | ShowCaption = False 29 | TabOrder = 0 30 | object btnClose: TsBitBtn 31 | Left = 500 32 | Top = 1 33 | Width = 113 34 | Height = 39 35 | Align = alRight 36 | Caption = 'Accept' 37 | ImageIndex = 0 38 | Images = sCharImageList1 39 | TabOrder = 0 40 | OnClick = btnCloseClick 41 | end 42 | object sButton1: TsButton 43 | Left = 387 44 | Top = 1 45 | Width = 113 46 | Height = 39 47 | Align = alRight 48 | Caption = 'Cancel' 49 | ImageIndex = 1 50 | Images = sCharImageList1 51 | TabOrder = 1 52 | OnClick = sButton1Click 53 | end 54 | end 55 | object sTabControl1: TsTabControl 56 | Left = 0 57 | Top = 0 58 | Width = 614 59 | Height = 382 60 | Align = alClient 61 | TabOrder = 1 62 | Tabs.Strings = ( 63 | 'General' 64 | 'Winget') 65 | TabIndex = 0 66 | object ckStarMinimized: TsCheckBox 67 | Left = 16 68 | Top = 71 69 | Width = 110 70 | Height = 19 71 | Caption = 'Start Minimized' 72 | TabOrder = 0 73 | end 74 | object ckAutoUpdCheck: TsCheckBox 75 | Left = 16 76 | Top = 96 77 | Width = 186 78 | Height = 19 79 | Caption = 'Automatic Update verification' 80 | TabOrder = 1 81 | OnMouseUp = ckAutoUpdCheckMouseUp 82 | end 83 | object ckStartup: TsCheckBox 84 | Left = 16 85 | Top = 46 86 | Width = 102 87 | Height = 19 88 | Caption = 'Run on Sartup' 89 | TabOrder = 2 90 | OnMouseUp = ckStartupMouseUp 91 | end 92 | object pnlFrequency: TsPanel 93 | Left = 32 94 | Top = 121 95 | Width = 296 96 | Height = 32 97 | Caption = 'pnlFrequency' 98 | ShowCaption = False 99 | TabOrder = 3 100 | object sLabel2: TsLabel 101 | Left = 12 102 | Top = 7 103 | Width = 28 104 | Height = 15 105 | Caption = 'Every' 106 | end 107 | object sLabel1: TsLabel 108 | Left = 237 109 | Top = 7 110 | Width = 43 111 | Height = 15 112 | Caption = 'minutes' 113 | end 114 | object lblMin: TsLabel 115 | Left = 202 116 | Top = 8 117 | Width = 23 118 | Height = 15 119 | Alignment = taRightJustify 120 | AutoSize = False 121 | Caption = '0' 122 | end 123 | object tbInterval: TsTrackBar 124 | Left = 46 125 | Top = 0 126 | Width = 150 127 | Height = 45 128 | Max = 60 129 | Min = 5 130 | ParentShowHint = False 131 | Frequency = 5 132 | Position = 5 133 | PositionToolTip = ptTop 134 | ShowHint = True 135 | ShowSelRange = False 136 | TabOrder = 0 137 | TickStyle = tsNone 138 | OnChange = tbIntervalChange 139 | ShowProgress = True 140 | end 141 | end 142 | end 143 | object sCharImageList1: TsCharImageList 144 | EmbeddedFonts = < 145 | item 146 | FontName = 'FontAwesome' 147 | FontData = {} 148 | end> 149 | Items = < 150 | item 151 | Char = 61452 152 | Color = -7249920 153 | end 154 | item 155 | Char = 61453 156 | Color = clRed 157 | end> 158 | Left = 408 159 | Top = 224 160 | Bitmap = {} 161 | end 162 | end 163 | -------------------------------------------------------------------------------- /uOptions.pas: -------------------------------------------------------------------------------- 1 | unit uOptions; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, 7 | System.Classes, Vcl.Graphics, System.IOUtils, 8 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, sPanel, acNoteBook, 9 | Vcl.ComCtrls, sTabControl, Vcl.StdCtrls, Vcl.Buttons, sBitBtn, 10 | System.ImageList, Vcl.ImgList, acAlphaImageList, sCheckBox, sGroupBox, uConst, 11 | sTrackBar, sLabel, sButton; 12 | 13 | type 14 | TfrmOptions = class(TForm) 15 | sPanel1: TsPanel; 16 | sTabControl1: TsTabControl; 17 | sCharImageList1: TsCharImageList; 18 | btnClose: TsBitBtn; 19 | ckStarMinimized: TsCheckBox; 20 | ckAutoUpdCheck: TsCheckBox; 21 | tbInterval: TsTrackBar; 22 | ckStartup: TsCheckBox; 23 | sLabel1: TsLabel; 24 | sButton1: TsButton; 25 | sLabel2: TsLabel; 26 | pnlFrequency: TsPanel; 27 | lblMin: TsLabel; 28 | procedure btnCloseClick(Sender: TObject); 29 | procedure FormShow(Sender: TObject); 30 | procedure ckStartupMouseUp(Sender: TObject; Button: TMouseButton; 31 | Shift: TShiftState; X, Y: Integer); 32 | procedure tbIntervalChange(Sender: TObject); 33 | procedure ckAutoUpdCheckMouseUp(Sender: TObject; Button: TMouseButton; 34 | Shift: TShiftState; X, Y: Integer); 35 | procedure sButton1Click(Sender: TObject); 36 | private 37 | { Private declarations } 38 | procedure loadParams; 39 | procedure saveParams; 40 | public 41 | { Public declarations } 42 | end; 43 | 44 | var 45 | frmOptions: TfrmOptions; 46 | 47 | implementation 48 | 49 | {$R *.dfm} 50 | 51 | procedure TfrmOptions.btnCloseClick(Sender: TObject); 52 | begin 53 | saveParams; 54 | ModalResult := mrOk; 55 | end; 56 | 57 | procedure TfrmOptions.ckAutoUpdCheckMouseUp(Sender: TObject; 58 | Button: TMouseButton; Shift: TShiftState; X, Y: Integer); 59 | begin 60 | // 61 | pnlFrequency.Visible := ckAutoUpdCheck.Checked; 62 | end; 63 | 64 | procedure TfrmOptions.ckStartupMouseUp(Sender: TObject; Button: TMouseButton; 65 | Shift: TShiftState; X, Y: Integer); 66 | var 67 | sPath: String; 68 | begin 69 | if ckStartup.Checked then 70 | begin 71 | sPath := IncludeTrailingBackslash(TPath.GetDirectoryName(ParamStr(0))); 72 | RunOnStartup('Winget Helper', TPath.Combine(sPath, 73 | 'wingethelper.exe'), False); 74 | end 75 | else 76 | begin 77 | RemoveOnStartup('Winget Helper'); 78 | end; 79 | 80 | end; 81 | 82 | procedure TfrmOptions.FormShow(Sender: TObject); 83 | begin 84 | // 85 | loadParams; 86 | end; 87 | 88 | procedure TfrmOptions.loadParams; 89 | begin 90 | ckStartup.Checked := pPArams.RunOnStartup; 91 | ckStarMinimized.Checked := pParams.StartMinimized; 92 | tbInterval.Position := pParams.CheckUpdatesInterval; 93 | ckAutoUpdCheck.Checked := pParams.AutoCheckUpdates; 94 | 95 | end; 96 | 97 | procedure TfrmOptions.saveParams; 98 | begin 99 | pPArams.SetParamb('RunOnStartUp', ckStartup.Checked); 100 | pPArams.SetParamb('StartMinimized', ckStarMinimized.Checked); 101 | pPArams.saveParams; 102 | end; 103 | 104 | procedure TfrmOptions.sButton1Click(Sender: TObject); 105 | begin 106 | ModalResult := mrCancel; 107 | end; 108 | 109 | procedure TfrmOptions.tbIntervalChange(Sender: TObject); 110 | begin 111 | lblMin.Caption := IntToStr(tbInterval.Position); 112 | end; 113 | 114 | end. 115 | -------------------------------------------------------------------------------- /uRunWinget.dfm: -------------------------------------------------------------------------------- 1 | object fRunWinget: TfRunWinget 2 | Left = 0 3 | Top = 0 4 | Caption = 'Monitor' 5 | ClientHeight = 254 6 | ClientWidth = 697 7 | Color = clBtnFace 8 | Font.Charset = DEFAULT_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -12 11 | Font.Name = 'Segoe UI' 12 | Font.Style = [] 13 | Position = poScreenCenter 14 | OnCreate = FormCreate 15 | OnShow = FormShow 16 | TextHeight = 15 17 | object pnltop: TPanel 18 | Left = 0 19 | Top = 0 20 | Width = 697 21 | Height = 41 22 | Align = alTop 23 | BevelOuter = bvNone 24 | Caption = 'pnltop' 25 | ShowCaption = False 26 | TabOrder = 0 27 | ExplicitWidth = 693 28 | object AI1: TActivityIndicator 29 | Left = 665 30 | Top = 3 31 | IndicatorColor = aicWhite 32 | IndicatorType = aitSectorRing 33 | end 34 | end 35 | object mmo1: TsMemo 36 | Left = 0 37 | Top = 41 38 | Width = 697 39 | Height = 213 40 | Align = alClient 41 | TabOrder = 1 42 | ExplicitWidth = 693 43 | ExplicitHeight = 212 44 | end 45 | object dcRun: TDosCommand 46 | InputToOutput = False 47 | MaxTimeAfterBeginning = 0 48 | MaxTimeAfterLastOutput = 0 49 | OnCharDecoding = dcRunCharDecoding 50 | OnNewLine = dcRunNewLine 51 | OnTerminated = dcRunTerminated 52 | Left = 496 53 | Top = 104 54 | end 55 | end 56 | -------------------------------------------------------------------------------- /uRunWinget.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/uRunWinget.pas -------------------------------------------------------------------------------- /udlgClose.dfm: -------------------------------------------------------------------------------- 1 | object frmCloseDlg: TfrmCloseDlg 2 | Left = 0 3 | Top = 0 4 | BorderStyle = bsNone 5 | Caption = 'frmCloseDlg' 6 | ClientHeight = 127 7 | ClientWidth = 443 8 | Color = clBtnFace 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -12 12 | Font.Name = 'Segoe UI' 13 | Font.Style = [] 14 | Position = poScreenCenter 15 | TextHeight = 15 16 | object sLabelFX1: TsLabelFX 17 | Left = 8 18 | Top = 24 19 | Width = 443 20 | Height = 23 21 | Caption = 'Do you want to minimize the application tu run in background ?' 22 | ParentFont = False 23 | Font.Charset = DEFAULT_CHARSET 24 | Font.Color = clWindowText 25 | Font.Height = -16 26 | Font.Name = 'Segoe UI' 27 | Font.Style = [] 28 | Angle = 0 29 | Shadow.OffsetKeeper.LeftTop = 0 30 | Shadow.OffsetKeeper.RightBottom = 2 31 | end 32 | object sPanel1: TsPanel 33 | Left = 0 34 | Top = 86 35 | Width = 443 36 | Height = 41 37 | Align = alBottom 38 | Caption = 'sPanel1' 39 | Padding.Left = 3 40 | Padding.Top = 3 41 | Padding.Right = 3 42 | Padding.Bottom = 3 43 | ShowCaption = False 44 | TabOrder = 0 45 | ExplicitTop = 192 46 | object sSpeedButton1: TsSpeedButton 47 | Left = 207 48 | Top = 4 49 | Width = 232 50 | Height = 33 51 | Align = alRight 52 | Caption = 'Yes' 53 | ImageIndex = 0 54 | Images = sCharImageList1 55 | Spacing = 25 56 | OnClick = sSpeedButton1Click 57 | ExplicitLeft = 256 58 | ExplicitTop = 1 59 | ExplicitHeight = 39 60 | end 61 | object sSpeedButton2: TsSpeedButton 62 | Left = 4 63 | Top = 4 64 | Width = 203 65 | Height = 33 66 | Align = alClient 67 | Caption = 'No' 68 | ImageIndex = 1 69 | Images = sCharImageList1 70 | Spacing = 25 71 | OnClick = sSpeedButton2Click 72 | ExplicitLeft = -5 73 | ExplicitTop = 1 74 | ExplicitWidth = 209 75 | ExplicitHeight = 39 76 | end 77 | end 78 | object sCharImageList1: TsCharImageList 79 | EmbeddedFonts = < 80 | item 81 | FontName = 'FontAwesome' 82 | FontData = {} 83 | end> 84 | Items = < 85 | item 86 | Char = 61533 87 | Color = clLime 88 | end 89 | item 90 | Char = 61532 91 | Color = clRed 92 | end> 93 | Left = 336 94 | Top = 56 95 | Bitmap = {} 96 | end 97 | end 98 | -------------------------------------------------------------------------------- /udlgClose.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/udlgClose.pas -------------------------------------------------------------------------------- /utestcomponents.dfm: -------------------------------------------------------------------------------- 1 | object Form1: TForm1 2 | Left = 0 3 | Top = 0 4 | Caption = 'Form1' 5 | ClientHeight = 441 6 | ClientWidth = 624 7 | Color = clBtnFace 8 | Font.Charset = ANSI_CHARSET 9 | Font.Color = clWindowText 10 | Font.Height = -19 11 | Font.Name = 'Fixedsys' 12 | Font.Style = [] 13 | TextHeight = 15 14 | object ygtwnbtnYGTwinButton1: tYGTwinButton 15 | Left = 256 16 | Top = 136 17 | Width = 129 18 | Height = 41 19 | Caption = 'Search' 20 | KeyCaption = 'F1' 21 | Pen.Color = clBtnHighlight 22 | Pen.Width = 3 23 | Colors.EnterStart = 6118749 24 | Colors.LeaveStart = clWhite 25 | Colors.DownStart = clBlack 26 | Colors.EnterEnd = clWhite 27 | Colors.LeaveEnd = 6118749 28 | Colors.DownEnd = clWhite 29 | TextColors.EnterStart = clWhite 30 | TextColors.LeaveStart = clBlack 31 | TextColors.DownStart = clBlack 32 | TextColors.EnterEnd = clBlack 33 | TextColors.LeaveEnd = clBlack 34 | TextColors.DownEnd = clBlack 35 | Font.Charset = DEFAULT_CHARSET 36 | Font.Color = clWindowText 37 | Font.Height = -16 38 | Font.Name = 'Segoe UI Light' 39 | Font.Style = [] 40 | State = bsLeave 41 | end 42 | object jvhtbtn1: TJvHTButton 43 | Left = 224 44 | Top = 280 45 | Width = 137 46 | Height = 73 47 | Caption = 'jvhtbtn1' 48 | TabOrder = 1 49 | SuperSubScriptRatio = 0.666666666666666600 50 | end 51 | end 52 | -------------------------------------------------------------------------------- /utestcomponents.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Yves848/WinDel/7655d0badc4f5fae2238335c765f69f8c5ee571e/utestcomponents.pas --------------------------------------------------------------------------------