浏览代码

Updated to use per-monitor DPI awareness.

Martijn Laan 7 年之前
父节点
当前提交
2662bf3705
共有 7 个文件被更改,包括 70 次插入384 次删除
  1. 1 0
      Projects/CompForm.dfm
  2. 38 22
      Projects/CompForm.pas
  3. 1 348
      Projects/CompStartup.dfm
  4. 27 12
      Projects/CompStartup.pas
  5. 二进制
      Projects/Compil32.manifest.res
  6. 2 1
      Projects/Compil32.manifest.txt
  7. 1 1
      whatsnew.htm

+ 1 - 0
Projects/CompForm.dfm

@@ -14,6 +14,7 @@ object CompileForm: TCompileForm
   Menu = MainMenu1
   OldCreateOrder = True
   Position = poDefault
+  OnAfterMonitorDpiChanged = FormAfterMonitorDpiChanged
   OnCloseQuery = FormCloseQuery
   OnKeyDown = FormKeyDown
   OnResize = FormResize

+ 38 - 22
Projects/CompForm.pas

@@ -251,6 +251,8 @@ type
     procedure FSaveEncodingItemClick(Sender: TObject);
     procedure CompilerOutputListDrawItem(Control: TWinControl; Index: Integer;
       Rect: TRect; State: TOwnerDrawState);
+    procedure FormAfterMonitorDpiChanged(Sender: TObject; OldDPI,
+      NewDPI: Integer);
   private
     { Private declarations }
     FCompilerVersion: PCompilerVersionInfo;
@@ -339,6 +341,7 @@ type
     function EvaluateVariableEntry(const DebugEntry: PVariableDebugEntry;
       var Output: String): Integer;
     procedure FindNext;
+    function FromCurrentPPI(const XY: Integer): Integer;
     procedure Go(AStepMode: TStepMode);
     procedure HideError;
     procedure InitializeFindText(Dlg: TFindDialog);
@@ -376,6 +379,7 @@ type
     procedure ShowOpenDialog(const Examples: Boolean);
     procedure StatusMessage(const Kind: TStatusMessageKind; const S: String);
     procedure SyncEditorOptions;
+    function ToCurrentPPI(const XY: Integer): Integer;
     procedure ToggleBreakPoint(Line: Integer);
     procedure UpdateAllLineMarkers;
     procedure UpdateCaption;
@@ -384,6 +388,7 @@ type
     procedure UpdateEditModePanel;
     procedure UpdateLineMarkers(const Line: Integer);
     procedure UpdateNewButtons;
+    procedure UpdateOutputListsItemHeightAndDebugTimeWidth;
     procedure UpdateRunMenu;
     procedure UpdateTargetMenu;
     procedure UpdateThemeData(const Close, Open: Boolean);
@@ -570,16 +575,6 @@ begin
   Result := NewFileExists(PathExtractPath(NewParamStr(0)) + 'iscrypt.dll');
 end;
 
-function ToPPI(const XY: Integer): Integer;
-begin
-  Result := MulDiv(XY, Screen.PixelsPerInch, 96);
-end;
-
-function To96(const XY: Integer): Integer;
-begin
-  Result := MulDiv(XY, 96, Screen.PixelsPerInch);
-end;
-
 { TISScintEdit }
 
 procedure TISScintEdit.CreateWnd;
