Sunday, September 16, 2018

Digest for comp.programming.threads@googlegroups.com - 5 updates in 5 topics

Horizon68 <horizon@horizon.com>: Sep 15 12:44PM -0700

Hello..
 
WinMenus using wingraph was updated to version 1.21
 
I have corrected something, and now the GUI components of the GUI unit
display correctly.
 
You can download WinMenus using wingraph version 1.21 from:
 
https://sites.google.com/site/scalable68/winmenus-using-wingraph
 
 
Thank you,
Amine Moulay Ramdane.
Horizon68 <horizon@horizon.com>: Sep 15 11:27AM -0700

Hello,
 
Read this:
 
Why am i implementing GUI components and the process by wich
you organize them into a more interesting and interactive GUI applications ?
 
You can still use Qt GUI libraries or the like , but what
i am doing is "learning" the Delphi and FreePascal community
how to design and to implement the following GUI components
with simple primitives of Wingraph that is like the graph
unit of Turbo Pascal:
 
- Button
- Label
- TextBox
- MessageBox
- Memo
- Panel
- RadioButton
- CheckBox
- ProgressBar
- TreeMenu
- Calendar
 
You have to know that "using" GUI libraries is much easier
but to be able to understand the "inside" of how to
implement sophisticated GUI components from
simple graphical primitives is better and is good to know.
 
More explanation of the GUI components..
 
Now the following GUI components are supported:
 
- Winmenus
- TextBox
- Label
- MessageBox
- Button
 
 
I will soon add a more powerful GUI component called TreeMenu,
it will look like the GUI of a file manager, but you will
be able to click on the callbacks and to search etc.
 
Also i will soon provide you with a calendar GUI component and with a
checkbox component.
 
 
To be able to see how the GUI components are working now,
please download the zip file from here:
 
https://sites.google.com/site/scalable68/winmenus-using-wingraph
 
And run the windows executables demos inside the zip to see
how my units are working, i have also provided you with all
the source code to be able to learn from them.
 
 
And my units are working with Delphi and FreePascal and C++Builder.
 
 
 
Thank you,
Amine Moulay Ramdane.
Horizon68 <horizon@horizon.com>: Sep 15 10:49AM -0700

Hello...
 
More explanation of the GUI components..
 
Now the following GUI components are supported:
 
- Winmenus
- TextBox
- Label
- MessageBox
- Button
 
 
I will soon add a more powerful GUI component called TreeMenu,
it will look like the GUI of a file manager, but you will
be able to click on the callbacks and to search etc.
 
Also i will soon provide you with a calendar GUI component and with a
checkbox component.
 
 
To be able to see how the GUI components are working now,
please download the zip file from here:
 
https://sites.google.com/site/scalable68/winmenus-using-wingraph
 
And run the windows executables demos inside the zip to see
how my units are working, i have also provided you with all
the source code to be able to learn from them.
 
 
And my units are working with Delphi and FreePascal and C++Builder.
 
 
 
Thank you,
Amine Moulay Ramdane.
Horizon68 <horizon@horizon.com>: Sep 15 10:27AM -0700

Hello...
 
Read this:
 
 
My much enhanced Winmenus using wingraph and my Graph3D units and GUI
unit are here, and they work with Delphi and FreePascal and C++Builder
 
Now the following GUI components are supported:
 
- Winmenus
- TextBox
- Label
- MessageBox
- Button
 
 
Author: Amine Moulay Ramdane
 
I have implemented Winmenus using wingraph, this one is graphical, i
have also included an Opengl demo and other demos , just execute the
real3d1.exe executable inside the zipfile to see how it is powerful, i
will soon enhance much more my Winmenus.
 
Now it is both compatible with Delphi and with FreePascal, now
it works with Delphi tokyo, but there is only one difference between
Delphi and FreePascal, the double click with the left button of the
mouse of freepascal is replaced in Delphi with a one click with the
middle button of the mouse to avoid a problem.
 
Description:
 
Drop-Down Menu widget using the Wingraph unit. Please look at the
real3d1.pas demo inside the zip file to know how to use it.
 
