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

My 1st Grid Component on the Desktop

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

    #16
    Re: My 1st Grid Component on the Desktop

    Hi Al,
    My guess is that all the features that be added to a browse and its events, browse buttons, on click events, etc., would get converted too in the XD genie. Funny how things can escape your (my) attention for so long. Which is why I love this forum - I have gotten some great ideas here.
    Robin

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

    Comment


      #17
      Re: My 1st Grid Component on the Desktop

      Originally posted by MoGrace View Post
      Hi Al,
      My guess is that all the features that be added to a browse and its events, browse buttons, on click events, etc., would get converted too in the XD genie. Funny how things can escape your (my) attention for so long. Which is why I love this forum - I have gotten some great ideas here.
      Better than a guess is that they do.
      Al Buchholz
      Bookwood Systems, LTD
      Weekly QReportBuilder Webinars Thursday 1 pm CST

      Occam's Razor - KISS
      Normalize till it hurts - De-normalize till it works.
      Advice offered and questions asked in the spirit of learning how to fish is better than someone giving you a fish.
      When we triage a problem it is much easier to read sample systems than to read a mind.
      "Make it as simple as possible, but not simpler."
      Albert Einstein

      http://www.iadn.com/images/media/iadn_member.png

      Comment


        #18
        Re: My 1st Grid Component on the Desktop

        Bump to AL

        I have created some functions to display XD browses - which is nice because you can set the display size that the regular browse won't hold. My question is how to pass variables for width and size to the card statement? I tried it on other modeless XD and it worked, but not with the card. Any ideas?

        this is the line

        {card=96,30BrowseCard_XDbrw1};

        I suppose since the XD window is sizable, an inital setting should be ok without it...
        Robin

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

        Comment


          #19
          Re: My 1st Grid Component on the Desktop

          Robin it's easy just change the line to:

          {card=**vcn1**,**vcn2**BrowseCard_XDbrw1};

          Than just before the ui_dlg_box()

          put:

          dlg_body = strtran(dlg_body,"**vcn1**",your_char_var_new_num1)
          dlg_body = strtran(dlg_body,"**vcn2**",your_char_var_new_num2)
          Last edited by Allen Klimeck; 11-17-2014, 11:34 AM.

          Comment


            #20
            Re: My 1st Grid Component on the Desktop

            Thanks Allen
            Are the asterisks arbitrary, or required? Or did you just pick that symbol for the character string?

            Cause if that's all there is to it, it should work in any xd...
            Robin

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

            Comment


              #21
              Re: My 1st Grid Component on the Desktop

              The asterisks are arbitrary used just to make sure that the replaced text is unique as the strtran function will replace any match it finds. EVALUATE_STRING() could be used too. It will work with any XD.

              Comment


                #22
                Re: My 1st Grid Component on the Desktop

                Originally posted by MoGrace View Post
                Thanks Allen
                Are the asterisks arbitrary, or required? Or did you just pick that symbol for the character string?

                Cause if that's all there is to it, it should work in any xd...
                Yes, exactly. And it does.

                If you have a lot of variables to replace you could also use EVALUATE_TEMPLATE().
                Code:
                dim width_lvc as C = "10"
                dim height_lvc as C = "20"
                
                
                test = "{card={width_lvc},{height_lvc}BrowseCard_XDbrw1};"
                ?evaluate_string(test)
                = "{card=10,20BrowseCard_XDbrw1};"

                This sort of thing works any place that plain text is used to define an object.

                Since we are talking embedded browses in xDialog you can apply the same technique to the XML definition of the browse. I have dynamically specified the columns of the browse depending on a parameter passed into the main function.

                EDIT: oops to slow. :-)
                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


                  #23
                  Re: My 1st Grid Component on the Desktop

                  Now you guys have me confused. In Allen's example, he replaced the char vars in the card statement with numeric vars. but in Tim's example he did not - yet the char vars evaluate Ok. I had tried Tim's example with numeric vars and it didn't work - so which is it I need to do? My thought is that in the dlg_body, char vars are needed since it is part of the string, so why is stritran needed? According to Tim's ex. No substitution should be needed (?)
                  Robin

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

                  Comment


                    #24
                    Re: My 1st Grid Component on the Desktop

                    Yes I was afraid that that might confuse needs to be char variables. You can use ether function to do the replacement.

                    Comment


                      #25
                      Re: My 1st Grid Component on the Desktop

                      Thanks again Allen,
                      I think I will use numeric vars for the function parameters then convert them to char for the xd string - seems it will be more intuitive to use that way.
                      Robin

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

                      Comment


                        #26
                        Re: My 1st Grid Component on the Desktop

                        Originally posted by MoGrace View Post
                        Bump to AL

                        I have created some functions to display XD browses - which is nice because you can set the display size that the regular browse won't hold. My question is how to pass variables for width and size to the card statement? I tried it on other modeless XD and it worked, but not with the card. Any ideas?

                        this is the line

                        {card=96,30BrowseCard_XDbrw1};

                        I suppose since the XD window is sizable, an inital setting should be ok without it...
                        Here's an addition from the second Al.

                        This is a help entry that describes what the others are discussing.

                        http://wiki.alphasoftware.com/~alpha...t+from+Strings

                        Like all help entries this is a seed to designer for using the system to their advantage.
                        Last edited by Al Buchholz; 11-17-2014, 01:09 PM.
                        Al Buchholz
                        Bookwood Systems, LTD
                        Weekly QReportBuilder Webinars Thursday 1 pm CST

                        Occam's Razor - KISS
                        Normalize till it hurts - De-normalize till it works.
                        Advice offered and questions asked in the spirit of learning how to fish is better than someone giving you a fish.
                        When we triage a problem it is much easier to read sample systems than to read a mind.
                        "Make it as simple as possible, but not simpler."
                        Albert Einstein

                        http://www.iadn.com/images/media/iadn_member.png

                        Comment


                          #27
                          Re: My 1st Grid Component on the Desktop

                          Since we have moved from WCD to an embedded browse in a XD - which are composed of strings; How would I go about removing lines in a Tree that have no result?

                          This is my example of the list that populates a tree:

                          vlist = <<%list%
                          Bitmaps|!sortsubstr(a5.bitmap_enum(2),crlf())
                          Browse|!sortsubstr(a5.browse_enum(2),crlf())
                          Colors|!sortsubstr(a5.color_enum(),crlf())
                          Forms|!sortsubstr(a5.form_enum(2),crlf())
                          Functions|!sortsubstr(a5.udf_enum(2),crlf())
                          Menus|!sortsubstr(a5.menu_enum(2),crlf())
                          Operations|Append|!sortsubstr(a5.append_enum(2),crlf())
                          Operations|Copy|!sortsubstr(a5.copy_enum(2),crlf())
                          Operations|Labels|!sortsubstr(a5.label_enum(2),crlf())
                          Operations|Mark|!sortsubstr(a5.mark_enum(2),crlf())

                          Operations|Posts|!sortsubstr(a5.post_enum(2),crlf())
                          Operations|Saved Queries|!sortsubstr(a5.query_enum(2),crlf())
                          Operations|Updates|!sortsubstr(a5.update_enum(2),crlf())
                          Reports|!sortsubstr(a5.report_enum(2),crlf())
                          Sets|!sortsubstr(a5.set_enum(),crlf())
                          Scripts|!sortsubstr(a5.script_enum(2),crlf())
                          Tables|!sortsubstr(a5_table_enum_actual(.f.),crlf())
                          Toolbars|!sortsubstr(a5.toolbar_enum(2),crlf())
                          %list%

                          In the particular database I am working with - there are no labels and only a few operations, so some lines instead of returning a blank, show the code in the list that appears after the '!'. This is no doubt coming from the error of trying to sort on a blank result. How would I get rid of them before showing the list in the XD?
                          Robin

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

                          Comment


                            #28
                            Re: My 1st Grid Component on the Desktop

                            You would need to build the list line by line:

                            vlist = ""

                            if a5.bitmap_enum(2)<>""
                            vlist = vlist + "Bitmaps|!sortsubstr(a5.bitmap_enum(2),crlf())" + crlf()
                            end if
                            if a5.browse_enum(2)<>""
                            vlist = vlist + "Browse|!sortsubstr(a5.browse_enum(2),crlf())" + crlf()
                            end if

                            ...and so on....

                            Comment


                              #29
                              Re: My 1st Grid Component on the Desktop

                              I really don't know why I am so intimidated by character & list conversions - you guys always make it easier than it looks to me!

                              Can I keep this thread going just for my personal instruction...

                              I feel a *For_Each() coming on - think I will play with that for a while.
                              Robin

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

                              Comment


                                #30
                                Re: My 1st Grid Component on the Desktop

                                Back to my XD embedded browse - I am trying to add a rollup feature, but am getting this error when using the rolldown button that should just rerun the original modeless XD:

                                This is from the 'init' event:

                                Code:
                                if a_dlg_button = "init"
                                        a_dlg_button = ""    
                                        [COLOR="#0000CD"]XD_brw_PO = a5_XdialogDefaultBrowse(dlg_title,"Browsecard_XDbrwPO",XDbrwPO_tablename,"XDbrwPO_browse_definition")[/COLOR]        
                                        'The status bar is only shown if the browse is based on an active-link table.
                                        'When the browse is fetching data from the server, the status bar displays progress.
                                        'However, when the browse is not fetching from the server, if the 'status_format' is not set to null, then 
                                        'the status bar will display 'Record x'. Since we don't want any display, we set the status_format to null.
                                        'Note that the status_format can be set to any expression that evaluates in the context of the current record.
                                        'e.g. "Record for" + lastname
                                        [COLOR="#0000CD"]XDbrwPO.Status_format = "\"\""[/COLOR]
                                end if
                                My function is XD_Brw_PO() but the object is XDbrwPO, and it doesn't seem to make a difference which I use. When I put the script inside the
                                function it changed automatically to the above. I was getting an error on the Status_format line and when I changed it the error went away.

                                Code:
                                'From the original dlg_event code:   this works as expected
                                
                                if a_dlg_button = "ROLLUP"   
                                   ui_modeless_dlg_box(dlg_title,dlg_rollup,rollup_code)
                                end if
                                
                                
                                DLG_ROLLUP = <<%dlg%
                                {xmargin=2,2}
                                {can_exit=close}
                                {position=remember=test_dialog}
                                {background=System-InfoBackground}
                                <10,Close> <%T=Roll Down;B=T;I=$$generic.roll.down%!ROLLDOWN>
                                %dlg%
                                
                                ROLLUP_CODE = <<%code%
                                if a_dlg_button = "CLOSE"
                                   go_rec = ""
                                   ui_modeless_dlg_close(dlg_title)
                                end if
                                
                                'this is where the error is:
                                
                                if a_dlg_button = "ROLLDOWN"  
                                   ui_modeless_dlg_box(dlg_title,dlg_body,dlg_event)
                                end if
                                %code%
                                Maybe I need to recall my function instead???
                                Attached Files
                                Last edited by MoGrace; 11-25-2014, 10:55 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