@@ -803,8 +798,8 @@ constructor TCompileForm.Create(AOwner: TComponent);
       { Note: Don't call UpdateStatusPanelHeight here since it clips to the
         current form height, which hasn't been finalized yet }
 
-      StatusPanel.Height := ToPPI(Ini.ReadInteger('State', 'StatusPanelHeight',
-        (10 * To96(DebugOutputList.ItemHeight) + 4) + To96(TabSet.Height)));
+      StatusPanel.Height := ToCurrentPPI(Ini.ReadInteger('State', 'StatusPanelHeight',
+        (10 * FromCurrentPPI(DebugOutputList.ItemHeight) + 4) + FromCurrentPPI(TabSet.Height)));
     finally
       Ini.Free;
     end;
@@ -902,13 +897,7 @@ begin
 
   FBreakPoints := TList.Create;
 
-  CompilerOutputList.Canvas.Font.Assign(CompilerOutputList.Font);
-  CompilerOutputList.ItemHeight := CompilerOutputList.Canvas.TextHeight('0');
-
-  DebugOutputList.Canvas.Font.Assign(DebugOutputList.Font);
-  FDebugLogListTimeWidth := DebugOutputList.Canvas.TextWidth(Format(
-    '[00%s00%s00%s000]   ', [{$IFDEF IS_DXE}FormatSettings.{$ENDIF}TimeSeparator, {$IFDEF IS_DXE}FormatSettings.{$ENDIF}TimeSeparator, {$IFDEF IS_DXE}FormatSettings.{$ENDIF}DecimalSeparator]));
-  DebugOutputList.ItemHeight := DebugOutputList.Canvas.TextHeight('0');
+  UpdateOutputListsItemHeightAndDebugTimeWidth;
 
   Application.HintShortPause := 0;
   Application.OnException := AppOnException;
@@ -969,7 +958,7 @@ destructor TCompileForm.Destroy;
       Ini.WriteInteger('State', 'WindowRight', WindowPlacement.rcNormalPosition.Right);
       Ini.WriteInteger('State', 'WindowBottom', WindowPlacement.rcNormalPosition.Bottom);
       Ini.WriteBool('State', 'WindowMaximized', WindowState = wsMaximized);
-      Ini.WriteInteger('State', 'StatusPanelHeight', To96(StatusPanel.Height));
+      Ini.WriteInteger('State', 'StatusPanelHeight', FromCurrentPPI(StatusPanel.Height));
       
       { Zoom state }
       Ini.WriteInteger('Options', 'Zoom', Memo.Zoom);
@@ -1001,6 +990,13 @@ begin
     MB_OK or MB_ICONSTOP);
 end;
 
+procedure TCompileForm.FormAfterMonitorDpiChanged(Sender: TObject; OldDPI,
+  NewDPI: Integer);
+begin
+  UpdateOutputListsItemHeightAndDebugTimeWidth;
+  UpdateStatusPanelHeight(StatusPanel.Height);
+end;
+
 procedure TCompileForm.FormCloseQuery(Sender: TObject;
   var CanClose: Boolean);
 begin
@@ -2438,13 +2434,23 @@ procedure TCompileForm.UpdateStatusPanelHeight(H: Integer);
 var
   MinHeight, MaxHeight: Integer;
 begin
-  MinHeight := (3 * DebugOutputList.ItemHeight + ToPPI(4)) + TabSet.Height;
-  MaxHeight := BodyPanel.ClientHeight - ToPPI(48) - SplitPanel.Height;
+  MinHeight := (3 * DebugOutputList.ItemHeight + ToCurrentPPI(4)) + TabSet.Height;
+  MaxHeight := BodyPanel.ClientHeight - ToCurrentPPI(48) - SplitPanel.Height;
   if H > MaxHeight then H := MaxHeight;
   if H < MinHeight then H := MinHeight;
   StatusPanel.Height := H;
 end;
 
+procedure TCompileForm.UpdateOutputListsItemHeightAndDebugTimeWidth;
+begin
+  CompilerOutputList.Canvas.Font.Assign(CompilerOutputList.Font);
+  CompilerOutputList.ItemHeight := CompilerOutputList.Canvas.TextHeight('0');
+
+  DebugOutputList.Canvas.Font.Assign(DebugOutputList.Font);
+  FDebugLogListTimeWidth := DebugOutputList.Canvas.TextWidth(Format('[00%s00%s00%s000]   ', [FormatSettings.TimeSeparator, FormatSettings.TimeSeparator, FormatSettings.DecimalSeparator]));
+  DebugOutputList.ItemHeight := DebugOutputList.Canvas.TextHeight('0');
+end;
+
 procedure TCompileForm.SplitPanelMouseMove(Sender: TObject;
   Shift: TShiftState; X, Y: Integer);
 begin
@@ -4215,6 +4221,16 @@ begin
   ToggleBreakPoint(Memo.CaretLine);
 end;
 
+function TCompileForm.ToCurrentPPI(const XY: Integer): Integer;
+begin
+  Result := MulDiv(XY, CurrentPPI, 96);
+end;
+
+function TCompileForm.FromCurrentPPI(const XY: Integer): Integer;
+begin
+  Result := MulDiv(XY, 96, CurrentPPI);
+end;
+
 {$IFNDEF UNICODE}
 var
   Compil32LeadBytes: TLeadByteSet;

+ 1 - 348
Projects/CompStartup.dfm

@@ -14,6 +14,7 @@ object StartupForm: TStartupForm
   Font.Style = []
   OldCreateOrder = True
   Position = poScreenCenter
