Bug Report T129503
Visible to All Users

Ribbon Form - Form borders produce painting artifacts in Windows 7/8 if the form's DisableAero property is set to True and the application is run in compatibility mode for Windows XP or earlier

created 11 years ago

Hi DevExpress Team,

I have a strange behaviour when creating a simple Delphi 7 Form.

Delphi
unit Unit1; interface uses Variants, Classes, Graphics, Controls, Forms, Dialogs, dxBar, cxClasses, dxRibbon, cxControls, dxRibbonForm; type TForm1 = class(TdxRibbonForm) dxBarManager1: TdxBarManager; dxRibbon1Tab1: TdxRibbonTab; dxRibbon1: TdxRibbon; dxBarManager1Bar1: TdxBar; dxBarLargeButton1: TdxBarLargeButton; procedure dxBarLargeButton1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.dxBarLargeButton1Click(Sender: TObject); begin self.close ; end; end.

When I compile & start the application with "SupportNonClientDrawing = False" all seems to be ok. The form is shown correctly.
When I compile & start the application with "SupportNonClientDrawing = True" then parts of the form are missing. You can see that in the attached picture.

This happens only with Delphi 7.  When I do exactly the same with Delphi XE everything is ok.

I cannot move the current Delphi 7 project to XE, so I need a solution for Delphi 7.
What can I do / what have I to adjust / what have I to implement to have a application without artefacts.

Thx in advance.
Greetings from Germany - Robert

Comments (3)
DevExpress Support Team 11 years ago

    Hello Robert,

    I was not able to reproduce this behavior with the latest version of our controls (VCL 14.1.2) + Delphi 7. Attached is an example (source and executable files), that operates as expected on my side. Please modify it to illustrate the problem, and attach it to your next message. I am looking forward to hearing from you.

    RJ RJ
    Robert Jonuschies 11 years ago

      Hello Paulo,
      when executing your compiled application - I had no problems - like expected.
      Then I compiled your source files with my Delphi IDE  - and I get the same problems.
      Then I thought about it - what could be the difference between my IDE and yours.
      After testing a while, I think I found out what the reason is for that problem.
      My IDE ( delphi32.exe) is starting in compatibility mode ( Windows XP SP 3 + Administrator Rights).
      When deactivating this parameter, starting the IDE, load your source files and compile it - the result
      is what I was looking for (all ok). When turning back, activating the compatibility mode, I get a result
      with errors.
      Can you reproduce that ?
      I don't know why this option (compatibility mode) was active. For the moment I will deactivate it and
      keep it in my mind that this option can cause trouble.
      Thx for help.
      Robert

      DevExpress Support Team 11 years ago

        Thank you for your clarification. I have reproduced the described behavior and forwarded this ticket to our developers for research.

        Answers approved by DevExpress Support

        created 11 years ago

        We have fixed the issue described in this ticket and will include the fix in our next maintenance update. To apply this solution before the official update, request a hotfix by clicking the corresponding link for product versions you require.

        Note: Hotfixes may be unavailable for beta versions and updates that are about to be released.

          Comments (3)
          RJ RJ
          Robert Jonuschies 11 years ago

            Hi,
            is it correct that I can't use this hotfix because of my 6.59 version ?
            What can I do to make this work?
            Robert

            DevExpress Support Team 11 years ago

              Hello Robert,

              I am not sure why you need this fix since you have already found a solution - disabling the compatibility mode. Anyway, the fix is quite simple and I think it will work even for the old Build 59. Find the TdxSkinnedRect.SetInterpolationMode method implementation in the dxBarSkin.pas unit and comment all the code in it. After recompiling sources this should solve the problem. Although I cannot guarantee that this fix will work in Build 59, I believe it will.

              RJ RJ
              Robert Jonuschies 11 years ago

                Hello Paulo,
                yes you are right, I found a solution.
                I just thought that I can implement this fix in another way because I haven't any source files.
                So, in case of that I can't implement the fix the easy way with just comment the code in the function SetInterpolationMode.
                Nevertheless, thank you for your help and I will prevent starting the applications in compatibility mode.
                Robert

                Disclaimer: The information provided on DevExpress.com and affiliated web properties (including the DevExpress Support Center) is provided "as is" without warranty of any kind. Developer Express Inc disclaims all warranties, either express or implied, including the warranties of merchantability and fitness for a particular purpose. Please refer to the DevExpress.com Website Terms of Use for more information in this regard.

                Confidential Information: Developer Express Inc does not wish to receive, will not act to procure, nor will it solicit, confidential or proprietary materials and information from you through the DevExpress Support Center or its web properties. Any and all materials or information divulged during chats, email communications, online discussions, Support Center tickets, or made available to Developer Express Inc in any manner will be deemed NOT to be confidential by Developer Express Inc. Please refer to the DevExpress.com Website Terms of Use for more information in this regard.