home *** CD-ROM | disk | FTP | other *** search
/ The Mother of All Windows Books / CD-MOM.iso / cd_mom / newsletr / vbz / vbz1-3 / dll_src.exe / VBZUTIL.PAS < prev    next >
Pascal/Delphi Source File  |  1993-02-25  |  4KB  |  171 lines

  1. library VBZUTIL;
  2. {VBZ Utility Library by Jonathan Zuck}
  3. {Version 1.0}
  4.  
  5. {$R VBZUTIL}
  6.  
  7. Uses WinProcs, WinTypes, VBAPI, CDKUTIL;
  8.  
  9. Var
  10.   Buff: array [0..40] of Byte;
  11.   Buff2: array [0..40] of Byte;
  12.  
  13. function CtlName (hctl:HCTL):HLSTR;export;
  14. Begin
  15.   VBGetControlName (hctl, @Buff);
  16.   CtlName := VBCreateTempHlstr (@Buff,
  17.   lstrlen (PChar (@Buff)));
  18. end;
  19.  
  20. procedure GetCtlArrMinMax (Ctl:HCTL; var Min:Integer; var Max:Integer);
  21. Var
  22.   StdPropIndex, i:Integer;
  23.   CtlTemp:HCTL;
  24. Begin
  25.   VBGetControlName (Ctl, @Buff);
  26.   StdPropIndex := GetStdPropIndex(Ctl, IPROP_STD_INDEX);
  27.   VBGetControlProperty (Ctl, StdPropIndex, @i);
  28.   Min := i;
  29.   Max := i;
  30.   CtlTemp := VBGetControl (Ctl, GC_FIRSTCONTROL);
  31.   while CtlTemp <> Nil do
  32.       begin
  33.         VBGetControlName (CtlTemp, @Buff2);
  34.       if lstrcmp (@Buff, @Buff2) = 0 then
  35.       begin
  36.                 VBGetControlProperty (CtlTemp, StdPropIndex, @i);
  37.           if i < Min then Min := i;
  38.           if i > Max then Max := i;
  39.       end;
  40.           CtlTemp := VBGetControl (CtlTemp, GC_NEXTCONTROL);
  41.     end;
  42. end;
  43.  
  44. function CtlLBound (Ctl:HCTL):Integer;export;
  45. Var
  46.     Min, Max:Integer;
  47. Begin
  48.   GetCtlArrMinMax (Ctl, Min, Max);
  49.   CtlLBound := Min;
  50. end;
  51.  
  52. function CtlUBound (Ctl:HCTL):Integer;export;
  53. Var
  54.     Min, Max:Integer;
  55. Begin
  56.   GetCtlArrMinMax (Ctl, Min, Max);
  57.   CtlUBound := Max;
  58. end;
  59.  
  60.  
  61. function Str2Ctl (Ctl:HCTL;MyString:PChar):Integer;export;
  62. Var
  63.   Max:Integer;
  64.   CtlTemp:HCTL;
  65. Begin
  66.   Max := 0;
  67.   CtlTemp := VBGetControl (Ctl, GC_FIRSTCONTROL);
  68.   while CtlTemp <> Nil do
  69.       begin
  70.         VBGetControlName (CtlTemp, @Buff2);
  71.       if lstrcmp (MyString, @Buff2) = 0 then begin
  72.            Str2Ctl := Max - 1;
  73.            Exit;
  74.       end;
  75.       Inc (Max);
  76.       CtlTemp := VBGetControl (CtlTemp, GC_NEXTCONTROL);
  77.     end;
  78.     Str2Ctl := -1;
  79. end;
  80.  
  81.  
  82. function HWnd2Ctl (MyWnd:HWND):Integer;export;
  83. Var
  84.   Max:Integer;
  85.   CtlTemp, MyCtl:HCTL;
  86. Begin
  87.   Max := 0;
  88.   HWnd2Ctl := -1;
  89.   MyCtl := VBGetHWndControl (MyWnd);
  90.   if MyCtl = nil then Exit; 
  91.   CtlTemp := VBGetControl (MyCtl, GC_FIRSTCONTROL);
  92.   while CtlTemp <> Nil do
  93.       begin
  94.       if CtlTemp = MyCtl then begin
  95.            HWnd2Ctl := Max - 1;
  96.            Exit;
  97.       end;
  98.       Inc (Max);
  99.       CtlTemp := VBGetControl (CtlTemp, GC_NEXTCONTROL);
  100.     end;
  101. end;
  102.  
  103. function GetHInstance:Integer;export;
  104. begin
  105.     GetHInstance := VBGetHInstance;
  106. end;
  107.  
  108. function HIWORD (Hi, Lo:Integer):Integer;export;
  109. Begin
  110.     HIWORD := Hi;
  111. end;
  112.  
  113. function LOWORD (Hi, Lo:Integer):Integer;export;
  114. Begin
  115.     LOWORD := Lo;
  116. end;
  117.  
  118. function MakeLong(A, B: Word): LongInt;export;
  119. begin
  120. inline(
  121.   $5A/    { POP DX }
  122.   $58);   { POP AX }
  123. end;
  124.  
  125. function LP2Str (pb:Pointer; cbLen:Integer):HLSTR;export;
  126.   Begin
  127.        LP2Str := VBCreateTempHlStr (pb, cblen);
  128.   end;
  129.  
  130. function LPSTR2Str (pb:PChar):HLSTR;export;
  131.   Begin
  132.        LPSTR2Str := VBCreateTempHlStr (pb, lstrlen(pb));
  133.   end;
  134. procedure ReCreateControlhWnd (Ctl:HCTL);export;
  135. var
  136.     Temp:LongInt;
  137.   pModel:LPMODEL;
  138.  
  139. begin
  140.    pModel := VBGetControlModel (Ctl);
  141.    Temp := pModel^.flWndStyle;
  142.    pModel^.flWndStyle := GetWindowLong (VBGetControlHwnd(Ctl), GWL_STYLE);
  143.    VBRecreateControlHwnd (Ctl);
  144.    pModel := VBGetControlModel (Ctl);
  145.    pModel^.flWndStyle := Temp;
  146. end;
  147.  
  148. function USHORT (VBInt:WORD):LongInt;export;
  149. begin
  150.     USHORT := VBInt;
  151. end;
  152.  
  153.  
  154. Exports
  155.     CtlName resident,
  156.     CtlLBound resident,
  157.     CtlUBound resident,
  158.     Str2Ctl resident,
  159.     HWnd2Ctl resident,
  160.     GetHInstance resident,
  161.     HiWord resident,
  162.     LoWord resident,
  163.     MakeLong resident,
  164.     LP2Str resident,
  165.     LPSTR2Str resident,
  166.     ReCreateControlhWnd resident,
  167.     UShort resident;
  168.  
  169. Begin
  170. End.
  171.