From e39e95e23dd71b6bb8dfc1ad5b5fd5382a4196c8 Mon Sep 17 00:00:00 2001 From: Ansgar Becker Date: Tue, 13 May 2025 19:00:05 +0200 Subject: [PATCH] Issue #2155: high DPI fix for painting icons in SQL export target drop-down --- source/tabletools.lfm | 3 ++- source/tabletools.pas | 17 +++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/source/tabletools.lfm b/source/tabletools.lfm index 222799ad..f63be655 100644 --- a/source/tabletools.lfm +++ b/source/tabletools.lfm @@ -672,10 +672,11 @@ object frmTableTools: TfrmTableTools BorderSpacing.Around = 6 DropDownCount = 16 ItemHeight = 20 - Style = csOwnerDrawFixed + Style = csOwnerDrawVariable TabOrder = 6 OnChange = comboExportOutputTypeChange OnDrawItem = comboExportOutputTypeDrawItem + OnMeasureItem = comboExportOutputTypeMeasureItem end object comboExportOutputTarget: TComboBox AnchorSideLeft.Control = tabSQLexport diff --git a/source/tabletools.pas b/source/tabletools.pas index 448d3ead..a268364c 100644 --- a/source/tabletools.pas +++ b/source/tabletools.pas @@ -102,8 +102,6 @@ type editGenerateDataNumRows: TEdit; lblGenerateDataNullAmount: TLabel; editGenerateDataNullAmount: TEdit; - procedure comboExportOutputTypeDrawItem(Control: TWinControl; - Index: Integer; ARect: TRect; State: TOwnerDrawState); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure btnHelpMaintenanceClick(Sender: TObject); @@ -156,6 +154,10 @@ type procedure editDatabaseTableFilterKeyPress(Sender: TObject; var Key: Char); procedure editDatabaseTableFilterRightButtonClick(Sender: TObject); procedure timerCalcSizeTimer(Sender: TObject); + procedure comboExportOutputTypeDrawItem(Control: TWinControl; + Index: Integer; ARect: TRect; State: TOwnerDrawState); + procedure comboExportOutputTypeMeasureItem(Control: TWinControl; + Index: Integer; var AHeight: Integer); const StatusMsg = '%s %s ...'; private @@ -374,8 +376,15 @@ begin end; Canv.FillRect(ARect); - Canv.TextRect(ARect, ARect.Left + MainForm.VirtualImageListMain.Width + 4, ARect.Top, comboExportOutputType.Items[Index]); - MainForm.VirtualImageListMain.Draw(Canv, ARect.Left + 2, ARect.Top + 2, ItemImageIndex); + Canv.TextRect(ARect, ARect.Left + Scale96ToForm(MainForm.VirtualImageListMain.Width) + 4, ARect.Top, comboExportOutputType.Items[Index]); + MainForm.VirtualImageListMain.DrawForControl(Canv, ARect.Left + 2, ARect.Top + 2, ItemImageIndex, MainForm.VirtualImageListMain.Width, comboExportOutputType); +end; + + +procedure TfrmTableTools.comboExportOutputTypeMeasureItem(Control: TWinControl; + Index: Integer; var AHeight: Integer); +begin + AHeight := Scale96ToForm(MainForm.VirtualImageListMain.Height) + 2; end;