|
Hi, CodeJock version 11.1.3 and the following (simplified) source written in OpenEdge, that I can't get to work. When I run the GetSetQuickFilter procedure directly it works,n if I change the QMATCH edit field it works, but when I run it from the ControlNotify on value changed of 'QFIELD' it don't work :-(
/* Create of controls */ chQFilterItem = chQFilterBar:Controls:Add({&xtpControlComboBox}, add-id("QFIELD":U, "TOOL":U), "Field to filter on":T40). chQFilterItem:WIDTH = 150. CREATE bmopt. ASSIGN bmopt.cAction = "QFIELD":U bmopt.main-type = "QFILTER":U bmopt.enable-when-clear = TRUE bmopt.chCodeJock = chQFilterItem bmopt.iCodeJockCreate = bm-option-icjseq bm-option-icjseq = bm-option-icjseq + 1. FOR EACH ttBrwFld NO-LOCK WHERE ttBrwFld.cBrwID = ttBrw.cBrwID AND ttBrwFld.lInQuickFilter BY ttBrwFld.iSeq: chQFilterItem:AddItem(ttBrwFld.cFilterLabel). END. chQFilterItem:Listindex = 1.
chQFilterItem = chQFilterBar:Controls:Add({&xtpControlComboBox}, add-id("QOPER":U, "TOOL":U), "Filter operator":T40). chQFilterItem:WIDTH = 150. CREATE bmopt. ASSIGN bmopt.cAction = "QOPER":U bmopt.main-type = "QFILTER":U bmopt.enable-when-clear = TRUE bmopt.chCodeJock = chQFilterItem bmopt.iCodeJockCreate = bm-option-icjseq bm-option-icjseq = bm-option-icjseq + 1. chQFilterItem:AddItem("Includes":T25). chQFilterItem:AddItem("Begins":T25). chQFilterItem:AddItem("Greater than":T25). chQFilterItem:AddItem("Greater than or equal":T25). chQFilterItem:AddItem("Less than":T25). chQFilterItem:AddItem("Less than or equal":T25). chQFilterItem:AddItem("Equal to":T25). chQFilterItem:AddItem("Not equal to":T25). chQFilterItem:Listindex = 1.
chQFilterItem = chQFilterBar:Controls:Add({&xtpControlEdit}, add-id("QMATCH":U, "TOOL":U), "Filter match information":T40). chQFilterItem:WIDTH = 150. CREATE bmopt. ASSIGN bmopt.cAction = "QMATCH":U bmopt.main-type = "QFILTER":U bmopt.enable-when-clear = TRUE bmopt.chCodeJock = chQFilterItem bmopt.iCodeJockCreate = bm-option-icjseq bm-option-icjseq = bm-option-icjseq + 1. chQFilterItem:Text = "<Not selected>":T25.
/* Notify of value changes in controls */ PROCEDURE CbfFrame.commandbarsframe.ControlNotify: DEFINE INPUT PARAMETER chSelf AS COM-HANDLE NO-UNDO. DEFINE INPUT PARAMETER iCode AS INTEGER NO-UNDO. DEFINE INPUT PARAMETER h1 AS HANDLE NO-UNDO. DEFINE OUTPUT PARAMETER lHandled AS LOGICAL NO-UNDO. CASE get-id(chSelf:ID): WHEN "QFIELD":U OR WHEN "QOPER":U THEN IF iCode = 8 THEN RUN GetSetQuickFilter. WHEN "QMATCH":U THEN IF iCode = 512 THEN RUN GetSetQuickFilter. END CASE. END PROCEDURE.
PROCEDURE GetSetQuickFilter PRIVATE: DEFINE BUFFER bmopt FOR bm-option. DEFINE BUFFER bmopt2 FOR bm-option.
FOR FIRST bmopt WHERE bmopt.cAction = "QMATCH":U AND bmopt.main-type = "QFILTER":U NO-LOCK: bmopt.chCodeJock:Text = "<Not selected>":T25. FOR FIRST bmopt2 WHERE bmopt2.cAction = "QOPER":U AND bmopt2.main-type = "QFILTER":U NO-LOCK: IF VALID-HANDLE(bmopt2.chCodeJock) THEN bmopt2.chCodeJock:Listindex = 1. /* bmopt2.chCodeJock:Text = "Includes":T25. */ END. END. END PROCEDURE.
|