home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sibdemo3.zip / SAMPLES.DAT / SAMPLES / RESXPLOR / RXMAIN.PAS < prev   
Pascal/Delphi Source File  |  1997-06-15  |  8KB  |  245 lines

  1. Unit RxMain;
  2.  
  3. Interface
  4.  
  5. Uses
  6.   SysUtils, Classes, Forms, Graphics, OutLine, ExtCtrls, Dialogs, ExeImage,
  7.   AboutWin;
  8.  
  9. Type
  10.     TMainForm=Class(TForm)
  11.     Procedure AboutOnClick (Sender: TObject);
  12.       Published
  13.          ToolBar1: TToolbar;
  14.          Outline1: TOutline;
  15.          SizeBorder1: TSizeBorder;
  16.          PaintBox1: TPaintBox;
  17.          MainMenu1: TMainMenu;
  18.          MenuItem1: TMenuItem;
  19.          FileLoad: TMenuItem;
  20.          MenuItem3: TMenuItem;
  21.          FileSave: TMenuItem;
  22.          FileExit: TMenuItem;
  23.          OpenDialog1: TOpenDialog;
  24.          About: TMenuItem;
  25.          SaveDialog1: TSaveDialog;
  26.          MenuItem2: TMenuItem;
  27.          Procedure SizeBorder1OnSized (Sender: TObject; Var SizeDelta: LongInt);
  28.          Procedure FileLoadOnClick (Sender: TObject);
  29.          Procedure PaintBox1OnPaint (Sender: TObject; Const rec: TRect);
  30.          Procedure SizeBorder1OnSizing (Sender: TObject; Var SizeDelta: LongInt);
  31.          Procedure MainFormOnCreate (Sender: TObject);
  32.          Procedure FileSaveOnClick (Sender: TObject);
  33.          Procedure Outline1OnMouseClick (Sender: TObject; Button: TMouseButton;
  34.                                       Shift: TShiftState; X: LongInt; Y: LongInt);
  35.          Procedure Outline1OnItemFocus (Sender: TObject; Index: LongInt);
  36.       Public
  37.          ExeDllImage:TExeDllImage;
  38.      End;
  39.  
  40. Var MainForm:TMainForm;
  41.  
  42. Implementation
  43.  
  44. Procedure TMainForm.AboutOnClick (Sender: TObject);
  45. Begin
  46.   AboutBox1.ShowModal;
  47. End;
  48.  
  49. Procedure TMainForm.FileSaveOnClick (Sender: TObject);
  50. Var Item:TResourceItem;
  51.     Bitmap:TBitmap;
  52.     t:LongInt;
  53.     s:String;
  54.     Stream:TFileStream;
  55. Begin
  56.   If Outline1.SelectedNode<>Nil Then
  57.   Begin
  58.     Item:=Outline1.SelectedNode.Data;
  59.     If Item<>Nil Then
  60.     Begin
  61.         If ((Item Is TBitmapResource)Or(Item Is TIconResource)) Then
  62.         Begin
  63.              If Item Is TBitmapResource Then
  64.              Begin
  65.                  Bitmap:=TBitmapResource(Item).Bitmap;
  66.                  SaveDialog1.FilterIndex:=1;
  67.                  SaveDialog1.FileName:='*.bmp';
  68.              End
  69.              Else
  70.              Begin
  71.                  Bitmap:=TIconResource(Item).Icon;
  72.                  SaveDialog1.FilterIndex:=2;
  73.                  SaveDialog1.FileName:='*.ico';
  74.              End;
  75.  
  76.              If Bitmap<>Nil Then
  77.              Begin
  78.                  If SaveDialog1.Execute Then
  79.                  Begin
  80.                      Try
  81.                        Bitmap.SaveToFile(SaveDialog1.FileName);
  82.                      Except
  83.                        On E:Exception Do ErrorBox(E.Message);
  84.                      End;
  85.                  End;
  86.              End;
  87.         End
  88.         Else If Item Is TStringListResource Then
  89.         Begin
  90.              SaveDialog1.FilterIndex:=3;
  91.              SaveDialog1.FileName:='*.txt';
  92.              If SaveDialog1.Execute Then
  93.              Begin
  94.                 Try
  95.                   Stream.Create(SaveDialog1.FileName,fmCreate);
  96.  
  97.                   Try
  98.                     For t:=0 To TStringListResource(Item).StringCount-1 Do
  99.                     Begin
  100.                          s:=TStringListResource(Item).Strings[t];
  101.  
  102.                          s:=tostr(Item.Id+t)+' , "'+s+'"';
  103.                          Stream.WriteLn(s);
  104.                     End;
  105.                   Finally
  106.                     Stream.Destroy;
  107.                   End;
  108.                 Except
  109.                    On E:Exception Do ErrorBox(E.Message);
  110.                 End;
  111.              End;
  112.         End;
  113.     End;
  114.   End;
  115. End;
  116.  
  117. Procedure TMainForm.Outline1OnMouseClick (Sender: TObject;
  118.   Button: TMouseButton; Shift: TShiftState; X: LongInt; Y: LongInt);
  119. Begin
  120.   If Button<>mbLeft Then exit;
  121.   PaintBox1.Invalidate;
  122. End;
  123.  
  124. Procedure TMainForm.Outline1OnItemFocus (Sender: TObject; Index: LongInt);
  125. Begin
  126.    PaintBox1.Invalidate;
  127. End;
  128.  
  129. Procedure TMainForm.MainFormOnCreate (Sender: TObject);
  130. Begin
  131.   Application.Font:=Font;
  132. End;
  133.  
  134. Procedure TMainForm.FileLoadOnClick (Sender: TObject);
  135. Var RootIndex,LastIndex:LongInt;
  136.     t:Longint;
  137.     Item:TResourceItem;
  138. Begin
  139.   If OpenDialog1.Execute Then
  140.   Begin
  141.      If ExeDllImage<>Nil Then ExeDllImage.Destroy;
  142.      ExeDllImage.Create(OpenDialog1.FileName);
  143.      Outline1.Clear;
  144.  
  145.      //Build the outline
  146.      LastIndex:=Outline1.Add(0,OpenDialog1.FileName);
  147.      RootIndex:=Outline1.AddChild(LastIndex,'Resources');
  148.  
  149.      LastIndex:=Outline1.AddChild(RootIndex,'Bitmaps');
  150.      For t:=0 To ExeDllImage.ResourceList.Count-1 Do
  151.      Begin
  152.          Item:=ExeDllImage.ResourceList.Items[t];
  153.          If Item Is TBitmapResource Then
  154.            Outline1.AddChildObject(LastIndex,IntToStr(Item.Id),Item);
  155.      End;
  156.  
  157.      LastIndex:=Outline1.AddChild(RootIndex,'Icons');
  158.      For t:=0 To ExeDllImage.ResourceList.Count-1 Do
  159.      Begin
  160.          Item:=ExeDllImage.ResourceList.Items[t];
  161.          If Item Is TIconResource Then
  162.            Outline1.AddChildObject(LastIndex,IntToStr(Item.Id),Item);
  163.      End;
  164.  
  165.      LastIndex:=Outline1.AddChild(RootIndex,'StringTables');
  166.      For t:=0 To ExeDllImage.ResourceList.Count-1 Do
  167.      Begin
  168.          Item:=ExeDllImage.ResourceList.Items[t];
  169.          If Item Is TStringListResource Then
  170.            Outline1.AddChildObject(LastIndex,IntToStr(Item.Id),Item);
  171.      End;
  172.   End;
  173. End;
  174.  
  175. Procedure TMainForm.PaintBox1OnPaint (Sender: TObject; Const rec: TRect);
  176. Var Item:TResourceItem;
  177.     Bitmap:TBitmap;
  178.     Dest:TRect;
  179.     t:LongInt;
  180.     s:String;
  181.     y:LongInt;
  182. Begin
  183.   PaintBox1.Canvas.FillRect(rec,clWhite);
  184.  
  185.   If Outline1.SelectedNode<>Nil Then
  186.   Begin
  187.     Item:=Outline1.SelectedNode.Data;
  188.     If Item<>Nil Then
  189.     Begin
  190.         If ((Item Is TBitmapResource)Or(Item Is TIconResource)) Then
  191.         Begin
  192.            If Item Is TBitmapResource Then Bitmap:=TBitmapResource(Item).Bitmap
  193.            Else Bitmap:=TIconResource(Item).Icon;
  194.  
  195.            If Bitmap<>Nil Then
  196.            Begin
  197.               Dest.Left:=SizeBorder1.Width;
  198.               Dest.Right:=Dest.Left+Bitmap.Width;
  199.               Dest.Bottom:=PaintBox1.Height-Bitmap.Height;
  200.               Dest.Top:=PaintBox1.Height;
  201.               Bitmap.Draw(PaintBox1.Canvas,Dest);
  202.            End;
  203.         End
  204.         Else If Item Is TStringListResource Then
  205.         Begin
  206.            y:=PaintBox1.Height-PaintBox1.Canvas.Font.Height;
  207.            For t:=0 To TStringListResource(Item).StringCount-1 Do
  208.            Begin
  209.               s:=TStringListResource(Item).Strings[t];
  210.  
  211.               s:=tostr(Item.Id+t)+' , "'+s+'"';
  212.  
  213.               PaintBox1.Canvas.TextOut(SizeBorder1.Width,y,s);
  214.               dec(y,PaintBox1.Canvas.Font.Height);
  215.            End;
  216.         End;
  217.     End;
  218.   End;
  219. End;
  220.  
  221. Procedure TMainForm.SizeBorder1OnSizing (Sender: TObject;
  222.                                          Var SizeDelta: LongInt);
  223. Var NewSize:LongInt;
  224. Begin
  225.    NewSize:=ToolBar1.Size+SizeDelta;
  226.    If NewSize<20 Then NewSize:=20;
  227.    If NewSize>Width-20 Then NewSize:=Width-20;
  228.    SizeDelta:=NewSize-ToolBar1.Size;
  229. End;
  230.  
  231. Procedure TMainForm.SizeBorder1OnSized (Sender: TObject;
  232.                                         Var SizeDelta: LongInt);
  233. Var NewSize:LongInt;
  234. Begin
  235.    NewSize:=ToolBar1.Size+SizeDelta;
  236.    If NewSize<20 Then NewSize:=20;
  237.    If NewSize>Width-20 Then NewSize:=Width-20;
  238.    ToolBar1.Size:=NewSize;
  239. End;
  240.  
  241. Initialization
  242.   RegisterClasses ([ TToolbar, TOutline, TSizeBorder, TPaintBox,
  243.     TMainMenu, TMenuItem, TOpenDialog, TMainForm, TSaveDialog]);
  244. End.
  245.