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

How can I dynamically make an action button text change?

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

    How can I dynamically make an action button text change?

    I would like to make the text on an action button reflect the value that I have in a session variable.
    I have tired what is in the image below.
    button_session_variables.jpg
    I am a bit confused about the syntax on the button, or if this is even possible.

    I tried
    <%A5 ?session.meal1%>
    which works just about everywhere else.

    The bottom of the box mentions a5 language tags, with which I am not familiar, but it shows them as opening and closing tags like <a5:r> </a5:r>. The help on the box does not mention using any other type of a5 tag.

    I am not having any luck getting this to work; any help would be greatly appreciated.
    Thanks.
    Jay
    Jay Talbott
    Lexington, KY


    #2
    Re: How can I dynamically make an action button text change?

    There's probably a way better method of getting this done... but here's one way... and it follows the rules...

    In your OnGridExecute event, you get to alter the grid settings which are held in e.tmpl. When you're in the coding part for this event, click the "XBasic" tab at the bottom. Now find your Action Button code... the one you're after for your button will be something like...

    Code:
    DIM tmpl.controls[1] as P
    with  tmpl.controls[1]
    	.idInternal = "905fd687-e589-423d-a3ac-175a45b00d83"
    	.type = "Button"
    	.Name = "SHOWSESSION"
    	.trailingSeparator = .T.
    	.bubbleHelp = ""
    	.readDataFrom = "GridPart"
    	.actionJSAttribute = ""
    	.actionJSGlobal = ""
    	.actionXbasic = ""
    	.actionClientSideXbasic = ""
    	.buttonStyle = "Text only"
    	.buttonClass = "[class.gridButton]"
    	.buttonClassHover = "[class.gridButtonHover]"
    	.buttonClassPressed = "[class.gridButtonPressed]"
    	.buttonClassDisabled = "[class.gridButtonDisabled]"
    	.buttonInlineStyle = ""
    	.buttonText = "ShowSessionVar"
    	.hyperlinkClass = "[class.gridHyperlinkButton]"
    	.hyperlinkInlineStyle = ""
    	.hyperlinkImagePosition = "None"
    	.textClass = ""
    	.textInlineStyle = ""
    	.imageName = ""
    	.hoverImageName = ""
    	.pressedImageName = ""
    	.disabledimageName = ""
    	.imageClass = ""
    	.imageInlineStyle = ""
    	.securityGroups = ""
    	.serverSideShowHideExpression = ""
    	.readDataFromForClientSideExpns = "GridPart"
    	.clientSideShowHideExpression = ""
    	.clientSideEnableExpression = ""
    	.precalc.watchJavascriptShowHide = ""
    	.precalc.watchJavascriptEnable = ""
    	.precalc.watchColumnsShowHide = ""
    	.precalc.watchColumnsEnable = ""
    	.precalc.JStoSetupWatchEvents = ""
    	.precalc.buttonObjectJavascript = <<%str%
    window['{grid.componentName}_BUTTONS_SHOWSESSION'] = new A5.Button({
    	layout: 'text',
    	className: '[class.gridButton]',
    	hoverClassName: '[class.gridButtonHover]',
    	pressedClassName: '[class.gridButtonPressed]',
    	disabledClassName: '[class.gridButtonDisabled]',
    	html: 'ShowSessionVar',
    	onClick: function() { 
    },
    	theme: '{grid.style}'
    });%str%
    	.precalc.objectHTML = "<button type=\"button\" id=\"{id}\"></button>&nbsp;"
    	.precalc.objectName = "{grid.componentName}_BUTTONS_SHOWSESSION"
    	.precalc.bindJS = "{grid.componentName}_BUTTONS_SHOWSESSION.bind({bindIdList});"
    end with
    We don't need all this code... just this part...

    Code:
    	.precalc.buttonObjectJavascript = <<%str%
    window['{grid.componentName}_BUTTONS_SHOWSESSION'] = new A5.Button({
    	layout: 'text',
    	className: '[class.gridButton]',
    	hoverClassName: '[class.gridButtonHover]',
    	pressedClassName: '[class.gridButtonPressed]',
    	disabledClassName: '[class.gridButtonDisabled]',
    	html: 'ShowSessionVar',
    	onClick: function() { 
    },
    	theme: '{grid.style}'
    });%str%

    Copy this part of the code as change it so that it looks like the code below... the only change is that we're assigning the button code to btnJS instead of .precalc.buttonObjectJavascript


    Code:
    dim btnJS as c
    btnJS = <<%str%
    window['{grid.componentName}_BUTTONS_SHOWSESSION'] = new A5.Button({
    	layout: 'text',
    	className: '[class.gridButton]',
    	hoverClassName: '[class.gridButtonHover]',
    	pressedClassName: '[class.gridButtonPressed]',
    	disabledClassName: '[class.gridButtonDisabled]',
    	html: 'NewNewButtonName',
    	onClick: function() { 
    },
    	theme: '{grid.style}'
    });%str%
    Next, find and change our button label text to what we want... and assign the whole thing back to e.tmpl

    Code:
    dim newJS as c
    newJS = stritran(btnJS, "NewNewButtonName", Session.vname)
    
    e.tmpl.controls[1].precalc.buttonObjectJavascript = newJS

    So... my Action Button had the Button Label Text as "NewNewButtonName". Give your button label a fairly unique name. We assign the button code to our variable btnJS. Then we use stritran to replace our button label text with our session variable. Then, assign it back to e.tmpl.controls[1].precalc.buttonObjectJavascript.

    It actually works!

    Comment


      #3
      Re: How can I dynamically make an action button text change?

      Jay -

      Had to try this and yep, it sure is odd:

      dynamic_button_test1.jpg

      Works as intended in a Tabbed UI Button but copy and paste the code from the same HTML editor into an Action Button and ... nope

      This is one of the "strange ways" of A5 ... what works in one place, won't (doesn't) in another. It's the same user interface for both button text entries, yet there is nothing there to indicate what will work where

      David -

      Will have to give that a go :)

      Cheers!
      Lyle
      Cheers!
      Lyle Chamney
      http://www.2ninerniner2.com/
      Websites rebuilt with WordPress
      http://goodcheapfastwebsites.com/
      Complete, ready to install WordPress websites
      http://snifflevalve.com
      WordPress training and tutorials

      Comment


        #4
        Re: How can I dynamically make an action button text change?

        If it works for you to set the button text in the OnGridExecute event, you could do something like this:

        Code:
        oldText = <<%a%
        html: 'Test'%a%
        
        newText = <<%a%
        html: 'Replaced'%a%
        
        jtxt = e.tmpl.controls[1].precalc.buttonObjectJavascript
        jtxt = stritran(jtxt, oldtext, newText)
        
        e.tmpl.controls[1].precalc.buttonObjectJavascript = jtxt
        This assumes the label in design is "Test" and you want to replace it witih "Replaced", but shoving the value of a session variable very simple

        Edit: Wait - this is just what David suggested. Gonna leave this here anyway. I didn't read enough before I did this.
        -Steve
        sigpic

        Comment


          #5
          Re: How can I dynamically make an action button text change?

          Thanks all.
          Will give it a try and report back.
          Jay
          Jay Talbott
          Lexington, KY

          Comment


            #6
            Re: How can I dynamically make an action button text change?

            I must be visually impaired. I do not see e.tmpl.controls in the watch window of the OnGridExecute event of the grid.
            What the heck am I missing?
            Thanks.
            Jay
            Jay Talbott
            Lexington, KY

            Comment


              #7
              Re: How can I dynamically make an action button text change?

              Edit your Grid and, at the bottom, you'll see two tabs... Settings (which is what you're in when the Grid opens for editing) and the other tabs is XBasic. If you look at the XBasic you'll your grid in code. There's lots of stuff in here but you can't change anything. Even if you do it won't hurt, but it won't affect anything. If you scoll down the code you'll see code similar to what's in the posts above.

              In the onGridExecute Event, you'll see the notes that talk about stuff you can do... and one of them is to affect the e.tmpl component definition... and that's what we're changing.

              If you put a debug(1) statement into the onGridExecute event, you can see the e. object and e.tmpl and e.tmpl.controls etc.

              Comment


                #8
                Re: How can I dynamically make an action button text change?

                Although I am keenly interested in the outcome of what will work for this, I am even more interested in why it works in one place (tabbed UI button) but not in another (action button). On the surface (the A5 user interface), there is no rhyme nor reason. Or, is this just the "A5 Way", much like when I was living in Quebec and asked why one is "le" and another is "la" and they invariably replied "well, that's just the way it is."
                Cheers!
                Lyle Chamney
                http://www.2ninerniner2.com/
                Websites rebuilt with WordPress
                http://goodcheapfastwebsites.com/
                Complete, ready to install WordPress websites
                http://snifflevalve.com
                WordPress training and tutorials

                Comment


                  #9
                  Re: How can I dynamically make an action button text change?

                  Thanks, David.
                  That was the push I needed.
                  Here is what I ended up using, and it works great:
                  e.tmpl.controls[1].precalc.buttonObjectJavascript = <<%str1%
                  window['{grid.componentName}_BUTTONS_BUTTONBREAKFAST'] = new A5.Button({
                  layout: 'text',
                  className: '[class.gridButton]',
                  hoverClassName: '[class.gridButtonHover]',
                  pressedClassName: '[class.gridButtonPressed]',
                  disabledClassName: '[class.gridButtonDisabled]',
                  html: %str1%

                  e.tmpl.controls[1].precalc.buttonObjectJavascript = e.tmpl.controls[1].precalc.buttonObjectJavascript+"'Copy to all "+session.meal1+"s'"
                  e.tmpl.controls[1].precalc.buttonObjectJavascript = e.tmpl.controls[1].precalc.buttonObjectJavascript+<<%str2%
                  ,
                  onClick: function() {
                  },
                  theme: '{grid.style}'
                  });%str2%
                  although I am sure I can cut this back drastically per your instructions above. I just wanted to make sure it worked first, which is does. Now to improve the form....
                  Jay
                  Jay Talbott
                  Lexington, KY

                  Comment


                    #10
                    Re: How can I dynamically make an action button text change?

                    living in Quebec and asked why one is "le" and another is "la"
                    In school, I never, ever understood how to tell if a word was masculine or feminine. I always felt it was a language you needed to live in, in order to understand it. C'est la vie.

                    Comment


                      #11
                      Re: How can I dynamically make an action button text change?

                      Alternate way...publish your session var in the grid (in properties), then put this onGridRenderComplete (javascript):

                      var myPointer = {grid.componentName}_BUTTONS_SHOWMARKERS //name of buttom
                      if (myPointer) {
                      myPointer.html = 'My session var is: ' + {grid.Object}.getSessionVariable('USERCODE'); //session var
                      myPointer.refresh(); //refresh the button
                      }

                      I prefer this to explicitly referring to control[1], plus it is handy to have the session variable in the client-side (javascript) environment anyways.

                      Andy.

                      Comment

                      Working...
                      X