Jeffrey's solution is probably the cleanest.  Some alternates:

Rosen Technique:
Change your declaration to:

*****************************************************************
   type Default_View_Type;

   type Button_With_Parent(Parent : not null access Default_View_Type)
      is new Gnoga.Gui.Element.Common.Button_Type with null record;

   type Default_View_Type is new Gnoga.Gui.View.Grid.Grid_View_Type with
record
      Label_Text   : Gnoga.Gui.View.View_Type;
      Click_Button : Button_With_Parent(Default_View_Type'Access);
   end record;
*****************************************************************

And then your click handler to:

*****************************************************************
   procedure On_Click (Object : in out Gnoga.Gui.Base.Base_Type'Class) is
      Button : Button_With_Parent renames Button_With_Parent(Object);
      View   : Default_View_Type  renames Button.Parent.all;
   begin
      View.Label_Text.Put_Line ("Click");
   end On_Click;
*****************************************************************

another option is an event listener paradigm, but it is probably too
complex for
something like this.  There is a write up at:
https://sourceforge.net/p/gnoga/code/ci/dev_1.3/tree/docs/articles/event_listeners.txt

NOTE:  noticed that my last name was incorrectly spelled.  It is Breeden.

This method involves making the button an event generator and the view a
listener.  It's not very
clean though.  Jeff's solution seems like the best to me.

On Fri, Dec 22, 2017 at 5:29 AM, Pascal via Gnoga-list <
gnoga-list@lists.sourceforge.net> wrote:

> Hello,
>
> After declaration of my view:
>    type Default_View_Type is new Gnoga.Gui.View.Grid.Grid_View_Type with
> record
>       Label_Text   : Gnoga.Gui.View.View_Type;
>       Click_Button : Gnoga.Gui.Element.Common.Button_Type;
>    end record;
>
> and creation of my objects:
>       Gnoga.Gui.View.Grid.Grid_View_Type (Grid).Create  (Parent, Layout,
> Fill_Parent, Set_Sizes, ID);
>       Grid.Label_Text.Create (Grid.Panel (1, 1).all);
>       Grid.Click_Button.Create (Grid.Panel (1, 2).all, "Click Me");
>
> My button controller is:
>    procedure On_Click (Object : in out Gnoga.Gui.Base.Base_Type'Class) is
> --        View : Logo.View.Default_View_Access :=
> --          Logo.View.Default_View_Access (Object.Parent);
>    begin
>       --        View.Label_Text.Put_Line ("Click");
>       gnoga.log(ada.Tags.Expanded_Name(Object.Parent'tag));
>    end On_Click;
>
> I've got a CE:
> raised CONSTRAINT_ERROR : logo-controller.adb:14 tag check failed
>
> because of object parent's type:
> GNOGA.GUI.VIEW.VIEW_BASE_TYPE
>
> How to get the true parent that is Default_View_Type and then access to
> Label_Text?
>
> Thanks for help, Pascal.
> http://blady.pagesperso-orange.fr
>
>
>
> ------------------------------------------------------------
> ------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Gnoga-list mailing list
> Gnoga-list@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gnoga-list
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Gnoga-list mailing list
Gnoga-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gnoga-list

Reply via email to