+  OnAfterMonitorDpiChanged = FormAfterMonitorDpiChanged
   OnCreate = FormCreate
   PixelsPerInch = 96
   TextHeight = 13
@@ -51,134 +52,8 @@ object StartupForm: TStartupForm
       Width = 16
       Height = 16
       AutoSize = True
-      Picture.Data = {
-        07544269746D617036040000424D360400000000000036000000280000001000
-        000010000000010020000000000000040000C40E0000C40E0000000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        00000000000000000000000000000000000000000000F6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FF0000
-        00000000000000000000000000000000000000000000F6F6F6FF424242FF4242
-        42FF424242FF424242FF424242FF424242FF424242FF424242FFF6F6F6FF0000
-        00000000000000000000000000000000000000000000F6F6F6FF424242FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF424242FFF6F6F6FF0000
-        00000000000000000000000000000000000000000000F6F6F6FF424242FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF424242FFF6F6F6FF0000
-        00000000000000000000000000000000000000000000F6F6F6FF424242FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF424242FFF6F6F6FF0000
-        00000000000000000000000000000000000000000000F6F6F6FF424242FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF424242FFF6F6F6FF0000
-        0000000000000000000000000000F6F6F6FFF6F6F6FFF6F6F6FF424242FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF424242FFF6F6F6FF0000
-        000000000000F6F6F6FFF6F6F6FFF6F6F6FF1A7DC2FFF6F6F6FFF6F6F6FFF6F6
-        F6FFF1EFF0FFF1EFF0FFF1EFF0FF424242FF424242FF868686FFF6F6F6EF0000
-        000000000000F6F6F6FF1A7DC2FFF6F6F6FF1A7DC2FFF6F6F6FF1A7DC2FFF6F6
-        F6FFF1EFF0FFF1EFF0FFF1EFF0FF424242FF868686FFF6F6F6EFF6F6F6300000
-        0000F6F6F6FFF6F6F6FFF6F6F6FF1A7DC2FF1A7DC2FF1A7DC2FFF6F6F6FFF6F6
-        F6FFF6F6F6FF424242FF424242FF868686FFF6F6F6EFF6F6F630000000000000
-        0000F6F6F6FF1A7DC2FF1A7DC2FF1A7DC2FFF6F6F6FF1A7DC2FF1A7DC2FF1A7D
-        C2FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6EFF6F6F63000000000000000000000
-        0000F6F6F6FFF6F6F6FFBFD8E9FF1A7DC2FF1A7DC2FF1A7DC2FFBFD8E9FFF6F6
-        F6FFF6F6F6FF0000000000000000000000000000000000000000000000000000
-        000000000000F6F6F6FF1A7DC2FFF6F6F6FF1A7DC2FFF6F6F6FF1A7DC2FFF6F6
-        F6FF000000000000000000000000000000000000000000000000000000000000
-        000000000000F6F6F6FFF6F6F6FFF6F6F6FF1A7DC2FFF6F6F6FFF6F6F6FFF6F6
-        F6FF000000000000000000000000000000000000000000000000000000000000
-        0000000000000000000000000000F6F6F6FFF6F6F6FFF6F6F6FF000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        0000}
       Transparent = True
     end
