home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / delphi / imagelib / uimage.pa_ / uimage.pa
Text File  |  1995-10-01  |  23KB  |  677 lines

  1. {Part of Imagelib VCL/DLL Library.
  2. Written by Jan Dekkers and Kevin Adams (c) 1995. If you are a non
  3. registered client, you may use or alter this demo only for evaluation
  4. purposes.
  5.  
  6. Uses ImageLib 3.0 Changed the callback to a function instead of a
  7. procedure to let the user cancel out. Added:
  8.  
  9. Changed callback in version 2.21 to a function with cdecl.
  10. using the C calling convention.
  11.  
  12.  
  13. scrolling text images
  14. Cut, Copy and Paste to/from the clipboard
  15. Printing bitmaps}
  16.  
  17.  
  18. unit Uimage;
  19.  
  20. interface
  21.  
  22. uses
  23.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  24.   Forms, Dialogs, StdCtrls, FileCtrl, Spin, Buttons, UFullscr, Menus,
  25.   Uabout, ExtCtrls, Gauges, printers, U_p_size, Tmultip, DLL30;
  26.  
  27.  
  28. type
  29.   TViewImageForm = class(TForm)
  30.     DriveComboBox1     : TDriveComboBox;
  31.     DirectoryListBox1  : TDirectoryListBox;
  32.     FileListBox1       : TFileListBox;
  33.     SaveDialog1        : TSaveDialog;
  34.     SaveButton         : TBitBtn;
  35.     QualitySpin        : TSpinEdit;
  36.     Smoothspin         : TSpinEdit;
  37.     QualityLabel       : TLabel;
  38.     SmoothLabel        : TLabel;
  39.     GroupBox1          : TGroupBox;
  40.     res4               : TRadioButton;
  41.     res24              : TRadioButton;
  42.     res8               : TRadioButton;
  43.     MainMenu1          : TMainMenu;
  44.     N1                 : TMenuItem;
  45.     O1                 : TMenuItem;
  46.     N2                 : TMenuItem;
  47.     N3                 : TMenuItem;
  48.     E1                 : TMenuItem;
  49.     A1                 : TMenuItem;
  50.     OpenDialog1        : TOpenDialog;
  51.     N4                 : TMenuItem;
  52.     Print1             : TMenuItem;
  53.     PrintSetup1        : TMenuItem;
  54.     PrinterSetupDialog1: TPrinterSetupDialog;
  55.     PrintDialog1       : TPrintDialog;
  56.     Gauge1             : TGauge;
  57.     Label9             : TLabel;
  58.     Label10            : TLabel;
  59.     Label11            : TLabel;
  60.     Label12            : TLabel;
  61.     Label13            : TLabel;
  62.     Label14            : TLabel;
  63.     Label15            : TLabel;
  64.     Edit1              : TEdit;
  65.     Edit2              : TEdit;
  66.     Edit3              : TEdit;
  67.     Edit4              : TEdit;
  68.     Edit5              : TEdit;
  69.     Edit6              : TEdit;
  70.     Edit7              : TEdit;
  71.     GetInfoChecked     : TCheckBox;
  72.     Label8             : TLabel;
  73.     Edit8              : TEdit;
  74.     CheckBox1          : TCheckBox;
  75.     BitBtn1            : TBitBtn;
  76.     Edit9              : TMenuItem;
  77.     Cut1               : TMenuItem;
  78.     Copy1              : TMenuItem;
  79.     Paste1             : TMenuItem;
  80.     ScrollBar1         : TScrollBar;
  81.     N5                 : TMenuItem;
  82.     CreateMessage1     : TMenuItem;
  83.     MultiImage1        : TPMultiImage;
  84.     CheckBox2          : TCheckBox;
  85.     BitBtn2            : TBitBtn;
  86.     BitBtn3            : TBitBtn;
  87.     BitBtn4            : TBitBtn;
  88.     CreateCreditMessage1: TMenuItem;
  89.     BitBtn5            : TBitBtn;
  90.     BitBtn6            : TBitBtn;
  91.     GroupBox2          : TGroupBox;
  92.     SaveRes4           : TRadioButton;
  93.     SaveRes24          : TRadioButton;
  94.     SaveRes8           : TRadioButton;
  95.     CheckBox3: TCheckBox;
  96.     procedure DriveComboBox1Change(Sender: TObject);
  97.     procedure DirectoryListBox1Change(Sender: TObject);
  98.     procedure FileListBox1Change(Sender: TObject);
  99.     procedure SstretchOnOff(Sender: TObject);
  100.     procedure FormCreate(Sender: TObject);
  101.     procedure resClick(Sender: TObject);
  102.     procedure SaveButtonClick(Sender: TObject);
  103.     procedure MultiImage1Click(Sender: TObject);
  104.     procedure E1Click(Sender: TObject);
  105.     procedure O1Click(Sender: TObject);
  106.     procedure A1Click(Sender: TObject);
  107.     procedure Print1Click(Sender: TObject);
  108.     procedure PrintSetup1Click(Sender: TObject);
  109.     procedure GetInfoCheckedClick(Sender: TObject);
  110.     procedure CheckBox1Click(Sender: TObject);
  111.     procedure BitBtn1Click(Sender: TObject);
  112.     procedure FormDestroy(Sender: TObject);
  113.     procedure Cut1Click(Sender: TObject);
  114.     procedure Copy1Click(Sender: TObject);
  115.     procedure Paste1Click(Sender: TObject);
  116.     procedure ScrollBar1Change(Sender: TObject);
  117.     procedure SmoothspinChange(Sender: TObject);
  118.     procedure QualitySpinChange(Sender: TObject);
  119.     procedure CheckBox2Click(Sender: TObject);
  120.     procedure BitBtn2Click(Sender: TObject);
  121.     procedure BitBtn3Click(Sender: TObject);
  122.     procedure BitBtn4Click(Sender: TObject);
  123.     procedure BitBtn5Click(Sender: TObject);
  124.     procedure BitBtn6Click(Sender: TObject);
  125.     procedure SaveResClick(Sender: TObject);
  126.   private
  127.     { Private declarations }
  128.    oldsavefiles   : TstringList;
  129.    oldreadfiles   : TstringList;
  130.    procedure DisPlayInfo(dis : boolean);
  131.    Procedure Trigger(Sender : TObject; Var Done : Boolean);
  132.   public
  133.     { Public declarations }
  134.   end;
  135.  
  136. var
  137.   ViewImageForm: TViewImageForm;
  138.  
  139. implementation
  140.  
  141. {$R *.DFM}
  142. {$R BLIT8.RES}  {This contains a 256 color bitmap}
  143.  
  144. {---------------------------------------------------------------------}
  145.  
  146. {Changed in version 2.21 from a procedure to a function with cdecl.
  147.  To cancel return a 0 else return a 1}
  148.  
  149.  Function ImageLibCallBack(i : integer) : integer; cdecl; export;
  150. {Callback function from the dll, CDECL and EXPORT ARE REQUIRED}
  151. begin
  152.  if Application.Terminated then begin
  153.    {User wants to terminate the program. Pass a 0 to the dll}
  154.    Result:=0;
  155.   end else begin
  156.   {Be nice to others <g>}
  157.    Application.ProcessMessages;
  158.    {process a Gauge}
  159.    if ViewImageForm <> Nil then
  160.     ViewImageForm.Gauge1.Progress:=i;
  161.    {tell the dll that everything is OK}
  162.    Result:=1;
  163.    end;
  164. end;
  165. {---------------------------------------------------------------------}
  166.  
  167. procedure TViewImageForm.DriveComboBox1Change(Sender: TObject);
  168. {update the drive of DirectoryListBox1 with the drive of DriveComboBox1}
  169. begin
  170.   DirectoryListBox1.Drive := DriveComboBox1.Drive;
  171. end;
  172. {---------------------------------------------------------------------}
  173.  
  174. procedure TViewImageForm.DisPlayInfo(dis : boolean);
  175. begin
  176.     {If scrolling message then show the speed scroll bar}
  177.     if (MultiImage1.BFileType = 'SCM') or (MultiImage1.BFileType = 'CMS') then begin
  178.     {Show it}
  179.      ScrollBar1.Visible:=true;
  180.      {set the speed/position}
  181.      ScrollBar1.Position:=MultiImage1.MsgSpeed;
  182.     end else
  183.      ScrollBar1.Visible:=False;
  184.  
  185.     if dis then begin
  186.        {display the image info}
  187.        Edit1.Text:=IntToStr(MultiImage1.Bwidth);
  188.        Edit2.Text:=IntToStr(MultiImage1.BHeight);
  189.        Edit3.Text:=IntToStr(MultiImage1.Bbitspixel);
  190.        Edit4.Text:=IntToStr(MultiImage1.Bplanes);
  191.        Edit5.Text:=IntToStr(MultiImage1.Bnumcolors);
  192.        Edit6.Text:=MultiImage1.BFileType;
  193.        Edit7.Text:=MultiImage1.Bcompression;
  194.        Edit8.Text:=IntToStr(MultiImage1.BSize);
  195.      end else begin
  196.       {set the image info to ''}
  197.        Edit1.Text:='';
  198.        Edit2.Text:='';
  199.        Edit3.Text:='';
  200.        Edit4.Text:='';
  201.        Edit5.Text:='';
  202.        Edit6.Text:='';
  203.        Edit7.Text:='';
  204.        Edit8.Text:='';
  205.      end;
  206. end;
  207. {---------------------------------------------------------------------}
  208.  
  209. procedure TViewImageForm.DirectoryListBox1Change(Sender: TObject);
  210. {update the directory of FileListBox1 with the directory of FileListBox1}
  211. begin
  212.   FileListBox1.Directory := DirectoryListBox1.Directory;
  213. end;
  214. {---------------------------------------------------------------------}
  215.  
  216. procedure TViewImageForm.FileListBox1Change(Sender: TObject);
  217. {Display the image of the FileListBox1.filename}
  218. begin
  219.  {set hourglass cursor}
  220.   screen.cursor:=crHourGlass;
  221.  
  222.  {delete the old image}
  223.   MultiImage1.imagename:='';
  224.  
  225.  {display an image using the vcl}
  226.   MultiImage1.imagename:=FileListBox1.filename;
  227.  
  228.   {Request fileinfo from the DLL}
  229.   if GetInfoChecked.Checked then
  230.    DisplayInfo(true) else DisplayInfo(false);
  231.  
  232.   {Reset the gauge}
  233.   Gauge1.Progress:=0;
  234.  
  235.  {add filename to the history list of the open dialog}
  236.   oldreadfiles.add(FileListBox1.filename);
  237.  
  238.  {copy the stringlist to the historylist}
  239.   OpenDialog1.historylist:=oldreadfiles;
  240.  
  241.   {set default cursor}
  242.   screen.cursor:=crDefault;
  243. end;
  244. {---------------------------------------------------------------------}
  245.  
  246. procedure TViewImageForm.SstretchOnOff(Sender: TObject);
  247. {set strech mode}
  248. begin
  249.   MultiImage1.stretch:=CheckBox3.Checked;
  250. end;
  251. {---------------------------------------------------------------------}
  252.  
  253. {---------------------------------------------------------------------}
  254.  
  255. procedure TViewImageForm.FormCreate(Sender: TObject);
  256. {what we do on create}
  257. begin
  258.     {Define the callback procedure}
  259.     TPMultiImageCallBack:=ImageLibCallBack;
  260.  
  261.     {set the value of the QualitySpin to the value of JPegSaveQuality}
  262.     QualitySpin.value:=MultiImage1.JPegSaveQuality;
  263.  
  264.     {set the value of the Smoothspin to the value of JPegSaveSmooth}
  265.     Smoothspin.value:=MultiImage1.JPegSaveSmooth;
  266.  
  267.     {create temporary history stringlists}
  268.     oldsavefiles := TstringList.create;
  269.     oldreadfiles := TstringList.create;
  270.  
  271.     {IMPORTANT}
  272.     {This is the moving engine for all the messages. Since an applcation
  273.     can have only one OnIdle Trigger, this trigger needs to be subdivided
  274.     by all your moving and animated objects. In this particular case the
  275.     function is called TRIGGER but you can name it as you want as long
  276.     you have a procedure named the same.}
  277.     Application.OnIdle:=Trigger;
  278.  
  279.     {Only enable this if delphi is active}
  280.     BitBtn6.Enabled:=(GetModuleHandle('DELPHI.EXE') <> 0);
  281. end;
  282. {---------------------------------------------------------------------}
  283.  
  284. Procedure TViewImageForm.Trigger(Sender : TObject; Var Done : Boolean);
  285. begin
  286.    {This function is called when your app is idle. Subdivide the
  287.     trigger event to your TMultiImage objects who may need one.
  288.     If no Message is active it will not take up significant time}
  289.     MultiImage1.Trigger;
  290. end;
  291. {---------------------------------------------------------------------}
  292.  
  293. procedure TViewImageForm.resClick(Sender: TObject);
  294. {Set the read resolution to either 16, 256 or true color in the vcl}
  295. begin
  296.  {set show resolution to 4 bit 16 color}
  297.  if res4.checked  then MultiImage1.ImageReadRes:=Color16;
  298.  
  299.  {set show resolution to 8 bit 256 color}
  300.  if res8.checked  then MultiImage1.ImageReadRes:=Color256;
  301.  
  302.  {set show resolution to 24 bit true color}
  303.  if res24.checked then MultiImage1.ImageReadRes:=ColorTrue;
  304. end;
  305. {---------------------------------------------------------------------}
  306.  
  307. procedure TViewImageForm.SaveResClick(Sender: TObject);
  308. {Set the save  resolution to either 16, 256 or true color in the vcl}
  309. begin
  310.  {set save resolution to 4 bit 16 color}
  311.  if Saveres4.checked  then MultiImage1.ImageWriteRes:=Color16;
  312.  
  313.  {set save resolution to 8 bit 256 color}
  314.  if Saveres8.checked  then MultiImage1.ImageWriteRes:=Color256;
  315.  
  316.  {set save resolution to 24 bit true color}
  317.  if Saveres24.checked then MultiImage1.ImageWriteRes:=ColorTrue;
  318. end;
  319.  
  320. {---------------------------------------------------------------------}
  321.  
  322. procedure TViewImageForm.SaveButtonClick(Sender: TObject);
  323. {save a jpeg or bmp}
  324. begin
  325.  {Set various filters}
  326.  if MultiImage1.BFileType = 'SCM' then begin
  327.   SaveDialog1.Filename:='*.SCM';
  328.   SaveDialog1.Filter:='Scroll message|*.scm';
  329.  end else begin
  330.   SaveDialog1.Filename:='*.jpg';
  331.   SaveDialog1.Filter:='jpeg|*.jpg|bmp|*.bmp|gif|*.gif|pcx|*.pcx|png|*.png';
  332.  end;
  333.  
  334.  {open save dialog}
  335.  if SaveDialog1.execute then begin
  336.  
  337.  {set hourglass cursor}
  338.   screen.cursor:=crHourGlass;
  339.  
  340.   {save it if the extension is png}
  341.   if UpperCase(ExtractFileExt(SaveDialog1.Filename)) =  '.PNG' then
  342.     MultiImage1.SaveAsPNG(SaveDialog1.FileName);
  343.  
  344.   {save it if the extension is pcx}
  345.   if UpperCase(ExtractFileExt(SaveDialog1.Filename)) =  '.PCX' then
  346.     MultiImage1.SaveAsPCX(SaveDialog1.FileName);
  347.  
  348.   {save it if the extension is pcx}
  349.   if UpperCase(ExtractFileExt(SaveDialog1.Filename)) =  '.GIF' then
  350.     MultiImage1.SaveAsGIF(SaveDialog1.FileName);
  351.  
  352.   {save it if the extension is jpg}
  353.   if UpperCase(ExtractFileExt(SaveDialog1.Filename)) =  '.JPG' then
  354.     MultiImage1.SaveAsJpg(SaveDialog1.FileName);
  355.  
  356.   {save it if the extension is bmp}
  357.   if UpperCase(ExtractFileExt(SaveDialog1.Filename)) =  '.BMP' then
  358.     MultiImage1.SaveAsBMP(SaveDialog1.FileName);
  359.  
  360.  {save it if the extension is SCM}
  361.   if UpperCase(ExtractFileExt(SaveDialog1.Filename)) =  '.SCM' then
  362.     MultiImage1.SaveCurrentMessage(SaveDialog1.FileName);
  363.  
  364.  {add filename to the history list of the save dialog}
  365.   oldSavefiles.add(SaveDialog1.filename);
  366.  
  367.  {copy the stringlist to the historylist}
  368.   SaveDialog1.historylist:=oldSavefiles;
  369.  
  370.  {set default cursor}
  371.   screen.cursor:=crDefault;
  372.  
  373.   {update the filelist box sothat the file saved shows up}
  374.   FileListBox1.Update;
  375.  end;
  376. end;
  377. {---------------------------------------------------------------------}
  378.  
  379. procedure TViewImageForm.MultiImage1Click(Sender: TObject);
  380. {show fullscreen}
  381. begin
  382.   {copy image to fullscreen image}
  383.   FullSlide.MultiImage1.Picture.Graphic:=MultiImage1.Picture.Graphic;
  384.   {show the image fulscreen}
  385.   FullSlide.showmodal;
  386. end;
  387. {---------------------------------------------------------------------}
  388.  
  389. procedure TViewImageForm.E1Click(Sender: TObject);
  390. {exit the program}
  391. begin
  392.  close;
  393. end;
  394. {---------------------------------------------------------------------}
  395.  
  396. procedure TViewImageForm.O1Click(Sender: TObject);
  397. {open a image using the open dialog}
  398. begin
  399.   if OpenDialog1.execute then begin
  400.  
  401.    {set hourglass cursor}
  402.     screen.cursor:=crHourGlass;
  403.  
  404.    {delete the old image}
  405.     MultiImage1.imagename:='';
  406.  
  407.     {display an image using the vcl}
  408.     MultiImage1.imagename:=OpenDialog1.filename;
  409.  
  410.    {Request fileinfo from the DLL}
  411.    {Note, fileinfo will not work on WMF and ICO}
  412.     if GetInfoChecked.Checked then
  413.       DisplayInfo(true) else DisplayInfo(false);
  414.  
  415.     {reset the gauge}
  416.     Gauge1.Progress:=0;
  417.  
  418.    {add filename to the history list of the open dialog}
  419.     oldreadfiles.add(OpenDialog1.filename);
  420.  
  421.    {copy the stringlist to the historylist}
  422.     OpenDialog1.historylist:=oldreadfiles;
  423.  
  424.    {set default cursor}
  425.     screen.cursor:=crDefault;
  426.   end;
  427. end;
  428. {---------------------------------------------------------------------}
  429.  
  430. procedure TViewImageForm.A1Click(Sender: TObject);
  431. {about box}
  432. begin
  433. {Copy the image to the image of he about box}
  434.  AboutBox.Image1.Picture.Graphic:=MultiImage1.Picture.Graphic;
  435. {show the about box}
  436.  AboutBox.showmodal;
  437. end;
  438. {---------------------------------------------------------------------}
  439.  
  440. procedure TViewImageForm.Print1Click(Sender: TObject);
  441. {Print image}
  442. begin
  443.   if PrintDialog1.execute then begin
  444.   {Initialize the height spinedit of the printsize dialog box}
  445.    Printersize.HeigthSpinEdit.Value:=MultiImage1.Picture.Height;
  446.    {Initialize the width spinedit of the printsize dialog box}
  447.    Printersize.WidthSpinEdit.Value:=MultiImage1.Picture.Width;
  448.    {Show it}
  449.    Printersize.ShowModal;
  450.    if Printersize.Modalresult = mrok then
  451.     {print TMultiImage}
  452.      MultiImage1.PrintMultiImage(0,0,Printersize.WidthSpinEdit.Value,Printersize.HeigthSpinEdit.Value);
  453.    {Hide it if done}
  454.    Printersize.hide;
  455.   end;
  456. end;
  457. {---------------------------------------------------------------------}
  458.  
  459. procedure TViewImageForm.PrintSetup1Click(Sender: TObject);
  460. {Set up printer}
  461. begin
  462.   PrinterSetupDialog1.Execute;
  463. end;
  464. {---------------------------------------------------------------------}
  465.  
  466. procedure TViewImageForm.GetInfoCheckedClick(Sender: TObject);
  467. {depending on the state of the checkbox,  display or not display info}
  468. begin
  469.  DisPlayInfo(GetInfoChecked.Checked);
  470. end;
  471. {---------------------------------------------------------------------}
  472. procedure TViewImageForm.CheckBox1Click(Sender: TObject);
  473. {depending on the state of the checkbox, center or not center image}
  474. begin
  475.  MultiImage1.Center:=CheckBox1.Checked;
  476. end;
  477. {---------------------------------------------------------------------}
  478.  
  479. procedure TViewImageForm.BitBtn1Click(Sender: TObject);
  480. var
  481.   RunAfterCreate : Boolean;
  482. begin
  483.     {Create a new message using the message editor}
  484.     {boolean indicating to run the message after creation}
  485.     RunAfterCreate:=True;
  486.  
  487.     {CreateMessage takes a pathname as the initial path to save the
  488.      message and a boolean to run it. For Instance:
  489.     {MultiImage1.CreateMessage('c:\',true);}
  490.     MultiImage1.CreateMessage(ExtractFilePath(Application.Exename),RunAfterCreate);
  491.  
  492.     {Show new message in listbox}
  493.     FileListBox1.Update;
  494. end;
  495. {---------------------------------------------------------------------}
  496.  
  497. procedure TViewImageForm.FormDestroy(Sender: TObject);
  498. begin
  499.     Application.OnIdle:=Nil;
  500.    {Unregister the callback procedure}
  501.     TPMultiImageCallBack:=nil;
  502.    {release memory of the stringlist boxes}
  503.     oldsavefiles.free;
  504.     oldreadfiles.free;
  505.     ViewImageForm:=Nil;
  506. end;
  507. {---------------------------------------------------------------------}
  508.  
  509. procedure TViewImageForm.Cut1Click(Sender: TObject);
  510. begin
  511. {Cut Image and Copy it to the clipboard}
  512.   MultiImage1.CutToClipboard
  513. end;
  514. {---------------------------------------------------------------------}
  515.  
  516. procedure TViewImageForm.Copy1Click(Sender: TObject);
  517. begin
  518. {Copy Image to the clipboard}
  519.   MultiImage1.CopyToClipboard;
  520. end;
  521. {---------------------------------------------------------------------}
  522.  
  523. procedure TViewImageForm.Paste1Click(Sender: TObject);
  524. begin
  525. {Paste Image from the clipboard}
  526.   MultiImage1.PasteFromClipboard;
  527. end;
  528. {---------------------------------------------------------------------}
  529.  
  530. procedure TViewImageForm.ScrollBar1Change(Sender: TObject);
  531. begin
  532.  {Change the speed of a srolling message}
  533.   MultiImage1.MsgSpeed:=ScrollBar1.Position;
  534. end;
  535. {---------------------------------------------------------------------}
  536.  
  537.  
  538. procedure TViewImageForm.SmoothspinChange(Sender: TObject);
  539. begin
  540.     {set the value of the JPegSaveSmooth}
  541.     MultiImage1.JPegSaveSmooth:=Smoothspin.value;
  542. end;
  543.  
  544. procedure TViewImageForm.QualitySpinChange(Sender: TObject);
  545. begin
  546.     {set the value of the JPegSaveQuality}
  547.     MultiImage1.JPegSaveQuality:=QualitySpin.value;
  548. end;
  549.  
  550. procedure TViewImageForm.CheckBox2Click(Sender: TObject);
  551. begin
  552. {Set read image dither }
  553.     MultiImage1.ImageDither:=CheckBox2.Checked;
  554. end;
  555.  
  556. procedure TViewImageForm.BitBtn2Click(Sender: TObject);
  557. var
  558.   RunAfterCreate : Boolean;
  559. begin
  560.     {Create a new message using the message editor}
  561.     {boolean indicating to run the message after creation}
  562.     RunAfterCreate:=True;
  563.  
  564.     {CreateCreditMessage takes a pathname as the initial path to save the
  565.      message and a boolean to run it. For Instance:
  566.     {MultiImage1.CreateCreditMessage('c:\',true);}
  567.     MultiImage1.CreateCreditMessage(ExtractFilePath(Application.Exename),RunAfterCreate);
  568.  
  569.     {Show new message in listbox}
  570.     FileListBox1.Update;
  571. end;
  572.  
  573.  
  574. procedure TViewImageForm.BitBtn5Click(Sender: TObject);
  575.  {Load a BMP image from any executable or dll.
  576.   Note that the dll or exe needs to be loaded in order
  577.   to find its module handle}
  578. begin
  579.   {Indicate in which program the BMP Lives. For instance:
  580.   MultiImage1.ResProgName:='';
  581.   means in this executable (RES (Resource file))}
  582.   {Dont enter a path name};
  583.   MultiImage1.ResProgName:=''; {this executable linked in BLIT8.RES}
  584.  
  585.   {Name of the resource. Note that the .res indicate to the vcl
  586.   that it is a resource BMP but your resource BMP is called FRIDGE.
  587.   Incase the resource is a number put e.g: MultiImage1.ImageName:='98255.RES';}
  588.   MultiImage1.ImageName:='FRIDGE.RES';
  589.   if GetInfoChecked.Checked then
  590.    DisplayInfo(true) else DisplayInfo(false);
  591. end;
  592.  
  593.  
  594. procedure TViewImageForm.BitBtn6Click(Sender: TObject);
  595.  {Load a BMP image from any executable or dll in memory.
  596.   Note that the dll or exe needs to be loaded in order
  597.   to find its module handle}
  598. begin
  599.   {Indicate in which program the BMP Lives. For instance:
  600.   MultiImage1.ResProgName:='';
  601.   means in this executable (RES (Resource file))}
  602.   {Dont enter a path name};
  603.   MultiImage1.ResProgName:='DELPHI.EXE';
  604.  
  605.   {Name of the resource. Note that the .res indicate to the vcl
  606.   that it is a resource BMP but your resource BMP is called FRIDGE.
  607.   Incase the resource is a number put e.g: MultiImage1.ImageName:='98255.RES';}
  608.   MultiImage1.ImageName:='ATHENA.RES';
  609.   if GetInfoChecked.Checked then
  610.    DisplayInfo(true) else DisplayInfo(false);
  611. end;
  612.  
  613.  
  614. procedure TViewImageForm.BitBtn3Click(Sender: TObject);
  615. begin
  616.    {Create A credit message on the fly}
  617.     MultiImage1.FreeMsg;
  618.    {Clear Message text if any}
  619.     MultiImage1.CreditBoxList.Clear;
  620.    {Define Message text}
  621.     MultiImage1.CreditBoxList.Add(' ImageLib');
  622.     MultiImage1.CreditBoxList.Add(' Another fine product of');
  623.     MultiImage1.CreditBoxList.Add(' SKYLINE TOOLS');
  624.     MultiImage1.CreditBoxList.Add(' Programming : Kevin Adams');
  625.     MultiImage1.CreditBoxList.Add(' Programming : Jan Dekkers');
  626.     MultiImage1.CreditBoxList.Add(' Artwork & PR: Jillian Pinsker');
  627.  
  628.     {set Message font name;  Note you could do this also with a font dialog}
  629.     MultiImage1.MsgFont.Name:='Arial';
  630.    {set Message font size}
  631.     MultiImage1.MsgFont.Size:=-18;
  632.     {set Message font style}
  633.     MultiImage1.MsgFont.Style:=[fsitalic, fsbold];
  634.     {set Message font color}
  635.     MultiImage1.MsgFont.Color:=clWhite;
  636.     {set Message background. Note you could do this also with a color dialog}
  637.     MultiImage1.MsgBkGrnd:=clNavy;
  638.     {set Message speed from 1 is fast to 10 is slow}
  639.     MultiImage1.MsgSpeed:=5;
  640.     {Show Speed ScrollBar}
  641.     ScrollBar1.Visible:=true;
  642.     {set the speed/position}
  643.     ScrollBar1.Position:=MultiImage1.MsgSpeed;
  644.     {inititiate new message}
  645.     MultiImage1.NewCreditMessage;
  646. end;
  647.  
  648.  
  649. procedure TViewImageForm.BitBtn4Click(Sender: TObject);
  650. begin
  651.    {create a message on the fly at MultiImage1 (Top one)}
  652.    {set Message text}
  653.     MultiImage1.MsgText:='ImageLib 3.0  A great tool to create a superb application in no time.';
  654.     {set Message font name;  Note you could do this also with a font dialog}
  655.     MultiImage1.MsgFont.Name:='Arial';
  656.    {set Message font size}
  657.     MultiImage1.MsgFont.Size:=-40;
  658.     {set Message font style}
  659.     MultiImage1.MsgFont.Style:=[fsitalic, fsbold];
  660.     {set Message font color}
  661.     MultiImage1.MsgFont.Color:=clYellow;
  662.     {set Message background. Note you could do this also with a color dialog}
  663.     MultiImage1.MsgBkGrnd:=clPurple;
  664.     {set Message speed from 1 is fast to 10 is slow}
  665.     MultiImage1.MsgSpeed:=3;
  666.     {Show Speed ScrollBar}
  667.     ScrollBar1.Visible:=true;
  668.     {set the speed/position}
  669.     ScrollBar1.Position:=MultiImage1.MsgSpeed;
  670.     {inititiate new message}
  671.     MultiImage1.NewMessage;
  672. end;
  673.  
  674.  
  675.  
  676. end.
  677.