Alpha Software Mobile Development Tools:   Alpha Anywhere    |   Alpha TransForm subscribe to our YouTube Channel  Follow Us on LinkedIn  Follow Us on Twitter  Follow Us on Facebook

Announcement

Collapse

The Alpha Software Forum Participation Guidelines

The Alpha Software Forum is a free forum created for Alpha Software Developer Community to ask for help, exchange ideas, and share solutions. Alpha Software strives to create an environment where all members of the community can feel safe to participate. In order to ensure the Alpha Software Forum is a place where all feel welcome, forum participants are expected to behave as follows:
  • Be professional in your conduct
  • Be kind to others
  • Be constructive when giving feedback
  • Be open to new ideas and suggestions
  • Stay on topic


Be sure all comments and threads you post are respectful. Posts that contain any of the following content will be considered a violation of your agreement as a member of the Alpha Software Forum Community and will be moderated:
  • Spam.
  • Vulgar language.
  • Quotes from private conversations without permission, including pricing and other sales related discussions.
  • Personal attacks, insults, or subtle put-downs.
  • Harassment, bullying, threatening, mocking, shaming, or deriding anyone.
  • Sexist, racist, homophobic, transphobic, ableist, or otherwise discriminatory jokes and language.
  • Sexually explicit or violent material, links, or language.
  • Pirated, hacked, or copyright-infringing material.
  • Encouraging of others to engage in the above behaviors.


If a thread or post is found to contain any of the content outlined above, a moderator may choose to take one of the following actions:
  • Remove the Post or Thread - the content is removed from the forum.
  • Place the User in Moderation - all posts and new threads must be approved by a moderator before they are posted.
  • Temporarily Ban the User - user is banned from forum for a period of time.
  • Permanently Ban the User - user is permanently banned from the forum.


Moderators may also rename posts and threads if they are too generic or do not property reflect the content.

Moderators may move threads if they have been posted in the incorrect forum.

Threads/Posts questioning specific moderator decisions or actions (such as "why was a user banned?") are not allowed and will be removed.

The owners of Alpha Software Corporation (Forum Owner) reserve the right to remove, edit, move, or close any thread for any reason; or ban any forum member without notice, reason, or explanation.

Community members are encouraged to click the "Report Post" icon in the lower left of a given post if they feel the post is in violation of the rules. This will alert the Moderators to take a look.

Alpha Software Corporation may amend the guidelines from time to time and may also vary the procedures it sets out where appropriate in a particular case. Your agreement to comply with the guidelines will be deemed agreement to any changes to it.



Bonus TIPS for Successful Posting

Try a Search First
It is highly recommended that a Search be done on your topic before posting, as many questions have been answered in prior posts. As with any search engine, the shorter the search term, the more "hits" will be returned, but the more specific the search term is, the greater the relevance of those "hits". Searching for "table" might well return every message on the board while "tablesum" would greatly restrict the number of messages returned.

When you do post
First, make sure you are posting your question in the correct forum. For example, if you post an issue regarding Desktop applications on the Mobile & Browser Applications board , not only will your question not be seen by the appropriate audience, it may also be removed or relocated.

The more detail you provide about your problem or question, the more likely someone is to understand your request and be able to help. A sample database with a minimum of records (and its support files, zipped together) will make it much easier to diagnose issues with your application. Screen shots of error messages are especially helpful.

When explaining how to reproduce your problem, please be as detailed as possible. Describe every step, click-by-click and keypress-by-keypress. Otherwise when others try to duplicate your problem, they may do something slightly different and end up with different results.

A note about attachments
You may only attach one file to each message. Attachment file size is limited to 2MB. If you need to include several files, you may do so by zipping them into a single archive.

If you forgot to attach your files to your post, please do NOT create a new thread. Instead, reply to your original message and attach the file there.

When attaching screen shots, it is best to attach an image file (.BMP, .JPG, .GIF, .PNG, etc.) or a zip file of several images, as opposed to a Word document containing the screen shots. Because Word documents are prone to viruses, many message board users will not open your Word file, therefore limiting their ability to help you.

Similarly, if you are uploading a zipped archive, you should simply create a .ZIP file and not a self-extracting .EXE as many users will not run your EXE file.
See more
See less

