Populate a temp-table with widget-handle in progress abl

I am trying to create dynamically a group of buttons, using this code:

DEFINE VAR temp-hand AS WIDGET-HANDLE.
DEFINE INPUT  PARAMETER ipc AS CHARACTER   NO-UNDO.
   &global-define X  VALUE(v + ipc )

  CREATE BUTTON temp-hand
    ASSIGN
      FRAME = FRAME btn-frame:HANDLE
      ROW = vdeInicio
      COLUMN = 10
      WIDTH = 19
      LABEL = ipc
      SENSITIVE = TRUE
      VISIBLE = TRUE
    TRIGGERS:
      ON CHOOSE PERSISTENT RUN btn-mess IN THIS-PROCEDURE.
    END TRIGGERS.
    temp-hand:LOAD-IMAGE("imagenes/Entradas").
    vdeInicio = vdeInicio + 3.57.

This works when I address a single button widget, also if a write a loop and call a procedure with this code in it, it creates multiple buttons but points to one handle, some told me than creating a temp table and saving there the widget handle may work, but I don´t know how to populate the table with the widget-handle, can you help me with this,

Upvotes: 0

Views: 881

Answers (1)

Tom Bascom
Tom Bascom

Reputation: 14020

Something like this:

define temp-table tt_buttonList no-undo
  field buttonId as integer
  field buttonHandle as widget-handle
.

define variable i as integer no-undo.

do i = i to 5:

  create tt_buttonList.

  tt_buttonList.buttonId = i.

  CREATE BUTTON tt_buttonList.buttonHandle
    ASSIGN FRAME = FRAME btn-frame:HANDLE   /* this is undefined in your example -- I have no idea where it came from */
    ROW = i * 4
    COLUMN = 10
    WIDTH = 19
    LABEL = string( i )
    SENSITIVE = TRUE
    VISIBLE = TRUE
  .

end.

I've no idea why you would run code like this from a trigger procedure. While it might "work", mixing UI into db access code like that is really asking for serious trouble.

Upvotes: 2

Related Questions