home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 October / Chip_2001-10_cd1.bin / zkuste / delphi / kompon / d56 / MSYSINFO.ZIP / Demos / GUI / CP.pas < prev    next >
Pascal/Delphi Source File  |  2001-07-23  |  4KB  |  170 lines

  1. {$I MITEC_DEF.INC}
  2.  
  3. unit CP;
  4.  
  5. interface
  6.  
  7. uses
  8.   {$IFDEF D6PLUS} Variants, {$ENDIF}
  9.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  10.   StdCtrls, ExtCtrls, ComCtrls;
  11.  
  12. type
  13.   TdlgCounter = class(TForm)
  14.     Panel1: TPanel;
  15.     Panel2: TPanel;
  16.     pc: TPageControl;
  17.     tsGeneral: TTabSheet;
  18.     Panel3: TPanel;
  19.     Bevel3: TBevel;
  20.     lType: TLabel;
  21.     stLevel: TLabel;
  22.     lScale: TLabel;
  23.     lSize: TLabel;
  24.     lName: TLabel;
  25.     Label1: TLabel;
  26.     Bevel1: TBevel;
  27.     stName: TEdit;
  28.     stType: TLabel;
  29.     stScale: TLabel;
  30.     stSize: TLabel;
  31.     Memo: TMemo;
  32.     tsObject: TTabSheet;
  33.     Bevel2: TBevel;
  34.     lCntr: TLabel;
  35.     lLevel1: TLabel;
  36.     lInst: TLabel;
  37.     lPage: TLabel;
  38.     lObjname: TLabel;
  39.     Label7: TLabel;
  40.     Bevel4: TBevel;
  41.     lCtrs: TLabel;
  42.     Bevel5: TBevel;
  43.     Bevel6: TBevel;
  44.     lTime: TLabel;
  45.     lFreq: TLabel;
  46.     stLevel1: TLabel;
  47.     stObjName: TLabel;
  48.     stCntr: TLabel;
  49.     stInst: TLabel;
  50.     stPage: TLabel;
  51.     Memo1: TMemo;
  52.     stCtrs: TLabel;
  53.     stTime: TLabel;
  54.     stFreq: TLabel;
  55.     Button1: TButton;
  56.     lLevel: TLabel;
  57.   private
  58.     FCounter: TObject;
  59.     FPerfLib: TObject;
  60.   public
  61.     property Counter: TObject read FCounter write FCounter;
  62.     property PerfLib: TObject read FPerfLib write FPerfLib;
  63.     procedure Refresh;
  64.   end;
  65.  
  66. procedure ShowPropsDlg(APerfLib: TObject; AParameter: Variant);
  67.  
  68. implementation
  69.  
  70. uses MiTeC_Routines, MiTeC_PerfLibNT, MiTeC_PerfLib9x;
  71.  
  72. {$R *.DFM}
  73.  
  74. procedure ShowPropsDlg(APerfLib: TObject; AParameter: Variant);
  75. var
  76.   po: TPerfObject;
  77.   p: PChar;
  78. begin
  79.   p:=nil;
  80.   with TdlgCounter.Create(Application.Mainform) do begin
  81.     FPerfLib:=APerfLib;
  82.     if IsNT then begin
  83.       if VarIsArray(AParameter) then begin
  84.         po:=TPerfLibNT(FPerfLib).Objects[TPerfLibNT(FPerfLib).GetIndexByName(AParameter[1])];
  85.         Counter:=po.Counters[po.GetCntrIndexByName(AParameter[0])];
  86.       end else begin
  87.         Counter:=TPerfLibNT(FPerfLib).Objects[TPerfLibNT(FPerfLib).GetIndexByName(AParameter)]
  88.       end;
  89.     end else begin
  90.       p:=AllocMem(255);
  91.       if VarIsArray(AParameter) then begin
  92.         strpcopy(p,AParameter[1]+'\'+AParameter[0]);
  93.         Counter:=TObject(p);
  94.       end else begin
  95.         strpcopy(p,AParameter);
  96.         Counter:=TObject(p);
  97.       end;
  98.     end;
  99.     Refresh;
  100.     ShowModal;
  101.     if Assigned(p) then
  102.       FreeMem(p);
  103.     Free;
  104.   end;
  105. end;
  106.  
  107. { TpropCounter }
  108.  
  109. procedure TdlgCounter.Refresh;
  110. var
  111.   po: TPerfObject;
  112.   sc,so: string;
  113.   i: integer;
  114. begin
  115.   if IsNT then begin
  116.     if Counter is TPerfCounter then begin
  117.       pc.ActivePage:=tsGeneral;
  118.       po:=TPerfCounter(Counter).ParentObject;
  119.     end else begin
  120.       pc.ActivePage:=tsObject;
  121.       tsGeneral.TabVisible:=False;
  122.       po:=TPerfObject(Counter);
  123.     end;
  124.     if Counter is TPerfCounter then
  125.       with TPerfCounter(Counter) do begin
  126.         stName.Text:=Name;
  127.         stType.Caption:=GetCounterTypeStr(CounterType);
  128.         stScale.Caption:=Format('%d',[DefaultScale]);
  129.         stSize.Caption:=Format('%d',[CounterSize]);
  130.         stLevel.Caption:=GetDetailLevelStr(DetailLevel);
  131.         Memo.Text:=Description;
  132.       end;
  133.     with po do begin
  134.       stObjName.Caption:=Name;
  135.       stCntr.Caption:=Format('%d',[DefaultCounter]);
  136.       stPage.Caption:=Format('%d',[CodePage]);
  137.       stLevel1.Caption:=GetDetailLevelStr(DetailLevel);
  138.       if InstanceCount>-1 then
  139.         stInst.Caption:=Format('%d',[InstanceCount])
  140.       else
  141.         stInst.Caption:='0';
  142.       stCtrs.Caption:=Format('%d',[CounterCount]);
  143.       stTime.Caption:=FormatSeconds(PerfTime.QuadPart div timer100n,True,False,True);
  144.       stFreq.Caption:=FormatFloat('#,#0',PerfFreq.QuadPart);
  145.       Memo1.Text:=Description;
  146.     end;
  147.   end else begin
  148.     sc:=StrPas(PChar(Counter));
  149.     i:=Pos('\',sc);
  150.     if i>0 then begin
  151.       pc.ActivePage:=tsGeneral;
  152.       so:=Copy(sc,1,i-1);
  153.     end else begin
  154.       pc.ActivePage:=tsObject;
  155.       tsGeneral.TabVisible:=False;
  156.       so:=sc;
  157.     end;
  158.     with TPerfLib9x(FPerfLib) do begin
  159.       if i>0 then begin
  160.         stName.Text:=SysDataName[sc];
  161.         Memo.Text:=SysDataDesc[sc];
  162.       end;
  163.       stObjName.Caption:=SysDataName[so];
  164.       Memo1.Text:=SysDataDesc[so];
  165.     end;
  166.   end;
  167. end;
  168.  
  169. end.
  170.