home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 February / Chip_2004-02_cd1.bin / zkuste / konfig / download / msic / Demos / 5 / Main.pas < prev   
Pascal/Delphi Source File  |  2003-06-03  |  4KB  |  138 lines

  1. unit Main;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, MiTeC_WinIOCTL, StdCtrls, ComCtrls, ExtCtrls, ImgList, MSI_Storage;
  8.  
  9. type
  10.   Twnd_dv_Main = class(TForm)
  11.     Tree: TTreeView;
  12.     pTitle: TPanel;
  13.     bRefresh: TButton;
  14.     bSave: TButton;
  15.     bClose: TButton;
  16.     Bevel1: TBevel;
  17.     ImageList1: TImageList;
  18.     Image1: TImage;
  19.     Label1: TLabel;
  20.     Label2: TLabel;
  21.     eSerial: TEdit;
  22.     eRev: TEdit;
  23.     sd: TSaveDialog;
  24.     procedure cmRefresh(Sender: TObject);
  25.     procedure bCloseClick(Sender: TObject);
  26.     procedure FormCreate(Sender: TObject);
  27.     procedure TreeDeletion(Sender: TObject; Node: TTreeNode);
  28.     procedure TreeCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode;
  29.       State: TCustomDrawState; var DefaultDraw: Boolean);
  30.     procedure FormDestroy(Sender: TObject);
  31.     procedure TreeChange(Sender: TObject; Node: TTreeNode);
  32.     procedure bSaveClick(Sender: TObject);
  33.   private
  34.     Storage: TStorage;
  35.   public
  36.   end;
  37.  
  38. var
  39.   wnd_dv_Main: Twnd_dv_Main;
  40.  
  41. implementation
  42.  
  43. uses MiTeC_StrUtils;
  44.  
  45. {$R *.dfm}
  46.  
  47. procedure Twnd_dv_Main.cmRefresh(Sender: TObject);
  48. var
  49.   i,j: Integer;
  50.   n,r: TTreeNode;
  51.   pi: PInteger;
  52. begin
  53.   with Storage do
  54.     try
  55.       Screen.Cursor:=crHourGlass;
  56.       GetInfo;
  57.       Tree.Items.Clear;
  58.       for i:=0 to DeviceCount-1 do begin
  59.         New(pi);
  60.         pi^:=i;
  61.         r:=Tree.Items.AddChildObject(nil,Format('%s %s - %d MB',[MiTeC_WinIOCTL.GetMediaTypeStr(Devices[i].Geometry.MediaType),Devices[i].Model,(Devices[i].Capacity div 1024) div 1024]),pi);
  62.         case Devices[i].Geometry.MediaType of
  63.           Fixedmedia: r.ImageIndex:=0;
  64.           Removablemedia: r.ImageIndex:=1;
  65.           else r.ImageIndex:=1;
  66.         end;
  67.         r.SelectedIndex:=r.ImageIndex;
  68.         for j:=0 to High(Devices[i].Layout) do begin
  69.           n:=Tree.Items.AddChild(r,Format('%s / %s - %d MB',[
  70.                                GetPartitionType(Devices[i].Layout[j].PartitionNumber,Devices[i].Layout[j].PartitionType),
  71.                                GetPartitionSystem(Devices[i].Layout[j].PartitionType),
  72.                                (Devices[i].Layout[j].PartitionLength.QuadPart div 1024) div 1024]));
  73.           n.ImageIndex:=r.ImageIndex;
  74.           n.SelectedIndex:=n.ImageIndex;
  75.         end;
  76.         r.Expand(False);
  77.       end;
  78.       pTitle.Caption:=Format('              %d connected device(s)',[ConnectedDevices]);
  79.     finally
  80.       Screen.Cursor:=crDefault;
  81.     end;
  82. end;
  83.  
  84. procedure Twnd_dv_Main.bCloseClick(Sender: TObject);
  85. begin
  86.   Close;
  87. end;
  88.  
  89. procedure Twnd_dv_Main.FormCreate(Sender: TObject);
  90. begin
  91.   Storage:=TStorage.Create;
  92.   cmRefresh(nil);
  93. end;
  94.  
  95. procedure Twnd_dv_Main.TreeDeletion(Sender: TObject; Node: TTreeNode);
  96. begin
  97.   if Assigned(Node.Data) then
  98.     Dispose(PInteger(Node.Data));
  99. end;
  100.  
  101. procedure Twnd_dv_Main.TreeCustomDrawItem(Sender: TCustomTreeView;
  102.   Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
  103. begin
  104.   if Assigned(Node) then
  105.     if Assigned(Node.data) then
  106.       Sender.Canvas.Font.Style:=[fsBold];
  107. end;
  108.  
  109. procedure Twnd_dv_Main.FormDestroy(Sender: TObject);
  110. begin
  111.   Storage.Free;
  112. end;
  113.  
  114. procedure Twnd_dv_Main.TreeChange(Sender: TObject; Node: TTreeNode);
  115. begin
  116.   if Assigned(Node) and Assigned(Node.Data) then begin
  117.     eSerial.Text:=Storage.Devices[PInteger(Node.Data)^].SerialNumber;
  118.     eRev.Text:=Storage.Devices[PInteger(Node.Data)^].Revision;
  119.   end else begin
  120.     eSerial.Text:='';
  121.     eRev.Text:='';
  122.   end;
  123. end;
  124.  
  125. procedure Twnd_dv_Main.bSaveClick(Sender: TObject);
  126. var
  127.   sl: TStringList;
  128. begin
  129.   sl:=TStringList.Create;
  130.   if sd.Execute then begin
  131.     Storage.Report(sl,True);
  132.     sl.SaveToFile(sd.FileName);
  133.   end;
  134.   sl.Free;
  135. end;
  136.  
  137. end.
  138.