MSEide MSEgui Howto
English · Русский
Demos and examples
https://github.com/mse-org/mseuniverse/
Win32 Application Icon and Properties
1) Prepare the resource source files in the directory of your program:
File "version_data.rc":
1 VERSIONINFO
FILEVERSION 4,0,3,17
PRODUCTVERSION 3,0,0,0
FILEFLAGSMASK 0
FILEOS 0x40000
FILETYPE 1
{
BLOCK "StringFileInfo"
{
BLOCK "040904E4"
{
VALUE "CompanyName","JSC TashkentP"
VALUE "FileDescription","The main program file"
VALUE "FileVersion","0.9a"
VALUE "InternalName","ARM Podpiska"
VALUE "LegalCopyright","JSC TashkentP’s property"
VALUE "OriginalFilename","podpiska.pas"
VALUE "ProductName","The program for ARM Podpiska"
VALUE "ProductVersion","0.9a"
}
}
}File "icon_data.rc":
AppIcon ICON "app_icon.ico"where "app_icon.ico" is 128x128 24bit ICO image. You may use any size at your favour (usually depends on preferable destop resolution/size) commonly greater or equal to 24x24 pixels.
My favorite editor to prepare such (and any kind of image) files is "Embellish".
2) From within Win-32 command shell, compile the prepared files with the supplied FPC resource compiler:
# windres -O res -i version_data.rc -o version_data.res
# windres -O res -i icon_data.rc -o icon_data.res3) use the compiled resources in your application :
program super_puper;
{$ifdef FPC}{$mode objfpc}{$h+}{$INTERFACES CORBA}{$endif}
{$ifdef FPC}
{$ifdef mswindows}
{$apptype console}
{$endif}
{$endif}
uses
{$ifdef FPC}{$ifdef linux}cthreads,{$endif}{$endif}msegui,mseforms,
main,dmmain,dmprint, dmacnt1, dmf18,dmrefs,
connsetupform,mseconsts,mseconsts_ru,mseconsts_uzcyr;
// importing the compiled resources
{$ifdef mswindows}
{$R version_data.res}
{$R icon_data.res}
{$endif}
begin
setlangconsts('ru');
application.createdatamodule(tdmmainmo,dmmainmo);
application.createdatamodule(tdmprintmo, dmprintmo);
application.createdatamodule(tdmacnt1mo, dmacnt1mo);
application.createdatamodule(tdmf18mo, dmf18mo);
application.createdatamodule(tdmrefsmo, dmrefsmo);
application.createform(tmainfo,mainfo);
application.run;
end.That's all at the moment.
Dynamic widget creation
To dynamically create a new widget (without using IDE), you need to do the following steps:
- Instantiate a class with its
Createconstructor (passing the owner as the argument). - Create a
framefor the component and set up its properties. - Optionally, create a
facefor the component and set up its properties. - Set up the component size with
bounds_cxandbounds_cyproperties. - Add the component to the window or other container by calling the container's
insertwidget. - Show the component by calling its
showmethod, or by settingvisibletotrue.
Here is an example of dynamically creating a tedit (for this code to work, you need to add dynedit: tedit; property declaration):
procedure tmainfo.mainformcreated(const sender: TObject);
begin
dynedit := tedit.Create(self);
dynedit.bounds_cx := 100;
dynedit.bounds_cy := 21;
dynedit.createframe;
dynedit.frame.levelo := -2;
insertwidget(dynedit, makepoint(300, 10));
dynedit.show;
end;If you need custom value for the face property, you can set it up as follows:
dynedit.createface;
with dynedit.face do begin
fade_color.count := 2;
fade_color[0] := cl_ltgreen;
fade_color[1] := cl_dkgreen;
fade_direction := gd_down;
end;From the Free Pascal wiki, page "MSEide MSEgui Howto", as it stood on 2023-07-20 after a change by Fredvs, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.