-    object NewImage_24: TImage
-      Left = 20
-      Top = 24
-      Width = 16
-      Height = 16
-      AutoSize = True
-      Picture.Data = {
-        07544269746D617036040000424D360400000000000036000000280000001000
-        000010000000010020000000000000040000C40E0000C40E0000000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        00000000000000000000000000000000000000000000F6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FF0000
-        00000000000000000000000000000000000000000000F6F6F6FF424242FF4242
-        42FF424242FF424242FF424242FF424242FF424242FF424242FFF6F6F6FF0000
-        00000000000000000000000000000000000000000000F6F6F6FF424242FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF424242FFF6F6F6FF0000
-        00000000000000000000000000000000000000000000F6F6F6FF424242FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF424242FFF6F6F6FF0000
-        00000000000000000000000000000000000000000000F6F6F6FF424242FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF424242FFF6F6F6FF0000
-        00000000000000000000000000000000000000000000F6F6F6FF424242FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF424242FFF6F6F6FF0000
-        0000000000000000000000000000F6F6F6FFF6F6F6FFF6F6F6FF424242FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF424242FFF6F6F6FF0000
-        000000000000F6F6F6FFF6F6F6FFF6F6F6FF1A7DC2FFF6F6F6FFF6F6F6FFF6F6
-        F6FFF1EFF0FFF1EFF0FFF1EFF0FF424242FF424242FF868686FFF6F6F6EF0000
-        000000000000F6F6F6FF1A7DC2FFF6F6F6FF1A7DC2FFF6F6F6FF1A7DC2FFF6F6
-        F6FFF1EFF0FFF1EFF0FFF1EFF0FF424242FF868686FFF6F6F6EFF6F6F6300000
-        0000F6F6F6FFF6F6F6FFF6F6F6FF1A7DC2FF1A7DC2FF1A7DC2FFF6F6F6FFF6F6
-        F6FFF6F6F6FF424242FF424242FF868686FFF6F6F6EFF6F6F630000000000000
-        0000F6F6F6FF1A7DC2FF1A7DC2FF1A7DC2FFF6F6F6FF1A7DC2FF1A7DC2FF1A7D
-        C2FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6EFF6F6F63000000000000000000000
-        0000F6F6F6FFF6F6F6FFBFD8E9FF1A7DC2FF1A7DC2FF1A7DC2FFBFD8E9FFF6F6
-        F6FFF6F6F6FF0000000000000000000000000000000000000000000000000000
-        000000000000F6F6F6FF1A7DC2FFF6F6F6FF1A7DC2FFF6F6F6FF1A7DC2FFF6F6
-        F6FF000000000000000000000000000000000000000000000000000000000000
-        000000000000F6F6F6FFF6F6F6FFF6F6F6FF1A7DC2FFF6F6F6FFF6F6F6FFF6F6
-        F6FF000000000000000000000000000000000000000000000000000000000000
-        0000000000000000000000000000F6F6F6FFF6F6F6FFF6F6F6FF000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        0000}
-      Transparent = True
-      Visible = False
-    end
-    object NewImage_32: TImage
-      Left = 28
-      Top = 32
-      Width = 16
-      Height = 16
-      AutoSize = True
-      Picture.Data = {
-        07544269746D617036040000424D360400000000000036000000280000001000
-        000010000000010020000000000000040000C40E0000C40E0000000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        00000000000000000000000000000000000000000000F6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FF0000
-        00000000000000000000000000000000000000000000F6F6F6FF424242FF4242
-        42FF424242FF424242FF424242FF424242FF424242FF424242FFF6F6F6FF0000
-        00000000000000000000000000000000000000000000F6F6F6FF424242FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF424242FFF6F6F6FF0000
-        00000000000000000000000000000000000000000000F6F6F6FF424242FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF424242FFF6F6F6FF0000
-        00000000000000000000000000000000000000000000F6F6F6FF424242FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF424242FFF6F6F6FF0000
-        00000000000000000000000000000000000000000000F6F6F6FF424242FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF424242FFF6F6F6FF0000
-        0000000000000000000000000000F6F6F6FFF6F6F6FFF6F6F6FF424242FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF424242FFF6F6F6FF0000
-        000000000000F6F6F6FFF6F6F6FFF6F6F6FF1A7DC2FFF6F6F6FFF6F6F6FFF6F6
-        F6FFF1EFF0FFF1EFF0FFF1EFF0FF424242FF424242FF868686FFF6F6F6EF0000
-        000000000000F6F6F6FF1A7DC2FFF6F6F6FF1A7DC2FFF6F6F6FF1A7DC2FFF6F6
-        F6FFF1EFF0FFF1EFF0FFF1EFF0FF424242FF868686FFF6F6F6EFF6F6F6300000
-        0000F6F6F6FFF6F6F6FFF6F6F6FF1A7DC2FF1A7DC2FF1A7DC2FFF6F6F6FFF6F6
-        F6FFF6F6F6FF424242FF424242FF868686FFF6F6F6EFF6F6F630000000000000
-        0000F6F6F6FF1A7DC2FF1A7DC2FF1A7DC2FFF6F6F6FF1A7DC2FF1A7DC2FF1A7D
-        C2FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6EFF6F6F63000000000000000000000
-        0000F6F6F6FFF6F6F6FFBFD8E9FF1A7DC2FF1A7DC2FF1A7DC2FFBFD8E9FFF6F6
-        F6FFF6F6F6FF0000000000000000000000000000000000000000000000000000
-        000000000000F6F6F6FF1A7DC2FFF6F6F6FF1A7DC2FFF6F6F6FF1A7DC2FFF6F6
-        F6FF000000000000000000000000000000000000000000000000000000000000
-        000000000000F6F6F6FFF6F6F6FFF6F6F6FF1A7DC2FFF6F6F6FFF6F6F6FFF6F6
-        F6FF000000000000000000000000000000000000000000000000000000000000
-        0000000000000000000000000000F6F6F6FFF6F6F6FFF6F6F6FF000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        0000}
-      Transparent = True
-      Visible = False
-    end
     object EmptyRadioButton: TRadioButton
       Left = 40
       Top = 16
