Button

 

Button is a control element which triggers an event. It can show a text label, image, or both.

 

Button inserted in a Grid panel as seen in Lycia Form Designer (for better visibility, the button is painted blue by setting the fillColor property)

 

Form XML code:

 

<Button text="Button" identifier="bt1">

   <Button.onInvoke>

      <ActionEventHandler type="actioneventhandler" actionName="actDisplay"/>

   </Button.onInvoke>

</Button>

 

Theme element filter XML code:

 

<ElementFilter ElementName="Button">

   ...

</ElementFilter>

 

CSS element selector code:

 

qx-aum-button

.qx-aum-button .qx-text

.qx-aum-button .qx-image

 

Associated 4gl syntax:

DISPLAY ... TO

ON KEY 

ON ACTION 

 

Most commonly used form properties:

identifier

text

onInvoke

isToggleButton

enable

 

Most commonly used theme properties:

Image:

New Image

Image Url

Image Scaling

Image Position

Size

Background:

New Background

Fill Color

Background Image

Background Style

Size

Location

Margin

Padding

 

Inheritance diagram:

 

 

Associated ui methods:

SetEnable

GetEnable

SetOnInvoke

GetOnInvoke

SetImage

GetImage

SetIsToggleButton

GetIsToggleButton

SetIsPressed

GetIsPressed

SetAllowNewlines 

GetAllowNewlines 

Create

ForName

 

Influence and behavior:

 

 

 

 

 

To add a button to your form,

 

Step 1

Choose a Button widget from the widgets palette by left-clicking its icon:

 

 

Step 2

Select the place in the form where you want to put the button (in the screenshot below, we choose a cell in a Grid panel):

 

 

Step 3

Left-click the selected spot (cell or sector) to place the button there:

 

 

In a Grid panel, you can put a button between two columns and/or rows.

 

 

The button is now added to your form, and you can see it in the Structure view.

 

 

 

 

 

 

Here you can find out how to change the text of the button in the form:

 

 

Here you can find out how to change the text of the button at runtime using ui methods or DISPLAY ... TO statement.

 

 

 

 

 

You can change appearance properties of a button  in Lycia Form Designer. However, we recommend applying appearance properties via user themes and css.

 

To apply a property to a button, set its value in the user theme, directly or using filters.

In the example below, we make a button look different depending on whether it is active or inactive by applying Fill Color property with a Pseudo-Class filter.

 

property applied

in the user theme

 

theme XML code

<StyleSheet xmlns="http://querix.com">

  <ElementFilter ElementName="Button">

    <StyleSheet>

      <WithPseudoClassFilter PseudoClassName="Active">

        <StyleSheet>

          <DoStyleAction>

            <SetProperty>

              <PropertyPath>

                <PropertyName>Background</PropertyName>

                <PropertyName>FillColor</PropertyName>

              </PropertyPath>

              <PropertyValue type="CustomizedColor" RedColor="144" GreenColor="238" BlueColor="144" Alpha="255" />

            </SetProperty>

          </DoStyleAction>

        </StyleSheet>

      </WithPseudoClassFilter>

      <WithPseudoClassFilter PseudoClassName="Inactive">

        <StyleSheet>

          <DoStyleAction>

            <SetProperty>

              <PropertyPath>

                <PropertyName>Background</PropertyName>

                <PropertyName>FillColor</PropertyName>

              </PropertyPath>

              <PropertyValue type="CustomizedColor" RedColor="255" GreenColor="69" BlueColor="0" Alpha="255" />

            </SetProperty>

          </DoStyleAction>

        </StyleSheet>

      </WithPseudoClassFilter>

    </StyleSheet>

  </ElementFilter>

</StyleSheet>

runtime appearance

 

In the example below, we use css to change the text style of the button:

 

.qx-aum-button .qx-text {

    padding: 2px;

    padding: 5px 10px;

    color: white !important;

    font: bold 14px "Calibri","Helvetica Neue", Sans-Serif;

}

 

 

 

 

 

Buttons are active by default if their associated event exists in the current runtime scope. Otherwise, they will be inactive . However, this behavior can be disabled using the enable property.

At runtime, buttons can also be enabled/disabled.

To activate/deactivate buttons at runtime,

  assign them with actions with ON KEY / ON ACTION events,

ON KEY F5

ON ACTION "actionPrint"

  display provided symbols to them using DISPLAY ... TO:

DISPLAY "!" TO buttonIdentifier - to activate an inactive button;

DISPLAY "*" TO buttonIdentifier - to deactivate an active button;

DISPLAY "?" TO buttonIdentifier - to return to the automatic activation mode.

 

 

 

 

 

To change the button appearance at runtime,

  DISPLAY <string> TO buttonIdentifier  - changes the button label

 

DISPLAY "Submit" TO bt1

 

  DISPLAY <imageUri> TO buttonIdentifier - changes the image IF the button has NO text property tag:

 

DISPLAY "C:\Program Files\Querix\Lycia 3 Development Suite 7.1\Lycia\images\submit.jpg" TO bt1

 

 

 

 

 

At runtime, buttons can be manipulated with ui methods.

In the example below, we use ui methods to display an image to the button.

 

lycia form designer

 

4gl code

MAIN

  DEFINE bt_ui1,

         bt_ui2     ui.Button,

         image_ui   ui.Image,

         isImageSet SMALLINT

  

  OPEN WINDOW w1 WITH FORM "button_ui_setimage" ATTRIBUTE(BORDER)

  

  LET bt_ui1 = ui.Button.forName("bt1")

  CALL image_ui.setImageUrl("qx://application/ok.png")

  CALL bt_ui1.setText("Button for image")

  CALL bt_ui1.SetEnable(TRUE)

  

  MENU

    ON ACTION "Image"

      IF isImageSet THEN

        LET isImageSet = 0

        CALL bt_ui1.SetImage("")

      ELSE

        LET isImageSet = 1

        CALL bt_ui1.SetImage(image_ui)

      END IF

    ON ACTION exit

      EXIT MENU  

  END MENU

END MAIN

runtime appearance

isImageSet = 0

isImageSet = 1

 

In the example here, we use ui methods to create a toggle button.

 

 

Example programs:

CVS server: client.querix.com

CVS repository: /lycia_doc_examples

User: client

Project: user_interface/widgets

Program: button

                  button_ui

 

Related articles:

DISPLAY ... TO

ui Classes and Methods