On 29.11.2021 17:18, Juha Manninen via lazarus wrote:
On Mon, Nov 29, 2021 at 1:32 PM Ondrej Pokorny via lazarus <lazarus@lists.lazarus-ide.org <mailto:lazarus@lists.lazarus-ide.org>> wrote:

    There are many scenarios when the Canvas cannot be accessed and it
    is a
    common mistake to access it when not allowed.

    I didn't study the issue further but to me it looks strange that
    setting
    some parameters in CreateParams helps with it. Juha, your commit
    description "Somehow fixes issue ..." doesn't help to understand your
    change either.


The commit message is not perfect but the committed code is, now that I fully understand the issue. CreateParams for Frame now follows the same logic as CreateParams for Form.

Frame is not a form.


It allows a Frame to stand without a parent in the designer or even at runtime in some hypothetical situation(?).

We definitely should't do anything with the parameters at runtime and don't allow frames to be shown as forms by default. What buttons (min/max/close/...) should be shown, what border style wtc etc? If the programmer wants to show his frame as a standalone form, he can override CreateParams() on his own.


Using Canvas outside Paint may not be recommended but it can be done in some widgetsets. The component's duty is to not crash in designer or anywhere else when it happens.

Well, if the programmer writes his code so that it crashes, what do you want to do with it?

Yes, we should handle exceptions in the designer. But your code doesn't improve this.


    So I would encourage the component author to rewrite his code.


Rewrite? Ok, then TCustomForm must be rewritten, too. They now follow the same logic, at least regarding CreateParams().

Rewrite his code = the custom component, not TFrame, not TCustomForm.

It's basically a very bad idea to force create the handle when the component is loaded (that is what you do when you access the canvas).

Ondrej
-- 
_______________________________________________
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus

Reply via email to