@@ -213,229 +88,7 @@ object StartupForm: TStartupForm
       Width = 16
       Height = 16
       AutoSize = True
-      Picture.Data = {
-        07544269746D617036040000424D360400000000000036000000280000001000
-        000010000000010020000000000000040000C40E0000C40E0000000000000000
-        000000000000F6F6F610F6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
-        F6FF00000000F6F6F670C8DEECFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6
-        DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFFB6D3E6FF7AB6DCFFF6F6
-        F6FF00000000F6F6F6DF91C2E1FF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6
-        DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF89BDDFFFF1EFF0FF7AB6DCFFF6F6
-        F6FFF6F6F640DFEAF1FF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6
-        DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFFD3E1EBFFF1EFF0FF7AB6DCFFF6F6
-        F6FFF6F6F69FA9CEE6FF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6
-        DCFF7AB6DCFF7AB6DCFF7AB6DCFF9FC8E2FFF1EFF0FFF1EFF0FF7AB6DCFFF6F6
-        F6FFF6F6F6FF82BADEFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6
-        DCFF7AB6DCFF7AB6DCFF81BADDFFE2E8EEFFF1EFF0FFF1EFF0FF7AB6DCFFF6F6
-        F6FFF6F6F6FFF6F6F6FF81BADDFFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF7AB6DCFFF6F6
-        F6FF00000000F6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF7AB6DCFFF6F6
-        F6FFF6F6F68FE0CDB9FFA25D0FFF9C5300FFF6F6F6FFF6F6F6FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF7AB6DCFFF6F6
-        F6FFF6F6F6FFA25D0FFFBE905CFFEBE2D7FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
-        F6FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF7AB6DCFFF6F6
-        F6FFF6F6F6FF9C5300FFE0CDB9FFF6F6F6FFBE905CFF9C5300FFBE905CFFF6F6
-        F6FFF6F6F6FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF7AB6DCFFF6F6
-        F6FFF6F6F6FFA25D0FFFBE905CFFEBE2D7FFF6F6F6FFBE905CFF9C5300FFAD72
-        2EFFF6F6F6FF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFFF6F6
-        F6FFF6F6F68FDAC3A9FFA25D0FFF9C5300FF9C5300FF9C5300FF9C5300FF9C53
-        00FFCFAF8AFFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
-        F6FF00000000F6F6F68FF6F6F6FFF6F6F6FFF0ECE7FFAD722EFF9C5300FFBE90
-        5CFFF6F6F6EFF6F6F63000000000000000000000000000000000000000000000
-        00000000000000000000F6F6F630F6F6F6EFAD722EFF9C5300FFBE905CFFF6F6
-        F6EFF6F6F6300000000000000000000000000000000000000000000000000000
-        000000000000F6F6F630F6F6F6EFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6EFF6F6
-        F630000000000000000000000000000000000000000000000000000000000000
-        0000}
-      Transparent = True
-    end
-    object OpenImage_24: TImage
-      Left = 20
-      Top = 27
-      Width = 16
-      Height = 16
-      AutoSize = True
-      Picture.Data = {
-        07544269746D617036040000424D360400000000000036000000280000001000
-        000010000000010020000000000000040000C40E0000C40E0000000000000000
-        000000000000F6F6F610F6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
-        F6FF00000000F6F6F670C8DEECFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6
-        DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFFB6D3E6FF7AB6DCFFF6F6
-        F6FF00000000F6F6F6DF91C2E1FF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6
-        DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF89BDDFFFF1EFF0FF7AB6DCFFF6F6
-        F6FFF6F6F640DFEAF1FF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6
-        DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFFD3E1EBFFF1EFF0FF7AB6DCFFF6F6
-        F6FFF6F6F69FA9CEE6FF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6
-        DCFF7AB6DCFF7AB6DCFF7AB6DCFF9FC8E2FFF1EFF0FFF1EFF0FF7AB6DCFFF6F6
-        F6FFF6F6F6FF82BADEFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6
-        DCFF7AB6DCFF7AB6DCFF81BADDFFE2E8EEFFF1EFF0FFF1EFF0FF7AB6DCFFF6F6
-        F6FFF6F6F6FFF6F6F6FF81BADDFFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF7AB6DCFFF6F6
-        F6FF00000000F6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF7AB6DCFFF6F6
-        F6FFF6F6F68FE0CDB9FFA25D0FFF9C5300FFF6F6F6FFF6F6F6FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF7AB6DCFFF6F6
-        F6FFF6F6F6FFA25D0FFFBE905CFFEBE2D7FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
-        F6FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF7AB6DCFFF6F6
-        F6FFF6F6F6FF9C5300FFE0CDB9FFF6F6F6FFBE905CFF9C5300FFBE905CFFF6F6
-        F6FFF6F6F6FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF7AB6DCFFF6F6
-        F6FFF6F6F6FFA25D0FFFBE905CFFEBE2D7FFF6F6F6FFBE905CFF9C5300FFAD72
-        2EFFF6F6F6FF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFF7AB6DCFFF6F6
-        F6FFF6F6F68FDAC3A9FFA25D0FFF9C5300FF9C5300FF9C5300FF9C5300FF9C53
-        00FFCFAF8AFFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
-        F6FF00000000F6F6F68FF6F6F6FFF6F6F6FFF0ECE7FFAD722EFF9C5300FFBE90
-        5CFFF6F6F6EFF6F6F63000000000000000000000000000000000000000000000
-        00000000000000000000F6F6F630F6F6F6EFAD722EFF9C5300FFBE905CFFF6F6
-        F6EFF6F6F6300000000000000000000000000000000000000000000000000000
-        000000000000F6F6F630F6F6F6EFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6EFF6F6
-        F630000000000000000000000000000000000000000000000000000000000000
-        0000}
-      Transparent = True
-      Visible = False
-    end
-    object OpenImage_32: TImage
-      Left = 28
-      Top = 35
-      Width = 32
-      Height = 32
-      AutoSize = True
-      Picture.Data = {
-        07544269746D617036100000424D361000000000000036000000280000002000
-        0000200000000100200000000000001000000000000000000000000000000000
-        000000000000000000000000000000000000F6F6F6BFF6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6DFF6F6F6600000
-        0000000000000000000000000000F6F6F620F6F6F6FFF6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
-        F660000000000000000000000000F6F6F68FF6F6F6FFC8DEECFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFFB5D3E6FF79B5DCFFAFD2E7FFF6F6F6FFF6F6
-        F6EF000000000000000000000000F6F6F6EFF6F6F6FF90C1E1FF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF88BCDFFFEAEBEFFF79B5DCFF79B5DCFFF6F6F6FFF6F6
-        F6FF0000000000000000F6F6F660F6F6F6FFDFEAF1FF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFFCCDDEAFFF1EFF0FF79B5DCFF79B5DCFFF6F6F6FFF6F6
-        F6FF0000000000000000F6F6F6BFF6F6F6FFA8CEE6FF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF97C3E1FFF1EFF0FFF1EFF0FF79B5DCFF79B5DCFFF6F6F6FFF6F6
-        F6FF00000000F6F6F620F6F6F6FFEEF2F4FF81B9DEFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFFE2E8EEFFF1EFF0FFF1EFF0FF79B5DCFF79B5DCFFF6F6F6FFF6F6
-        F6FF00000000F6F6F68FF6F6F6FFC8DEECFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFFB5D3E6FFF1EFF0FFF1EFF0FFF1EFF0FF79B5DCFF79B5DCFFF6F6F6FFF6F6
-        F6FF00000000F6F6F6EFF6F6F6FF90C1E1FF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF88BC
-        DFFFEAEBEFFFF1EFF0FFF1EFF0FFF1EFF0FF79B5DCFF79B5DCFFF6F6F6FFF6F6
-        F6FFF6F6F660F6F6F6FFDFEAF1FF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFFCCDD
-        EAFFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF79B5DCFF79B5DCFFF6F6F6FFF6F6
-        F6FFF6F6F6BFF6F6F6FFA8CEE6FF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF97C3E1FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF79B5DCFF79B5DCFFF6F6F6FFF6F6
-        F6FFF6F6F6FFEEF2F4FF81B9DEFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFFE2E8EEFFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF79B5DCFF79B5DCFFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FF79B5DCFF79B5DCFFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF79B5DCFF79B5DCFFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FF79B5DCFF79B5DCFFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF79B5DCFF79B5DCFFF6F6F6FFF6F6
-        F6FF0000000000000000F6F6F6FFF6F6F6FFA8CEE6FFCFE2EEFFF5F4F5FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF79B5DCFF79B5DCFFF6F6F6FFF6F6
-        F6FF0000000000000000F6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF79B5DCFF79B5DCFFF6F6F6FFF6F6
-        F6FF00000000F6F6F68FF6F6F6FFF6F6F6FFC9A47AFFA15C0FFF9B5200FF9B52
-        00FFF6F6F6FFF6F6F6FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF79B5DCFF79B5DCFFF6F6F6FFF6F6
-        F6FFF6F6F640F6F6F6FFF6F6F6FFAC712DFF9B5200FF9B5200FF9B5200FF9B52
-        00FFF6F6F6FFF6F6F6FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF79B5DCFF79B5DCFFF6F6F6FFF6F6
-        F6FFF6F6F6AFF6F6F6FFC9A47AFF9B5200FF9B5200FFB7854CFFE0CDB8FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFEEF2F4FF90C1E1FFEAEBEFFFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF79B5DCFF79B5DCFFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFA15C0FFF9B5200FFB7854CFFF6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFEEF2F4FFCDDFEBFFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF79B5DCFF79B5DCFFF6F6F6FFF6F6
-        F6FFF6F6F6FFF0ECE7FF9B5200FF9B5200FFE5D7C8FFF6F6F6FFF6F6F6FFF6F6
-        F6FFBD8F5BFF9B5200FF9B5200FF9B5200FFBD8F5BFFF6F6F6FFF6F6F6FFF2F0
-        F1FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF79B5DCFF79B5DCFFF6F6F6FFF6F6
-        F6FFF6F6F6FFF0ECE7FF9B5200FF9B5200FFE0CDB8FFF6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFBD8F5BFF9B5200FF9B5200FF9B5200FFBD8F5BFFF6F6F6FFF6F6
-        F6FFF2F0F1FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EF
-        F0FFF1EFF0FFF1EFF0FFF1EFF0FFF1EFF0FF79B5DCFF79B5DCFFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFA15C0FFF9B5200FFB7854CFFF6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFBD8F5BFF9B5200FF9B5200FF9B5200FFAC712DFFF0EC
-        E7FFEEF2F4FF90C1E1FF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFFF6F6F6FFF6F6
-        F6FFF6F6F6AFF6F6F6FFC9A47AFF9B5200FF9B5200FFB7854CFFE0CDB8FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFBD8F5BFF9B5200FF9B5200FF9B5200FFAC71
-        2DFFF0ECE7FFEEF2F4FF90C1E1FF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5
-        DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFF79B5DCFFA8CEE6FFF6F6F6FFF6F6
-        F6EFF6F6F640F6F6F6FFF6F6F6FFAC712DFF9B5200FF9B5200FF9B5200FF9B52
-        00FF9B5200FF9B5200FF9B5200FF9B5200FF9B5200FF9B5200FF9B5200FF9B52
-        00FFAC712DFFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
-        F66000000000F6F6F68FF6F6F6FFF0ECE7FFC9A47AFFA15C0FFF9B5200FF9B52
-        00FF9B5200FF9B5200FF9B5200FF9B5200FF9B5200FF9B5200FF9B5200FF9B52
-        00FFBD8F5BFFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6DFF6F6F6600000
-        00000000000000000000F6F6F68FF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFAC712DFF9B5200FF9B5200FF9B5200FFBD8F
-        5BFFF6F6F6FFF6F6F6FFF6F6F69F000000000000000000000000000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        0000000000000000000000000000F6F6F640F6F6F6AFF6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFAC712DFF9B5200FF9B5200FF9B5200FFBD8F5BFFF6F6
-        F6FFF6F6F6FFF6F6F69F00000000000000000000000000000000000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        0000000000000000000000000000000000000000000000000000F6F6F69FF6F6
-        F6FFF6F6F6FFAC712DFF9B5200FF9B5200FF9B5200FFBD8F5BFFF6F6F6FFF6F6
-        F6FFF6F6F69F0000000000000000000000000000000000000000000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        00000000000000000000000000000000000000000000F6F6F69FF6F6F6FFF6F6
-        F6FFAC712DFF9B5200FF9B5200FF9B5200FFBD8F5BFFF6F6F6FFF6F6F6FFF6F6
-        F69F000000000000000000000000000000000000000000000000000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        000000000000000000000000000000000000F6F6F69FF6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F69F0000
-        0000000000000000000000000000000000000000000000000000000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        0000000000000000000000000000F6F6F69FF6F6F6FFF6F6F6FFF6F6F6FFF6F6
-        F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F6FFF6F6F69F000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        0000000000000000000000000000000000000000000000000000000000000000
-        0000}
       Transparent = True
