FDO Tutorial: Lesson 3 -
Buttons by Tau
This lesson will show how buttons can be placed on forms
along with and how you can use atom properties to customize
the buttons.
The form we will be using throught this lesson is the one
that was made in the last lesson. The code is shown below. uni_start_stream
man_start_object <ind_group, "Test - Lesson3">
mat_orientation <vff>
mat_position <center_center>
mat_bool_resize_vertical <no>
mat_precise_width <300>
mat_precise_height <150>
mat_bool_precise <yes>
mat_art_id <1-1-40898>
mat_bool_background_pic <yes>
man_end_object
man_update_display
uni_end_stream
Adding a Button
To place the first object on the form you add the following
atom after the form properties: man_start_object <class,
"Caption">
Note that this is only for one object on the form,
additional objects require a different atom. So to add a
command button to this form with the caption of "Test" the
following code would be used:
uni_start_stream
man_start_object <ind_group, "Test - Lesson2">
mat_orientation <vff>
mat_position <center_center>
mat_bool_resize_vertical <no>
mat_precise_width <300>
mat_precise_height <150>
mat_bool_precise <yes>
mat_art_id <1-1-40898>
mat_bool_background_pic <yes>
man_start_object <trigger, "Test">
man_end_object
man_update_display
uni_end_stream
Note that "trigger" is the class name for buttons. This
alone will not do anything though. It would be like drawing a
picture without knowing what to draw, what size, shapes,
colors, and everything else. So the properties need to be
added. Setting the Properties
Properties for the button follow the man_start_object and
for easy reading it is indented one more space.
- mat_bool_default
<Yes or No> - Determines
if the button is default. If it is, then when enter is
pressed on the form the button will be activated.
- mat_trigger_style
<rectangle> - Makes the button a
rectangle.
- mat_font_sis
<font, size,
attributes> - This determines the properties of
the caption of the button. Font is the font that the button
will have, size is the size of the caption text, and
attributes can be normal, bold, italic, or underline
- mat_color_face
<R, G, B> - Sets
the background color of the button in RGB format. Values can
be 0 to 255 for each. RGB values can be found here.
- mat_color_text
<R, G, B> - Sets
the color of the caption in RGB format. Values can be 0 to
255 for each. RGB values can be found here.
- mat_color_top_edge
<R, G, B> - Sets
the color of the top edge in RGB format. Values can be 0 to
255 for each. RGB values can be found here.
- mat_color_bottom_edge <R,
G, B> - Sets the color of the bottom edge
in RGB format. Values can be 0 to 255 for each. RGB values
can be found here.
- mat_horizontal_spacing
<#> - Sets the spacing between
the button and the object above it.
- mat_precise_width
<#> - Sets the width of the
button in pixels.
- mat_precise_height
<#> - Sets the height of the
button in pixels.
- mat_precise_x
<#> - Sets the vertical distance
from the top of the form that the bottom will be.
- mat_precise_y
<#> - Sets the horizontal
distance from the left of the form that the button will be.
- mat_art_hint_title
<"caption"> - This is a preview
of the button that will appear while it is loading. It will
only be viewable for a short amount of time, if at all
depending on how quickly the form loads
- mat_art_id
<id> - This will set the picture
of the button. id is the art record of the picture.
- mat_font_size
<#> - Sets the font size of the
button if mat_font_sis is not being used.
- mat_context_help
<"caption"> - Sets the text seen
when the mouse is moved over the button.
- mat_relative_tag
<#> - Sets the buttons relative
ID which will be explained in a later lesson.
The following code is for a single button to be placed in
the bottom right corner of the form. Using the properties
above and with some of your own testing you can easily master
designing buttons. Quite a talent, eh? uni_start_stream
man_start_object <ind_group, "Test - Lesson3">
mat_orientation <vff>
mat_position <center_center>
mat_bool_resize_vertical <no>
mat_precise_width <300>
mat_precise_height <150>
mat_bool_precise <yes>
mat_art_id <1-1-40898>
mat_bool_background_pic <yes>
man_start_object <trigger, "Test">
mat_context_help <"Click here!">
mat_trigger_style <rectangle>
mat_bool_precise <yes>
mat_precise_width <70>
mat_precise_height <24>
mat_precise_x <220>
mat_precise_y <120>
mat_font_sis <arial, 8, normal>
mat_color_face <0, 109, 170>
mat_color_text <255, 255, 255>
mat_color_top_edge <145, 182, 255>
mat_color_bottom_edge <1, 1, 1>
man_end_object
man_end_object
man_update_display
uni_end_stream
This will result in:
mat_end_object is placed after all the properties of the
button to show that you are done setting its properties.
Infinite amount of designs can be made with this code.
While designing your own forms you can look at the Atomc
Debugger FDO stream. Search for "trigger" in the FDO stream
and look at the code for other buttons. Most are made using
the properties above. Actions
What fun is a button that cannot do anthing? Add the
following code after the last property of the button: act_replace_select_action
<
uni_start_stream
code
uni_end_stream
>
code can be many things. For example, if you want to
make a message box saying, "Hey! This is my first button
test!" then you could replace code with: async_alert <info, "Hey! This is my first button
test!">
Another simple thing you do is send token arguments.
Replace code with: sm_send_token_arg
<"L1", 28> and it would take you to the Enter
Private Chat form. Putting it all
together
uni_start_stream
man_start_object <ind_group, "Test - Lesson3">
mat_orientation <vff>
mat_position <center_center>
mat_bool_resize_vertical <no>
mat_precise_width <300>
mat_precise_height <150>
mat_bool_precise <yes>
mat_art_id <1-1-40898>
mat_bool_background_pic <yes>
man_start_object <trigger, "Test">
mat_context_help <"Click here!">
mat_trigger_style <rectangle>
mat_bool_precise <yes>
mat_precise_width <70>
mat_precise_height <24>
mat_precise_x <220>
mat_precise_y <120>
mat_font_sis <arial, 8, normal>
mat_color_face <0, 109, 170>
mat_color_text <255, 255, 255>
mat_color_top_edge <145, 182, 255>
mat_color_bottom_edge <1, 1, 1>
act_replace_select_action
<
uni_start_stream
sm_send_token_arg <"L1", 28>
uni_end_stream
>
man_end_object
man_end_object
man_update_display
Simple, right? Well mess with it, you'll get it eventually.
;) |