Xdialog: double click selection in list and add to another list

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Xdialog: double click selection in list and add to another list

    We really need a forum just for Xdialog...

    I have a rollup progressive search list box where the user can type in a fileno or a first or last name to filter the list then make his selection and open a form and go to that record - works swell.

    But now I have a need to create another listbox whereby a doubleclick event can be trapped from the first and add that selection to the 2nd list so when used in rollup mode, the user can go back to a previous selection without having to do the search again. This is the old version without the rollup feature cause I didn't want to upload another pic - the new version added a rollup button.

    Basically a smaller listbox would appear below the main list with room for maybe 5 selections. Then hopefully doubleclicking in that list will do the same as the first list does with buttons.

    My question is: how to get the 2nd list populated?
    Attached Files
    Robin

    Discernment is not needed in things that differ, but in those things that appear to be the same. - Miles Sanford

    #2
    Re: Xdialog: double click selection in list and add to another list

    Robin,
    This I believe would be relative to the code and method you are using to produce the first progressive look up. Saying you have a "rollup progressive search list box" doesn't completely define that, at least for me. It appears to me you are using a List View Control or maybe a keylist_build method for that. Since those two methods are beyond my coding skills, I don't use them, I roll my own using table.external_record_content_get, filter_string_smatch(), and xdialog events and have been able to make pretty much any ultra specialty dialog needed, like the one you are describing. But maybe if you share what method you have going, then maybe that's a start to your endpoint.
    Mike W
    __________________________
    "I rebel in at least small things to express to the world that I have not completely surrendered"

    Comment


      #3
      Re: Xdialog: double click selection in list and add to another list

      Mike,
      I am using the genie created keylist build. I got my test XD to work, but am having a few problems integrating the new feature into the original script. Will post back when it starts working again...that is if I don't mess them both up in the meantime.
      Robin

      Discernment is not needed in things that differ, but in those things that appear to be the same. - Miles Sanford

      Comment


        #4
        Re: Xdialog: double click selection in list and add to another list

        One small problem, it seems a click in the list box also triggers the dblclick event- should that be the case? I am only using specified events, ie. No event_*. Can a click be trapped so it does nothing?
        Last edited by MoGrace; 11-11-2014, 01:51 PM.
        Robin

        Discernment is not needed in things that differ, but in those things that appear to be the same. - Miles Sanford

        Comment


          #5
          Re: Xdialog: double click selection in list and add to another list

          Robin when you add events all of the events will fire. So if you name your event "pick_dblclick" it will assign that event name to a_dlg_button whatever event fires. So you must use "pick_*" and trap for it. Here are two scrips "Event_viewer" and "Select_city" taken from Xdialog lessons and modified. Select_city has double click added to the list.


          Event Viewer
          Code:
          dim events[100] as C 
          colors = "Red,Green,Blue,Yellow,Orange,Pink" 
          colors = stritran(colors,",",crlf()) 
          item_selected = "Shirt" 
          dim a_colors[10] as C 
          a_colors.initialize(colors) 
          a_colors.sort("ab") 
          ui_dlg_box("Pick a Color",<<%dlg% 
          Item: [.18item_selected^={Shirt,Tie,Pants,Jacket}!item_*]; 
          Double click on a color. |Event Name; 
          [.25,10color_selected^#a_colors!color_*] |[.25,20^#events]; 
          {text=50,1:txt}; 
          {lf}; 
          <15Close!close> |<15Clear Events!clear> 
          %dlg%,<<%code% 
          events[events.first_empty()] = a_dlg_button 
          'trace.writeln(a_dlg_button) 
          if a_dlg_button = "Clear" 
                         events.clear() 
                         a_dlg_button = "" 
          else if a_dlg_button = "Close" then 
                         'do nothing - the dialog will close 
          else 
                         a_dlg_button = "" 
          end if 
          %code%)
          Select City
          Code:
          list1 = "Boston,New York,Chicago,London,Cape Town,Sydney,Toronto,Los Angeles,Tokyo,Johannesburg,Bulawayo,"
          list1 = list1 + "Washington,Denver,Atlanta,Paris,Rome"
          list1 = stritran(list1,",",crlf())
          dim a_list1[100] as C
          a_list1.initialize(list1)
          a_list1.sort("ab")
          dim a_list2[100] as C
          dim list1_selected as N
          dim list2_selected as N
          list1_selected = 1
          list2_selected = 1
          flag_add = .t.
          flag_remove = .f.
          ui_dlg_box("List Picker",<<%dlg%
          {region0}
          Select the cities you would like to visit on your Grand World Tour.;
          Choose the cities in the order in which you would like to visit them.;
          {region1}
          {lf};
          {region2}
          Available Cities;
          [.25,15list1_selected^#a_list1!city_*];
          {endregion2}|
          {region20}{sp};{endregion20}|
          {region3}
          {lf};
          {lf};
          {lf};
          <15Add?flag_add>;
          <15Add all?flag_add>  ;
          <15Remove?flag_remove>;
          <15Remove all?flag_remove>
          {endregion3}|
          {region20}{sp};{endregion20}|
          {region4}
          Selected Cities;
          [.25,15list2_selected^#a_list2] ;
          {text=20text1};
          {text=20text_prev};
          <10Up?flag_remove> <10Down?flag_remove>
          {endregion4}
          {endregion1}
          {endregion0}
          |
          {region5}
           <15&OK>;
           <15&Cancel>
          {endregion5}
          %dlg%,<<%code%
          if left(a_dlg_button,5) = "city_" 'check for double click!!!
          	vcbutton = a_dlg_button ' save a_dlg_button
          	a_dlg_button = "" 'clear a_dlg_button hold box open
          	if vcbutton = "city_dblclick"
          			if list1_selected > 0 then
          			first_empty_on_list2 = a_list2.first_empty()
          			a_list2[first_empty_on_list2] = a_list1[list1_selected]
          			a_list1.delete(list1_selected,1)
          			list2_selected = first_empty_on_list2
          			'after adding an entry, move the focus up to previous city,
          			'unless you were already on the first city.
          			if a_list1[list1_selected] = "" .and. list1_selected > 1 then
          				list1_selected = list1_selected-1
          			else
          				list1_selected = list1_selected
          			end if
          			'turn on the Remove flags
          			flag_remove = .t.
          			'if there are no more entries in list1, turn off Add flags
          			if a_list1[list1_selected] = "" then
          				flag_add = .f.
          			end if
          		end if
          	end if
          end if
          if a_dlg_button = "Add" then
              a_dlg_button = ""
              if list1_selected > 0 then
                  first_empty_on_list2 = a_list2.first_empty()
                  a_list2[first_empty_on_list2] = a_list1[list1_selected]
                  a_list1.delete(list1_selected,1)
                  list2_selected = first_empty_on_list2
                  'after adding an entry, move the focus up to previous city,
                  'unless you were already on the first city.
                  if a_list1[list1_selected] = "" .and. list1_selected > 1 then
                      list1_selected = list1_selected-1
                  else
                      list1_selected = list1_selected
                  end if
                  'turn on the Remove flags
                  flag_remove = .t.
                  'if there are no more entries in list1, turn off Add flags
                  if a_list1[list1_selected] = "" then
                      flag_add = .f.
                  end if
              end if
          end if
          if a_dlg_button = "Remove" then
              a_dlg_button = ""
              if list2_selected > 0 then
                  first_empty_on_list1 = a_list1.first_empty()
                  value_to_remove = a_list2[list2_selected]
                  a_list1[first_empty_on_list1] = a_list2[list2_selected]
                  a_list2.delete(list2_selected,1)
                  a_list1.sort("ab")
                  list1_selected = a_list1.find(value_to_remove)
                  if list2_selected > 1 then
                      list2_selected = list2_selected-1
                  else
                      list2_selected = 1
                  end if
                  if a_list2[list2_selected] = "" then
                      flag_remove = .f.
                  end if
                  flag_add = .t.
              end if
          end if
          if a_dlg_button = "Up" then
              a_dlg_button = ""
              if list2_selected <> 1 then
                  a_list2.move(list2_selected,list2_selected-1)
                  list2_selected = list2_selected - 1
              end if
          End if
          if a_dlg_button = "Down" then
              a_dlg_button = ""
              if list2_selected < a_list2.first_empty()-1 then
                  a_list2.move(list2_selected,list2_selected+1)
                  list2_selected = list2_selected + 1
              end if
          end if
          If a_dlg_button = "Add all" then
              a_dlg_button = ""
              tempstring = a_list2.dump("r")+a_list1.dump("r")
              a_list2.clear()
              a_list2.initialize(tempstring)
              a_list1.clear()
              list2_selected = 1
              flag_remove = .t.
              flag_add = .f.
          end if
          If a_dlg_button = "Remove all" then
              a_dlg_button = ""
              tempstring = a_list1.dump("r")+a_list2.dump("r")
              a_list2.clear()
              a_list1.initialize(tempstring)
              list1_selected = 1
              a_list1.sort("ab")
              flag_remove = .f.
              flag_add = .t.
          end if
          %code%)

          Comment


            #6
            Re: Xdialog: double click selection in list and add to another list

            Robin,

            I am using the genie created keylist build.
            Did you know the "Keylist Build" will not accept typical Events (dblclick, killfocus, change... ) .
            If you are trying

            Code:
            If  left(a_dlg_button,5) = "List_" then
                  
                 if a_dlg_button = "list_dblclick"            'It will not work with KeyList Build. 
                         'event here.... 
                         'open 2nd xdialog
            
                 end if
            end if
            Last edited by johnkoh; 11-12-2014, 11:05 AM. Reason: typo

            Comment


              #7
              Re: Xdialog: double click selection in list and add to another list

              Thanks Allen,

              I have seen this example but did not understand it:

              Code:
              if left(a_dlg_button,5) = "city_" 'check for double click!!!
              	vcbutton = a_dlg_button ' save a_dlg_button
              	a_dlg_button = "" 'clear a_dlg_button hold box open
              	if vcbutton = "city_dblclick"
              ....
              Now I think I understand why I am getting more results that I wanted because of other untrapped events in the script - I will try this and see if it helps me.
              Robin

              Discernment is not needed in things that differ, but in those things that appear to be the same. - Miles Sanford

              Comment


                #8
                Re: Xdialog: double click selection in list and add to another list

                John, (and Mike)
                I did not know that about keylist build - problem is the genie creates that code and puts in the code to refresh the list. If I use table.external_record_content_get() I've also increased my problems cause now I have to figure out how to do that too!

                But I will try not to be too big a baby about it...
                Robin

                Discernment is not needed in things that differ, but in those things that appear to be the same. - Miles Sanford

                Comment


                  #9
                  Re: Xdialog: double click selection in list and add to another list

                  I got it!

                  Let me know what you think
                  Attached Files
                  Robin

                  Discernment is not needed in things that differ, but in those things that appear to be the same. - Miles Sanford

                  Comment


                    #10
                    Re: Xdialog: double click selection in list and add to another list

                    Very nice well done!!!

                    Comment


                      #11
                      Re: Xdialog: double click selection in list and add to another list

                      Nice Job. I like it.
                      Tim Kiebert
                      Eagle Creek Citrus
                      A complex system that does not work is invariably found to have evolved from a simpler system that worked just fine.

                      Comment


                        #12
                        Re: Xdialog: double click selection in list and add to another list

                        Thanks guys,
                        Notice the keylist build was not the problem, once I was only trapping the event I needed like Allen showed. The type in box however did not work with that method - only the list boxes.

                        I like using XD, if only there was more info. Hopefully this will be an example that helps do that. Like I said at the start - it would be great to have a forum section that was only about xdialog.
                        Robin

                        Discernment is not needed in things that differ, but in those things that appear to be the same. - Miles Sanford

                        Comment


                          #13
                          Re: Xdialog: double click selection in list and add to another list

                          Just thought I'd show what the final version for my live data looks like. In the rolled up xd, I shortened the displayed title using {title=Search EE} since it fits the smaller xd box better. Besides adding the header area, I also put {position=remember=test_dialog) in both so if either the expanded or contracted xd is moved the location is remembered. I tried to use {dockable=float} so I could open as floating but optionally dock the toolbar on the right, but couldn't get it to work right.

                          If I get really ambitious, perhaps I could make one of these search bars that is dockable and reads the table of the currently open form...
                          Attached Files
                          Robin

                          Discernment is not needed in things that differ, but in those things that appear to be the same. - Miles Sanford

                          Comment


                            #14
                            Re: Xdialog: double click selection in list and add to another list

                            Originally posted by MoGrace View Post
                            ...... If I get really ambitious, perhaps I could make one of these search bars that is dockable and reads the table of the currently open form...
                            Funny you should say that 'cause I experimented with your previous sample and did just that. Its not hard. take you five minutes. :-)
                            Tim Kiebert
                            Eagle Creek Citrus
                            A complex system that does not work is invariably found to have evolved from a simpler system that worked just fine.

                            Comment


                              #15
                              Re: Xdialog: double click selection in list and add to another list

                              Tim, could you give me a clue...please

                              Edit: btw, I found the XD example using table.external_record_content_get() in the 'plain' Listbox genie - haven't tried it yet tho.
                              Last edited by MoGrace; 11-12-2014, 10:50 PM.
                              Robin

                              Discernment is not needed in things that differ, but in those things that appear to be the same. - Miles Sanford

                              Comment

                              Working...
                              X