📄 vclfixpack.pas
字号:
{**************************************************************************************************}
{ }
{ VCLFixPack unit - Unoffical bug fixes for Delphi/C++Builder }
{ Version 1.1 (2009-01-25) }
{ }
{ The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); }
{ you may not use this file except in compliance with the License. You may obtain a copy of the }
{ License at http://www.mozilla.org/MPL/ }
{ }
{ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF }
{ ANY KIND, either express or implied. See the License for the specific language governing rights }
{ and limitations under the License. }
{ }
{ The Original Code is VCLFixPack.pas. }
{ }
{ The Initial Developer of the Original Code is Andreas Hausladen (Andreas.Hausladen@gmx.de). }
{ Portions created by Andreas Hausladen are Copyright (C) 2008 Andreas Hausladen. }
{ All Rights Reserved. }
{ }
{**************************************************************************************************}
{$IFNDEF CONDITIONALEXPRESSIONS}
Delphi5_is_not_supported
{$ENDIF}
{$A8,B-,C+,D-,E-,F-,G+,H+,I+,J-,K-,L+,M-,N-,O+,P+,Q-,R-,S-,T-,U-,V+,W-,X+,Y+,Z1}
{ If you define VCLFIXPACK_DEBUG the patches are compiled with debug information. }
{$IFDEF VCLFIXPACK_DEBUG} {$D+} {$ENDIF}
{ If you use Delphi 6/7/2005 Personal you must disable the VCLFIXPACK_DB_SUPPORT define. }
{$DEFINE VCLFIXPACK_DB_SUPPORT}
unit VCLFixPack;
{
Usage
=====
Add the unit to the .dpr file's uses-list.
C++Builder user can add the file to the project (Menu Project/Add to project)
Example
=======
uses
FastMM4, // optional memory manager
VCLFixPack,
Forms,
Unit1 in 'Unit1.pas';
Fixes the following bug
=======================
- [2006-2009]
QC #68647: Infinite loop in Forms.GetNonToolWindowPopupParent
(http://qc.codegear.com/wc/qcmain.aspx?d=68647)
- [2007-2009]
QC #68740: Lost focus after TOpenDialog when MainFormOnTaskBar is set
(http://qc.codegear.com/wc/qcmain.aspx?d=68740)
- [2007-2009]
QC #59963: Closing non-modal forms after a task switch can deactivate the application
(http://qc.codegear.com/wc/qcmain.aspx?d=59963)
- [2009]
QC #66892: Closing forms deactivates the application (missing "stdcall")
(http://qc.codegear.com/wc/qcmain.aspx?d=66892)
- [6-2007]
Control resize bugfix for kernel stack overflow due to WH_CALLWNDPROC hook
- [6-2007]
QC #59654: TActionList access already released FActions field
(http://qc.codegear.com/wc/qcmain.aspx?d=59654)
- [6-2007]
QC #54286 : Parent-PopupMenu overrides standard context menu (edit, memo, combobox, ...)
(http://qc.codegear.com/wc/qcmain.aspx?d=54286)
- [2006-2007]
QC #50097: ObjAuto access violation on XEON (Data Execution Prevention bug)
(http://qc.codegear.com/wc/qcmain.aspx?d=50097)
- [6-2009]
Classes.MakeObjectInstance memory leak fix
(for usage in a DLL)
- [2007]
QC #58938: MainForm Minimize minimizes in the background
(http://qc.codegear.com/wc/qcmain.aspx?d=58938)
- [6-2009]
QC #64484: SysUtils.Abort can raise an AccessViolation
(http://qc.codegear.com/wc/qcmain.aspx?d=64484)
- [2007]
QC #58939: No taskbar button when starting from ShellLink with Show=Minimized
(http://qc.codegear.com/wc/qcmain.aspx?d=58939)
- [6-2009]
QC #35001: MDIChild's active control focus is not set correctly
(http://qc.codegear.com/wc/qcmain.aspx?d=35001)
- [7-2009]
QC #56252: TPageControl flickers a lot with active theming
(http://qc.codegear.com/wc/qcmain.aspx?d=56252)
QC #68730: TLabel is not painted on a themed, double-buffered TTabSheet in Vista
(http://qc.codegear.com/wc/qcmain.aspx?d=68730)
TLabels on TTabSheet are not painted (themes) if a TWinControl like TMemo is on the TTabSheet (TWinControl.PaintWindow bug)
- [7-2009]
Grid flickers with active theming (DBGrid, StringGrid and DrawGrid only, no derived classes)
- [2009]
QC #69112: TSpeedButton is painted as a black rectangle on a double buffered panel on a sheet of glass.
- [2009]
QC #69294: TProgressBar fails with PBS_MARQUEE and disabled Themes (Vista)
http://qc.codegear.com/wc/qcmain.aspx?d=69294
- [Windows Vista]
Workaround for Windows Vista CompareString bug
(Workaround is disabled by default, define "VistaCompareStringFix" to activate it)
Changlog:
2009-01-25:
Fixed: DBGrid ScrollBar gab wasn't painted correctly in BiDiMode <> bdLeftToRight
Fixed: TTabSheet could throw an access violation if no PageControl was assigned to it
Changed: Rewritten TaskModalDialog bugfix
Added: QC #69294: TProgressBar fails with PBS_MARQUEE and disabled Themes (Vista)
}
interface
{ ---------------------------------------------------------------------------- }
{$DEFINE DBTextColorBugFix} // Delphi 6+
{$IF CompilerVersion >= 18.0} // Delphi 2006+
{$DEFINE GetNonToolWindowPopupParentFix}
{$IFEND}
{$IF CompilerVersion >= 18.5} // Delphi 2007+
{$DEFINE TaskModalDialogFix}
{$IFEND}
{$IF CompilerVersion >= 18.5} // Delphi 2007+
{$DEFINE AppDeActivateZOrderFix}
{$IFEND}
{$IF CompilerVersion = 20.0} // Delphi 2009
{$DEFINE HideStackTrashingFix}
{$IFEND}
{$IF CompilerVersion < 20.0} // Delphi 6-2007
{$DEFINE ControlResizeFix}
{ The OPTIMIZED_RESIZE_REDRAW option is experimental. It speeds up the resizing of forms
by not redrawing each control when it is realigned but by invalidating them all after
one align round is done. }
{.$DEFINE OPTIMIZED_RESIZE_REDRAW}
{$IFEND}
{$IF CompilerVersion < 20.0} // Delphi 6-2007
{$DEFINE ActionListAVFix}
{$IFEND}
{$IF CompilerVersion < 20.0} // Delphi 6-2007
{$DEFINE ContextMenuFix}
{$IFEND}
{$IF (CompilerVersion >= 18.0) and (CompilerVersion < 20.0)} // Delphi 2006-2007
{$DEFINE ObjAutoDEPFix}
{$IFEND}
{$DEFINE MkObjInstLeakFix} // Delphi 6+
{$DEFINE SysUtilsAbortFix} // Delphi 6+
{$IF CompilerVersion = 18.5} // Delphi 2007
{$DEFINE AppMinimizeFix}
{$IFEND}
{$IF CompilerVersion = 18.5} // Delphi 2007
{$DEFINE CmdShowMinimizeFix}
{$IFEND}
{$DEFINE MDIChildFocusFix} // Delphi 6+
{$IF CompilerVersion >= 15} // Delphi 7+
{$DEFINE PageControlPaintingFix}
{$IFEND}
{$IF CompilerVersion >= 15} // Delphi 7+
{$DEFINE GridFlickerFix}
{$IFEND}
{$IF CompilerVersion = 20.0} // Delphi 2009
{$DEFINE SpeedButtonGlassFix}
{$IFEND}
{$IF CompilerVersion = 20.0} // Delphi 2009
{$DEFINE VistaProgressBarMarqueeFix}
{$IFEND}
{**************************************************************************************************}
{ Workaround for Windows Vista CompareString bug. }
{ The
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -