On 01/05/12 15:43, Frank Church wrote:


On 1 May 2012 13:14, patspiper <[email protected] <mailto:[email protected]>> wrote:

    On 01/05/12 14:56, Juha Manninen wrote:
    On Mon, Apr 30, 2012 at 11:15 PM, Frank Church
    <[email protected] <mailto:[email protected]>> wrote:

        In 0.9.30 it is defined in lclintf.h as

        function Frame3d(DC: HDC; var ARect: TRect; const FrameWidth
        : integer; const Style : TGraphicsBevelCut): Boolean; {$IFDEF
        IF_BASE_MEMBER}virtual;{$ENDIF} and is also in the Graphics
        unit as     procedure Frame3d(var ARect: TRect; const
        FrameWidth: integer; const Style: TGraphicsBevelCut); virtual;

        The control I am working with, TJanPanelButton uses the
        signature in lclintfh.inc calling it as Frame3d(
        Self.Canvas.Handle, R, FFrameWidth, bvRaised );

        Juha Mahinnen added a patch to Extctrls to match the Delphi
        implementation here -
        http://docwiki.embarcadero.com/Libraries/en/Vcl.ExtCtrls.Frame3D.
        Although it matches the Delphi definition is it in the wrong
        place as it affects the apparently original Lazarus
        implementation?

        In the mean time I have to ifdef it and call
        Self.Canvas.Frame3D(R, FFrameWidth, bvRaised ) instead of
        Frame3d( Self.Canvas.Handle, R, FFrameWidth, bvRaised ) which
        matches the definition of TCanvas in Graphics. Is that any good?


    I am not sure if I understand the problem. Is there an ambiguity
    between this :
      Frame3d( Self.Canvas.Handle, R, FFrameWidth, bvRaised );
    and this :
      Self.Canvas.Frame3D(R, FFrameWidth, bvRaised );

    I think he wants to use
    LCLIntf.Frame3d(DC: HDC; var ARect: TRect; const FrameWidth :
    integer; const Style : TGraphicsBevelCut): Boolean

    In that case, he must add LCLIntf to his uses clause.

    Stephano

    --
    _______________________________________________
    Lazarus mailing list
    [email protected]
    <mailto:[email protected]>
    http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus


Both LCLIntf and Extctrls are already declared in the uses clause, but it appears that definining the new Frame3D procedure in ExtCtrls overrides the definition in LCLIntf, so it raises the question of whether the new Frame3D definition should be in another unit in order not to override the other definition.
Which frame3d in ExtCtrls is hiding LCLIntf.frame3d?

In any case, you can qualify it by using LCLIntf.frame3d(...)

Stepahno
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to