Use the 'Delete' on the keyboard to delete the items
Use the 'Insert' on the keyboard to insert the items
and use the 'Up' and 'Down' and 'PageUp and 'PageDown' on the keyboard
to scroll ..
and use the 'Tab' on the keyboard to switch between the Drop Down Menus
and 'Enter' on the keyboard or mouse double click(for FreePascal) or
middle mouse click(for Delphi) to select an item..
and the 'Esc' on the keyboard or right mouse click to exit..
and the 'F1' on keyboard to delete all the items from the list
and right arrow and left arrow to scroll on the left or on the right
 
You can search with SearchName() and NextSearch() methods and now the
search with wildcards inside the Widget is working perfectly.
 
Winmenus is event driven, i have to explain it more to you to understand
more...
 
At first you have to create your Widget menu by executing something like
this:
 
Menu1:=TMenu.create(5,5);
 
This will create a Widget menu at the coordinate in characters (x,y) = (5,5)
 
After that you have to set your callbacks,cause my Winmenus is event
driven, so you have to do it like this:
 
Menu1.SetCallbacks(insert,updown);
 
The SetCallbacks() method will set your callbacks, the first callback
is the callback that will be executed when the insert key is pressed and
here above it is the "insert()" function, and the second callback is the
callback that will be called when the up and down keys are pressed and
here above it is the function "updown" , the remaining callbacks that
you can assign are the following keys: Delete and F1 to F12.
 
After that you have to set your callback function, cause my Winmenus is
event driven, so you have to add an item with AddItem() and set the
callback function at the same time, like this:
 
AddItem('First 3D opengl demo',test1);
 
test1 will be the callback function.
 
After that you will enter a loop like this , the template of this loop
must look like the following, that's not difficult to understand:
 
Here it is:
 
===
 
while true do
begin
if mouse1.click
then
begin
 
ret:=Menu.Execute(true);
if ret=ctExit
then
begin
break;
end;
Menu.Execute(false);
end;
end;
 
 
==
 
When you execute menu1.execute(false) with a parameter equal to false my
Winmenus widget will draw your menu without waiting for your input and
events, when you set the parameter of the execute() method to true it
will wait for your input and events, if the parameter of the execute
method is true and the returned value of the execute method is ctTab
that means you have pressed on the Tab key.. if the returned value is
ctExit that means you have pressed on the Escape key to exit.
 
I have also included my Graph3D unit for 3D graphism, and i have
included GUI.pas unit that comes with more GUI components, please look
at the demo.pas demo inside the zip file to know how to use my Winmenus
unit and GUI unit to do GUI.
 
About the Graph3D unit: it looks like the Graph unit of turbo pascal but
it's for 3D graphism, and to understand the variables Rho,Theta,Phi,DE
of the InitProj() method of Graph3D unit, please read what's below:
 
When you run the demo program that is called cube3d.pas , here is the
keys of the keyboard that permits you to run it:
 
Right arrow: to increase the angle Theta(that is the variable Theta) to
move in the plane XY anti-clockwise.
 
Left arrow: to decrease the angle Theta(that is the variable Theta) to
move in the plane XY clockwise.
 
Top arrow: to increase the Phi(that is variable Phi) angle to move up
and look at the cube from above.
 
Bottom arrow: to decrease the Phi(that is variable Phi) angle to move
down and look at the cube from below.
 
Key A: to decrease R(that is variable Rho) to get closer to the cube, we
can even penetrate it and pass behind, in the latter case the image
obtained will be the opposite.
 
Key E: to increase R(that is variable Rho) to move away from the cube.
 
Key +: to increase the distance D(that is variable DE) between the
screen and the eye, this causes an enlargement of the image.
 
Key -: to decrease the distance D(that is variable DE) between the
screen and the eye, this causes the image to shrink and possibly be an
inverse magnification if D becomes negative, ie if the screen passes
behind the observer.
 
Key C: to move from perspective projection to parallel projection and
vice versa. During this toggle the parameters which were current are
stored in auxiliary variables (RhoResp, DEResp for the perspective and
RhoPara, DEPara for the parallel projection) in order to be able to
return to it correctly afterwards.
 
Key F: To end the runnning program.
 
 
You can download the zip files for Delphi and FreePascal from:
 
https://sites.google.com/site/scalable68/winmenus-using-wingraph
 
 
Language: FPC Pascal v2.2.0+ / Delphi 7+: http://www.freepascal.org/
 
Operating Systems: Windows..
 
And the following define configurations inside the defines.inc file:
 
{$DEFINE CPU32} for 32 bit systems
 
{$DEFINE CPU64} for 64 bit systems
 
 
***********************************************************
IMPORTANT NOTE:
This software is provided 'as-is', without any express or
implied warranty. In no event will the author be held
liable for any damages arising from the use of this
software.
Permission is granted to anyone to use this software for
any purpose, including commercial applications and redistribute it
freely, subject to the following restrictions:
 
1. The origin of this software must not be misrepresented,
you must not claim that you wrote the original software.
If you use this software in a product, an acknowledgment
in the product documentation would be appreciated but is
not required.
 
2. This notice may not be removed or altered from any
source distribution.
***********************************************************
 
If you make some money with my softwares in commercial projects, be kind
to make a donation to me in form of an amount of money. To make this
donation, please contact me by email and i will give you my personal
information to where you will send this donation.
 
Disclaimer:
 
This software is provided on an "as-is" basis, with no warranties,
express or implied. The entire risk and liability of using it is yours.
Any damages resulting from the use or misuse of this software will be
the responsibility of the user.
 
 
Thank you.
 
Amine Moulay Ramdane.
Horizon68 <horizon@horizon.com>: Sep 15 10:20AM -0700

Hello..
 
 
My much enhanced Winmenus using wingraph and my Graph3D units and GUI
unit are here..
 
Now the following GUI components are supported:
 
- Winmenus
- TextBox
- Label
- MessageBox
- Button
 
 
Author: Amine Moulay Ramdane
 
I have implemented Winmenus using wingraph, this one is graphical, i
have also included an Opengl demo and other demos , just execute the
real3d1.exe executable inside the zipfile to see how it is powerful, i
will soon enhance much more my Winmenus.
 
Now it is both compatible with Delphi and with FreePascal, now
it works with Delphi tokyo, but there is only one difference between
Delphi and FreePascal, the double click with the left button of the
mouse of freepascal is replaced in Delphi with a one click with the
middle button of the mouse to avoid a problem.
 
Description:
 
Drop-Down Menu widget using the Wingraph unit. Please look at the
real3d1.pas demo inside the zip file to know how to use it.
 
Use the 'Delete' on the keyboard to delete the items
Use the 'Insert' on the keyboard to insert the items
and use the 'Up' and 'Down' and 'PageUp and 'PageDown' on the keyboard
to scroll ..
and use the 'Tab' on the keyboard to switch between the Drop Down Menus
and 'Enter' on the keyboard or mouse double click(for FreePascal) or
middle mouse click(for Delphi) to select an item..
and the 'Esc' on the keyboard or right mouse click to exit..
and the 'F1' on keyboard to delete all the items from the list
and right arrow and left arrow to scroll on the left or on the right
 
You can search with SearchName() and NextSearch() methods and now the
search with wildcards inside the Widget is working perfectly.
 
Winmenus is event driven, i have to explain it more to you to understand
more...
 
At first you have to create your Widget menu by executing something like
this:
 
Menu1:=TMenu.create(5,5);
 
This will create a Widget menu at the coordinate in characters (x,y) = (5,5)
 
After that you have to set your callbacks,cause my Winmenus is event
driven, so you have to do it like this:
 
Menu1.SetCallbacks(insert,updown);
 
The SetCallbacks() method will set your callbacks, the first callback
is the callback that will be executed when the insert key is pressed and
here above it is the "insert()" function, and the second callback is the
callback that will be called when the up and down keys are pressed and
here above it is the function "updown" , the remaining callbacks that
you can assign are the following keys: Delete and F1 to F12.
 
After that you have to set your callback function, cause my Winmenus is
event driven, so you have to add an item with AddItem() and set the
callback function at the same time, like this:
 
AddItem('First 3D opengl demo',test1);
 
