add-calc-column в динамическом browse

Обсуждение вопросов по разработке программ в среде продуктов копорации "Progress Software"
Аватара пользователя
dmitri
Старожил
Сообщения: 1016
Зарегистрирован: 04 авг 2005, 16:19
Откуда: Pennsylvania, USA

add-calc-column в динамическом browse

Сообщение dmitri » 17 сен 2008, 20:03

Dmitri Levin and

Аватара пользователя
dmi
Старожил
Сообщения: 1523
Зарегистрирован: 27 сен 2001, 03:00
Откуда: Москва

Re: add-calc-column в динамическом browse

Сообщение dmi » 17 сен 2008, 23:30

А это работает?

/* r-dynbrws */

DEFINE VARIABLE name-hdl AS HANDLE NO-UNDO.
DEFINE VARIABLE num-hdl AS HANDLE NO-UNDO.
DEFINE VARIABLE address-hdl AS HANDLE NO-UNDO.
DEFINE VARIABLE calc-col-hdl AS HANDLE NO-UNDO.
DEFINE VARIABLE browse-hdl AS HANDLE NO-UNDO.
DEFINE VARIABLE buff-field-hdl AS HANDLE NO-UNDO.
DEFINE VARIABLE brws-col-hdl AS HANDLE NO-UNDO.
DEFINE VARIABLE jx AS INTEGER NO-UNDO.

DEFINE BUTTON btn-delete LABEL "Delete".
DEFINE BUTTON btn-quit LABEL "&Quit" AUTO-ENDKEY.

DEFINE FRAME MyFrame SKIP(10)
btn-delete btn-quit
WITH SIZE 80 BY 22.

DEFINE QUERY q1 FOR Customer SCROLLING.
OPEN QUERY q1 FOR EACH Customer NO-LOCK.

CREATE BROWSE browse-hdl
ASSIGN
TITLE = "Dynamic Browse"
FRAME = FRAME MyFrame:HANDLE
QUERY = QUERY q1:HANDLE
X = 2
Y = 2
WIDTH = 74
DOWN = 10
VISIBLE = YES
SENSITIVE = TRUE
READ-ONLY = NO.

ON ROW-DISPLAY OF browse-hdl DO:
IF VALID-HANDLE(calc-col-hdl) THEN
calc-col-hdl:SCREEN-VALUE =
STRING(Customer.CreditLimit - Customer.Balance).
END.
ASSIGN
num-hdl = browse-hdl:ADD-LIKE-COLUMN("Customer.CustNum").
name-hdl = browse-hdl:ADD-LIKE-COLUMN("Customer.Name").
address-hdl = browse-hdl:ADD-LIKE-COLUMN("Customer.Address").
calc-col-hdl = browse-hdl:ADD-CALC-COLUMN("INT","->,>>>,>>9.99", "",
"Credit Left").

/* Refresh needs to be done if ADD-CALC-COLUMN is done after the browse is
displayed. In ROW-DISPLAY trigger, we can only set the calc field?s
screen-value if the handle is set. And the handle is set after the
ADD-CALC-COLUMN method is done. */

browse-hdl:refresh().
browse-hdl:EXPANDABLE = YES.

ON ROW-LEAVE OF browse-hdl DO:
IF browse-hdl:CURRENT-ROW-MODIFIED THEN DO:
REPEAT jx = 1 TO browse-hdl:NUM-COLUMNS:
brws-col-hdl = browse-hdl:GET-BROWSE-COLUMN(jx).
IF brws-col-hdl:MODIFIED THEN DO:
buff-field-hdl = brws-col-hdl:BUFFER-FIELD.
/* If buff-field-hdl is unknown, this is a calculated field and cannot
be updated */
IF buff-field-hdl NE ? THEN
buff-field-hdl:BUFFER-VALUE = brws-col-hdl:SCREEN-VALUE.
END.
END.
END.
END.

ON CHOOSE OF btn-delete DO: /* LABEL "DeleteDynBrowse". */
DELETE WIDGET browse-hdl.
END.

ON CHOOSE OF btn-quit DO:
QUIT.
END.

ENABLE ALL WITH FRAME MyFrame.
WAIT-FOR CLOSE OF CURRENT-WINDOW.

Яр
Старожил
Сообщения: 172
Зарегистрирован: 29 июн 2006, 09:16
Откуда: Питер

Сообщение Яр » 18 сен 2008, 08:57

Теоретически, разницы между теорией и практикой нет.

Аватара пользователя
dmitri
Старожил
Сообщения: 1016
Зарегистрирован: 04 авг 2005, 16:19
Откуда: Pennsylvania, USA

Сообщение dmitri » 19 сен 2008, 00:46

Dmitri Levin and

Аватара пользователя
dmitri
Старожил
Сообщения: 1016
Зарегистрирован: 04 авг 2005, 16:19
Откуда: Pennsylvania, USA

Сообщение dmitri » 19 сен 2008, 23:46

Dmitri Levin and

Яр
Старожил
Сообщения: 172
Зарегистрирован: 29 июн 2006, 09:16
Откуда: Питер

Сообщение Яр » 22 сен 2008, 09:28

Теоретически, разницы между теорией и практикой нет.

Аватара пользователя
dmitri
Старожил
Сообщения: 1016
Зарегистрирован: 04 авг 2005, 16:19
Откуда: Pennsylvania, USA

Сообщение dmitri » 22 сен 2008, 18:00

Dmitri Levin and