Older Version
Newer Version
Alyce
Jun 20, 2011
=ColorDialog=
[[user:Alyce]]
[[toc|flat]]
----
=What is a ColorDialog?=
The ColorDialog is a Windows dialog that allows users to select an RGB color from a visual display. Liberty BASIC's ColorDialog command opens the simple form, which looks like this:
[[image:colordialogclosed.jpg]]
When the user clicks the button to "define custom colors" the ColorDialog window opens another pane and looks like this:
[[image:colordialogopen.jpg]]
=Syntax=
The syntax forthe ColorDialog command is as follows.
[[code format="lb"]]
colordialog color$, chosen$
[[code]]
The parameter color$ can be an empty string, but it must be included. The color chosen by the user is contained in the variable "chosen$" after the dialog is closed. The input parameter may be in one of two forms. It can be a named Liberty BASIC color, or a string containing the red, green, blue values of the desired color with which to seed the colordialog. Remember that this is a string, and that the values are NOT separated by commas.
[[code format="lb"]]
'named Liberty BASIC color as input string:
color$="red"
or
'RGB color as input string:
color$="255 0 0"
colordialog color$, chosen$
[[code]]
The color specification can be placed as a literal string into the colordialog:
[[code format="lb"]]
colordialog "red", chosen$
or
colordialog "255 0 0", chosen$
[[code]]
=RGB Range=
Red, green and blue values must each be in the range of 0 to 255. 0 is the absence of a color, and 255 is total saturation. The RGB for red is 255 0 0, while blue is 0 0 255. Black has an RGB of 0 0 0, and white is 255 255 255. Any RGB where the values for red, green and blue are equal will be a shade of gray. Example: RGB 127 127 127.
=Contents of the Returned String=
If the user chooses a named, Liberty BASIC color, then chosen$ will contain both the red, green, blue values and the name. If the chosen color is not a named color, then the return will contain only the red, green and blue values:
[[code format="lb"]]
color$="255 0 0"
colordialog color$, chosen$
print chosen$
'will print RGB and name for a named color
'255 255 0 yellow
'will print RGB only for a non-named color:
'250 230 190
[[code]]
=ColorDialog Usage=
The colordialog opens to the simple view, allowing the user to choose a color from one of the standard color boxes. The user can click the button "Define Custom Colors" to open the panel that provides access to all possible RGB combinations.
[[image:colordialogclosed.jpg]] [[image:colordialogopen.jpg]]
=Parsing the Returned String with Word$()=
Here is a little demo to help you parse the returned string. The first word$() in the string will be the red value. The second word$() will be the green value and the third word$() will be the blue value. If there is a fourth word$(), it will be the Liberty BASIC named color.
[[code format="lb"]]
color$="52 202 113"
colordialog color$, chosen$
print "Red is ";word$(chosen$,1)
print "Green is ";word$(chosen$,2)
print "Blue is ";word$(chosen$,3)
if word$(chosen$,4)<>"" then
print "Name is ";word$(chosen$,4)
end if
[[code]]
If you are going to fill a graphicbox with the color chosen by the user, then check for the fourth word$(). If it exists, then the command will look like this:
[[code format="lb"]]
print #1.gbox, "fill ";word$(chosen$,4)
[[code]]
If the user didn't choose a named color, then make a color out of the red, green and blue.
[[code format="lb"]]
color$=word$(chosen$,1)+" "+word$(chosen$,2)+" "+word$(chosen$,3)
print #1.gbox, "fill ";color$
[[code]]
=Demo=
The following demo program allows the user to choose a color with the ColorDialog. The returned string is parsed. If it contains a fourth word, that is a named color and it is used. If there is not a fourth word, the first three words are used to build an RGB color, and that is used. A graphics window is then filled with the selected color and the color value is printed in the window.
[[code format="lb"]]
color$="52 202 113"
colordialog color$, chosen$
red$ = word$(chosen$,1)
green$ = word$(chosen$,2)
blue$ = word$(chosen$,3)
if word$(chosen$,4)<>"" then
selColor$ = word$(chosen$,4)
else
selColor$ = red$;" ";green$;" ";blue$
end if
nomainwin
open "Colordialog Demo" for graphics_nsb as #g
#g "down; place 20 100; color black"
#g "fill ";selColor$
#g "backcolor ";selColor$
#g "\Selected color is ";selColor$
#g "flush"
#g "trapclose [quit]"
wait
[quit] close #g:end
[[code]]
----
[[toc|flat]]