test1 will be the callback function.
 
After that you will enter a loop like this , the template of this loop
must look like the following, that's not difficult to understand:
 
Here it is:
 
===
 
while true do
begin
if mouse1.click
then
begin
 
ret:=Menu.Execute(true);
if ret=ctExit
then
begin
break;
end;
Menu.Execute(false);
end;
end;
 
 
==
 
When you execute menu1.execute(false) with a parameter equal to false my
Winmenus widget will draw your menu without waiting for your input and
events, when you set the parameter of the execute() method to true it
will wait for your input and events, if the parameter of the execute
method is true and the returned value of the execute method is ctTab
that means you have pressed on the Tab key.. if the returned value is
ctExit that means you have pressed on the Escape key to exit.
 
I have also included my Graph3D unit for 3D graphism, and i have
included GUI.pas unit that comes with more GUI components, please look
at the demo.pas demo inside the zip file to know how to use my Winmenus
unit and GUI unit to do GUI.
 
About the Graph3D unit: it looks like the Graph unit of turbo pascal but
it's for 3D graphism, and to understand the variables Rho,Theta,Phi,DE
of the InitProj() method of Graph3D unit, please read what's below:
 
When you run the demo program that is called cube3d.pas , here is the
keys of the keyboard that permits you to run it:
 
Right arrow: to increase the angle Theta(that is the variable Theta) to
move in the plane XY anti-clockwise.
 
Left arrow: to decrease the angle Theta(that is the variable Theta) to
move in the plane XY clockwise.
 
Top arrow: to increase the Phi(that is variable Phi) angle to move up
and look at the cube from above.
 
Bottom arrow: to decrease the Phi(that is variable Phi) angle to move
down and look at the cube from below.
 
Key A: to decrease R(that is variable Rho) to get closer to the cube, we
can even penetrate it and pass behind, in the latter case the image
obtained will be the opposite.
 
Key E: to increase R(that is variable Rho) to move away from the cube.
 
Key +: to increase the distance D(that is variable DE) between the
screen and the eye, this causes an enlargement of the image.
 
Key -: to decrease the distance D(that is variable DE) between the
screen and the eye, this causes the image to shrink and possibly be an
inverse magnification if D becomes negative, ie if the screen passes
behind the observer.
 
Key C: to move from perspective projection to parallel projection and
vice versa. During this toggle the parameters which were current are
stored in auxiliary variables (RhoResp, DEResp for the perspective and
RhoPara, DEPara for the parallel projection) in order to be able to
return to it correctly afterwards.
 
Key F: To end the runnning program.
 
Language: FPC Pascal v2.2.0+ / Delphi 7+: http://www.freepascal.org/
 
Operating Systems: Windows..
 
And the following define configurations inside the defines.inc file:
 
{$DEFINE CPU32} for 32 bit systems
 
{$DEFINE CPU64} for 64 bit systems
 
 
***********************************************************
IMPORTANT NOTE:
This software is provided 'as-is', without any express or
implied warranty. In no event will the author be held
liable for any damages arising from the use of this
software.
Permission is granted to anyone to use this software for
any purpose, including commercial applications and redistribute it
freely, subject to the following restrictions:
 
1. The origin of this software must not be misrepresented,
you must not claim that you wrote the original software.
If you use this software in a product, an acknowledgment
in the product documentation would be appreciated but is
not required.
 
2. This notice may not be removed or altered from any
source distribution.
***********************************************************
 
If you make some money with my softwares in commercial projects, be kind
to make a donation to me in form of an amount of money. To make this
donation, please contact me by email and i will give you my personal
information to where you will send this donation.
 
Disclaimer:
 
This software is provided on an "as-is" basis, with no warranties,
express or implied. The entire risk and liability of using it is yours.
Any damages resulting from the use or misuse of this software will be
the responsibility of the user.
 
 
Thank you.
 
Amine Moulay Ramdane.
You received this digest because you're subscribed to updates for this group. You can change your settings on the group membership page.
To unsubscribe from this group and stop receiving emails from it send an email to comp.programming.threads+unsubscribe@googlegroups.com.

No comments: