Alpha Video Training
Results 1 to 6 of 6

Thread: Sometimes multi-select listbox?

  1. #1
    Member
    Real Name
    Blake Watson
    Join Date
    Jan 2003
    Posts
    961

    Default Sometimes multi-select listbox?

    I'm building an xDialog that is primarily a pair of listboxes. The user clicks on the left listbox to select a category, and then selections that may be chosen for that category are shown on the right.

    I've got the code working so that the listbox on the right changes when the listbox on the left is clicked. View the "Xdialog KeyList Filter Syntax" thread for details on how, plus here's the code I'm using:


    varC_result = ui_dlg_box("Select Project Requirements",
    %dlg%,"OK" then
    a_dlg_button=""
    end if


    The problem I face now is that the right dialog box should sometimes be multi-select, and sometimes allow only a single selection.

    Since changing the contents of the right list box was no problem, I though I might be able to simulate a "single select list box" by intercepting the changing event of the right listbox (vsels/vlist) to clear out VSELS:


    if ltype="D" then
    vsels=""
    end if


    This does not work. I'm not too terribly surprised by that as A5 probably doesn't expect to get "interrupted" in the middle of its change cycle.

    Right now, the only solution I can see to this problem is to use "macro substitution". This is described by Selwyn in the "Xdialog KeyList Filter Syntax" thread, though in there he says that it's "explained in the Learning Xdialog book", and I can't find any instance of the word macro appearing in either the PDF "Learning Xdialog" and the "Xdialog Reference" does not have any topic containing the word "macro". Nonetheless, it doesn't appear to be too complicated.

    Is there another solution, however. If I could know WHICH item had been clicked on in the right dialog box, I could simply replace this code:


    vsels = table.external_record_content_get("wprojectselections", "Value", "", "Field="+quote(tsel)+" .AND. Project_no="+quote(projno))


    with


    vsels = a_currently_selected_item


    Any seasoned vets tackle this problem before?

  2. #2
    Former Alpha Employee JerryBrightbill's Avatar
    Real Name
    Jerry Brightbill
    Join Date
    Apr 2000
    Posts
    5,173

    Default RE: Sometimes multi-select listbox?

    Blake

    Another possibility is using an embedded xdialog for the right side. You could have two different embedded versions, one single select, one multiselect, and build the one you need based on the conditions. The help documents do show an example.

    Jerry

  3. #3
    Member
    Real Name
    Daniel Weiss
    Join Date
    May 2000
    Location
    Monsey, NY
    Posts
    506

    Default RE: Sometimes multi-select listbox?

    just a simple example


    DIM main_list as C
    DIM list2 as C
    DIM select_many as L
    select_many = .t.
    DIM varC_result as C
    DELETE a_main_list
    DIM a_main_list[2] as c
    dim temp_list as c
    temp_list =
    {endregion};
    %dlg%,

  4. #4
    Member
    Real Name
    Blake Watson
    Join Date
    Jan 2003
    Posts
    961

    Default RE: Sometimes multi-select listbox?

    Thanks, Jerry & Dan!

    Intriguingly enough, the code you posted didn't quite work on this machine, Dan. (I say "intriguingly" because it looked like you posted it from working code.) I hate to change this:


    temp_list =

    To this:


    temp_list = "select many" + crlf()+ "select one"


    In a probably related situation, "Item 20" doesn't show up on my dialog, only one through 19.

    However, that shows me what I need to know, so thanks again!

  5. #5
    "Certified" Alphaholic Keith Hubert's Avatar
    Real Name
    Keith Hubert
    Join Date
    Jul 2000
    Location
    London, UK
    Posts
    6,930

    Default RE: Sometimes multi-select listbox?

    Hi Blake

    Here is a script that I adapted sometime ago. Put it into Alphasports. Let us know if this is what you were trying to do.

    Keith Hubert
    London.

    'Created By :Selwyn Rabins
    'Updated By :Keith Hubert
    DIM SHARED a_selected[100] as C
    DIM SHARED varC_result as C

    auto_list_cities = table.external_record_content_get("customer","Bill_city","Bill_city","unique_key_value()")
    temp_count = w_count(auto_list_cities,crlf())
    DIM a_cities[temp_count] as c
    a_cities.initialize(auto_list_cities)
    ok_button_label = "&OK"
    cancel_button_label = "&Cancel"
    varC_result = ui_dlg_box("Print Report",
    {endregion};
    %dlg%, "" then
    filter = alltrim(cities)
    filter = *for_each(x,"bill_city = " + quote(x), filter)
    filter = alltrim(filter)
    filter = stritran(filter,crlf()," .or. ")
    report.preview("Customer List",filter)
    end if

  6. #6
    Member
    Real Name
    Blake Watson
    Join Date
    Jan 2003
    Posts
    961

    Default RE: Sometimes multi-select listbox?

    Keith,

    Thanks for chiming in. Your code was actually the basis for what I'm using. I liked the simplicity of the table.external_record_content_get call (though I'm having problems with it as you can see on the board).

    The pointers on conditional objects here (and extensive consulting of the PDFs and CHMs) made it possible for me to do the switcheroo as needed.

    Thanks again!

    ===Blake===

Similar Threads

  1. Need some Multi-Select Help
    By Bill Walker in forum Alpha Five Version 6
    Replies: 7
    Last Post: 08-20-2006, 09:07 PM
  2. Multi-Select Doesn't Work
    By Howard G. Cornett in forum Web Application Server v6
    Replies: 9
    Last Post: 08-29-2005, 11:35 AM
  3. Process multi-select listbox data
    By dik_coleman in forum Alpha Five Version 6
    Replies: 7
    Last Post: 04-30-2005, 12:12 PM
  4. Non-xDialog multi-select listbox
    By Blake in forum Alpha Five Version 5
    Replies: 2
    Last Post: 04-14-2004, 10:20 PM
  5. Set Multi-Select Listbox Start Value
    By Blake in forum Alpha Five Version 5
    Replies: 6
    Last Post: 02-05-2003, 10:52 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •