Alpha Video Training
Results 1 to 13 of 13

Thread: xDialog Check Box for Unique List

  1. #1
    "Certified" Alphaholic
    Real Name
    Thomas Patten
    Join Date
    Apr 2000
    Location
    Duluth, MN
    Posts
    1,481

    Default xDialog Check Box for Unique List

    Hi,

    I'm trying to create an xDialog window to select unique values from a table for a Check Box - List Box.

    I don't see this option in the setup genie; or is it there and I'm missing it.

    I see all values, but I only want to see unique ones.

    Should I be doing a query first, then hand-off the table to the xDialog?

    Thanks,

    ~ Tom

  2. #2
    "Certified" Alphaholic
    Real Name
    Finian Lennon
    Join Date
    Apr 2000
    Location
    Atlanta, GA
    Posts
    1,797

    Default Re: xDialog Check Box for Unique List

    Off the top of my head, create your base filter in the setup genie and then click "Add condition". This will throw you into the expression creation window. Add ".AND.unique_key_value()" to the expression, then save and you should get what you want.
    Finian

  3. #3
    "Certified" Alphaholic Stan Mathews's Avatar
    Real Name
    Stan Mathews
    Join Date
    Apr 2000
    Location
    Bowling Green, KY
    Posts
    25,119

    Default Re: xDialog Check Box for Unique List

    There can be only one.

  4. #4
    "Certified" Alphaholic
    Real Name
    Thomas Patten
    Join Date
    Apr 2000
    Location
    Duluth, MN
    Posts
    1,481

    Default Re: xDialog Check Box for Unique List

    Stan - the picture says it all. There is was, and I missed it.

    and the code added was that which Finian suggested, ".AND.unique_key_value()"

    Thank you both.

    ~ Tom

  5. #5
    "Certified" Alphaholic
    Real Name
    Thomas Patten
    Join Date
    Apr 2000
    Location
    Duluth, MN
    Posts
    1,481

    Default Re: xDialog Check Box for Unique List

    One more question (always one more!)

    In the background of the image that Stan attached above, is an expression to hold the "Field or expression to display".

    How does one show an expression to display and another expression to capture?

    In my situation I want to display a Staffname field, but want to capture the Staffid field.

    I can add the two together using the "|" in an expression, but when I do that I cannot separate out just the staffid field.

    Another checkbox (I hope) or ???

    Thanks again,

    ~ Tom

  6. #6
    "Certified" Alphaholic Stan Mathews's Avatar
    Real Name
    Stan Mathews
    Join Date
    Apr 2000
    Location
    Bowling Green, KY
    Posts
    25,119

    Default Re: xDialog Check Box for Unique List

    I don't see a built in way to do that.

    You are capturing the result of the xdialog selection to a variable? You could capture the xbasic of the xdialog and add the code (at the end). The xbasic captured should end with

    %dlg%)

    the replacement

    Code:
    %dlg%,<<%code%
    if a_dlg_button = "OK"
    your_variable = word(your_variable,2,"|")
    end if
    %code%)
    This would change the variable's contents to the second column only.

    If you don't want the staffid visible in the xdialog you can make the expression

    Code:
    Staffname+"|              "+Staffid
    and adjust the width of the variable displayed. You would also need to change to your_variable = alltrim(word(your_variable,2,"|")).
    Last edited by Stan Mathews; 02-06-2018 at 11:48 AM.
    There can be only one.

  7. #7
    "Certified" Alphaholic
    Real Name
    Thomas Patten
    Join Date
    Apr 2000
    Location
    Duluth, MN
    Posts
    1,481

    Default Re: xDialog Check Box for Unique List

    Hi Stan,

    Thanks for taking a look at this. I just can't get it to work. I've added the code above to different places without success.

    The output I need is a string I can use to print reports; e.g. 00001 00002 00003 00004

    Thanks much Stan.

    ~ Tom

    Code:
    DIM SHARED v_pteid as C
    DIM SHARED varC_result as C
    auto_list_v_pteid = table.external_record_content_get("staff","trim(Fullname)+\"|\"+space(50)+Staffid","fullname","quitdate={}")
    
    Dim format as p 
    Format.tab_stops=""
    Format.odd_row_color="White"
    Format.even_row_color="Blue White"
    Format.odd_selected_color="Dark Blue"
    Format.even_selected_color="Dark Blue"
    Format.font="Arial,10"
    Format.font_color_unselected="Black"
    Format.font_color_selected="White"
    Format.lastbutton="OK"
    Format.group_size=1
    Format.number_rows=.f.
    Format.alternating_bands=.t.
    
    'Apply 'owner draw' formatting information to the list
    auto_list_v_pteid = a5_owner_draw_list_fmt(auto_list_v_pteid,Format)
    		
    temp_count = w_count(auto_list_v_pteid,crlf())
    DELETE a_v_pteid
    DIM a_v_pteid[temp_count] as c
    a_v_pteid.initialize(auto_list_v_pteid)
    ok_button_label = "&OK"
    cancel_button_label = "&Cancel"
    varC_result = ui_dlg_box("Select Staff",<<%dlg%
    {region}
    {Region}
    ;
    {Endregion};
    {Region}
    :| [%d;O={@@}%.40,20v_pteid^$$a_v_pteid];
    {Endregion}; 
    {Region}
    ;
    {Endregion};
    {line=1,0};
    <*15=ok_button_label!OK> <15=cancel_button_label!CANCEL>;
    {endregion};
    %dlg%)
    
    v_pteid = strtran(v_pteid,crlf()," ")
    
    ui_msg_box("Variable",v_pteid)
    END

  8. #8
    "Certified" Alphaholic
    Real Name
    Thomas Patten
    Join Date
    Apr 2000
    Location
    Duluth, MN
    Posts
    1,481

    Default Re: xDialog Check Box for Unique List

    Now I'm wondering if we need the "|" in the expression.

    Would it be any simpler to use the following just to get the Staffid out of sight.

    Code:
    auto_list_v_pteid = table.external_record_content_get("staff","trim(Fullname)+space(50)+Staffid","fullname","quitdate={}")
    ~ Tom

  9. #9
    "Certified" Alphaholic Stan Mathews's Avatar
    Real Name
    Stan Mathews
    Join Date
    Apr 2000
    Location
    Bowling Green, KY
    Posts
    25,119

    Default Re: xDialog Check Box for Unique List

    Yours did behave differently, as if the | wasn't part of the return value.

    Try this in your code.

    Code:
    v_pteid_tmp = *for_each(sid,word(sid.value,-1," "),v_pteid)
    v_pteid_tmp = remove_blank_lines(v_pteid_tmp)
    v_pteid_tmp = crlf_to_comma(v_pteid_tmp)
    v_pteid = v_pteid_tmp
    ui_msg_box("Variable",v_pteid)
    There can be only one.

  10. #10
    "Certified" Alphaholic Stan Mathews's Avatar
    Real Name
    Stan Mathews
    Join Date
    Apr 2000
    Location
    Bowling Green, KY
    Posts
    25,119

    Default Re: xDialog Check Box for Unique List

    You are likely correct, there is no reason to have columns (|) if you are going to not have them visible. With my locally constructed test the return value of the selection included the | so it was a convenient separator to pluck the staffid off the end of the return.
    There can be only one.

  11. #11
    "Certified" Alphaholic
    Real Name
    Thomas Patten
    Join Date
    Apr 2000
    Location
    Duluth, MN
    Posts
    1,481

    Default Re: xDialog Check Box for Unique List

    FANTASTIC - WORKS JUST AS I WANTED

    The magic is in this line: v_pteid_tmp = *for_each(sid,word(sid.value,-1," "),v_pteid)

    Since it takes the last word, it works with or without the "|"

    I would have never figured that out.

    Thanks again,

    Smiling Tom

  12. #12
    "Certified" Alphaholic Stan Mathews's Avatar
    Real Name
    Stan Mathews
    Join Date
    Apr 2000
    Location
    Bowling Green, KY
    Posts
    25,119

    Default Re: xDialog Check Box for Unique List

    I don't suppose it would ever be possible to have a person where the staffid has not been assigned? The code would then return their last name which might cause problems.
    There can be only one.

  13. #13
    "Certified" Alphaholic
    Real Name
    John Koh
    Join Date
    Jan 2004
    Location
    Maryland, USA
    Posts
    1,062

    Default Re: xDialog Check Box for Unique List

    Tom,

    Now I'm wondering if we need the "|" in the expression.
    {Region}
    :| [%d;O={@@}%.40,20v_pteid^$$a_v_pteid];
    {Endregion};
    This owner-draw box will work with " {data= + key_id +} ".

    This list Box can work with as Stan mentioned.
    {Region}
    :| [.40,20v_pteid^$$a_v_pteid];
    {Endregion};

Similar Threads

  1. Creating Embedded Xdialog for Check Box-List Box
    By aaronhaul in forum Alpha Five Version 10 - Desktop Applications
    Replies: 16
    Last Post: 07-12-2012, 09:51 AM
  2. Spell Check on Text Box in Xdialog, RichText xDialog
    By veach in forum Alpha Five Version 10 - Desktop Applications
    Replies: 4
    Last Post: 08-28-2011, 09:19 PM
  3. How to get only unique values using Xdialog and Record List-Combo box
    By Scott Kurimski in forum Alpha Five Version 10 - Desktop Applications
    Replies: 4
    Last Post: 10-25-2010, 08:38 AM
  4. XDialog Check Box List Box
    By Scott Emerick in forum Alpha Five Version 5
    Replies: 10
    Last Post: 06-16-2009, 03:31 PM
  5. Xdialog check box list: single select option
    By Jim Chapman in forum Archived Wishlist
    Replies: 6
    Last Post: 10-21-2005, 01:51 PM

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
  •