2010/2/12 Mattias Gärtner <[email protected]>: > Zitat von cobines <[email protected]>: > >> 2010/2/12 Paul Ishenin <[email protected]>: >>> >>> Bevels reduce ClientRect by BevelSize value. >> >> I thought so that they're supposed to do that, but if I put a TPanel >> on a form with a outer bevel set to Lowered , the panel's ClientHeight >> = Height. > > Bevel reduces the AdjustClientRect, which is ClientRect minus the Bevels. > ClientWidth is the client area width from the widgetset. The bevels are > custom drawn by TPanel and therefore not in the ClientWidth of TPanel. >
Ok, that clears up why ClientWidth=Width. But why the bevels are included in ClientRect? I think child controls are not supposed to occupy the bevels' space. Can the ClientWidth, ClientHeight from the widgetset be adjusted to include bevels? For example if I want to check how much space is in the Panel for a control, I do: SpaceAvailable := Panel.ClientHeight; if SpaceAvailable >= 100 then ShowMyControl_of_size_100_or_more (because I'm sure it will fit) else HideMyControl... (don't want to show it partially) (The Panel size is controlled by the user.) However, if TPanel contains bevels then the space available for the child control is ClientHeight - BevelSize * 2. I have to take it into account when calculating space. Otherwise, either my control will not be fully shown, or it will be drawn over the bevels. Is there some other property I can check that will include all borders, bevels, etc.? >>> BevelSize is used to calculate the ClientRect in >>> TCustomPanel.AdjustClientRect. >> >> Yes, that function recalculates the rectangle correctly, but it seems >> it's somehow not propagated to the auto size algorithm or to the >> stored client rectangle. > > The autosize algorithm uses AdjustClientRect. It still puts child controls over the bevels. I don't know, maybe I'm confusing it with aligning child controls. It is supposed to either make the child control smaller so that it doesn't overwrite the bevels, or make the TPanel bigger so that the child control fits in whole and there's still space left for the bevels. > Please add an example to demonstrate the problem. I have found an already existing bug on this with a good example. But it said the problem is only for BevelWidth > 1 and only for GTK, GTK2. I confirmed this issue also on QT and with any bevel width. I'll check later on Win32. Unfortunately Mantis died on me while I was reading it so I didn't get the bug number. Will try later. -- cobines -- _______________________________________________ Lazarus mailing list [email protected] http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
