On Fri, 4 Jan 2013 15:00:13 +0100
Bart <bartjun...@gmail.com> wrote:

> Hi,
> 
> I have a text editor (LazEdit on Lazarus CCR) which uses a
> TPageControl to act like a Tabbed Document Interface (much like
> Lazarus SE).
> 
> Upon creating a new Tab it basically does:
> - Add a new TTabSheet to the PageControl
> - Create an instance of a TSynEdit
> - Set TSynEdit.Parent to the newly created TTabSheet
> - Set TSynEdit.Align := alClient
> 
> This works as expected.
> However there is one visual anomaly: when you create a new Tab, for a
> brief moment you can see the TSynEdit, unaligned, with Width and
> Height set to it's defaults (like you would drop it on a Form in
> Lazarus).
> 
> Long time ago, in Delphi, I solved this by doing:
> 
>   Try
>     LockWindowUpdate(TheHandle);
>     ...
>    //Create the TSynEdit, align it etc.
> 
>   Finally
>     LockWindowUpdate(0);
> 
> This delayed any painting up to the point the TSynEdit was aligned.
> However, this is a Windows only fix.
> 
> The relevant code is at:
> https://lazarus-ccr.svn.sourceforge.net/svnroot/lazarus-ccr/applications/lazedit/editorpagecontrol.pp
> (function TEditorPageControl.AddPage: TEditor; appr. at line 994)
> 
> Does anyone have a suggestion how to fix this in a cross-platform manner?

It sounds like a bug in the LCL Win32 interface.
I don't have win32 here to test.
There should be no Paint events during your code. Are there?
What size has the SynEdit after setting Align to alClient and what is
the ClientRect of the tabsheet?

About workarounds:
Set the Parent as last property or enclose the code in 
  BeginAutoSizing;
  EndAutoSizing;


Mattias

--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to