-      Visible = False
     end
     object OpenRadioButton: TRadioButton
       Left = 40

+ 27 - 12
Projects/CompStartup.pas

@@ -33,19 +33,18 @@ type
     StartupCheck: TCheckBox;
     NewImage: TImage;
     OpenImage: TImage;
-    NewImage_24: TImage;
-    NewImage_32: TImage;
-    OpenImage_24: TImage;
-    OpenImage_32: TImage;
     procedure RadioButtonClick(Sender: TObject);
     procedure FormCreate(Sender: TObject);
     procedure DblClick_(Sender: TObject);
     procedure OpenListBoxClick(Sender: TObject);
     procedure OKButtonClick(Sender: TObject);
+    procedure FormAfterMonitorDpiChanged(Sender: TObject; OldDPI,
+      NewDPI: Integer);
   private
     FResult: TStartupFormResult;
     FResultFileName: TFileName;
     procedure SetMRUList(const MRUList: TStringList);
+    procedure UpdateImages;
   public
     property MRUList: TStringList write SetMRUList;
     property Result: TStartupFormResult read FResult;
@@ -55,7 +54,7 @@ type
 implementation
 
 uses
-  CompMsgs, CmnFunc, CmnFunc2, CompForm;
+  CompMsgs, CmnFunc, CmnFunc2, CompForm, ComCtrls;
 
 {$R *.DFM}
 
@@ -68,19 +67,35 @@ begin
   UpdateHorizontalExtent(OpenListBox);
 end;
 
+procedure TStartupForm.UpdateImages;
+
+  function GetBitmap(const Button: TToolButton; const WH: Integer): TBitmap;
+  begin
+    Result := CompileForm.ToolbarImageCollection.GetBitmap(Button.ImageIndex, WH, WH)
+  end;
+
+var
+  WH: Integer;
+begin
+ { After a DPI change the button's Width and Height isn't yet updated, so calculate it ourselves }
+  WH := MulDiv(16, CurrentPPI, 96);
+  NewImage.Picture.Bitmap := GetBitmap(CompileForm.NewButton, WH);
+  OpenImage.Picture.Bitmap := GetBitmap(CompileForm.OpenButton, WH);
+end;
+
+procedure TStartupForm.FormAfterMonitorDpiChanged(Sender: TObject; OldDPI,
+  NewDPI: Integer);
+begin
+  UpdateImages;
+end;
+
 procedure TStartupForm.FormCreate(Sender: TObject);
 begin
   FResult := srNone;
 
   InitFormFont(Self);
 
-  if Screen.PixelsPerInch >= 192 then begin
-    NewImage.Picture := NewImage_32.Picture;
-    OpenImage.Picture := OpenImage_32.Picture;
-  end else if Screen.PixelsPerInch >= 128 then begin
-    NewImage.Picture := NewImage_24.Picture;
-    OpenImage.Picture := OpenImage_24.Picture;
-  end;
+  UpdateImages;
 
   OpenListBox.Items.Add(SCompilerExampleScripts);
   OpenListBox.Items.Add(SCompilerMoreFiles);

二进制
Projects/Compil32.manifest.res


+ 2 - 1
Projects/Compil32.manifest.txt

@@ -27,7 +27,8 @@
 </trustInfo>
 <application xmlns="urn:schemas-microsoft-com:asm.v3">
     <windowsSettings>
-        <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
+      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/pm</dpiAware>
+      <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
     </windowsSettings>
 </application>
 <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">

+ 1 - 1
whatsnew.htm

@@ -91,7 +91,7 @@ For conditions of distribution and use, see <a href="http://www.jrsoftware.org/f
   <li>Compiler IDE changes:
   <ul>
     <li>Updated all icons and flattened the interface for a more modern look.</li>
-    <li>The Compiler IDE is now DPI aware and also allows the "Segoe UI" font for its interface elements.</li>
+    <li>The Compiler IDE now uses per-monitor DPI awareness mode and also allows the "Segoe UI" font for its interface elements.</li>
     <li>Options button <i>Associate .iss files with this compiler</i> can now associate for the current user instead of displaying an error if administrative privileges are not available.</li>
     <li>Options <i>Allow Undo after save</i> and <i>Show indentation guides</i> are now on by default for new installations.</li>
     <li>The "Compiler Output" view is now colorized. This can be turned off in the options.</li>