home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / Pascal / Snippets / PNL Libraries / MyTrackTextItems.p < prev    next >
Encoding:
Text File  |  1996-10-21  |  1.9 KB  |  80 lines  |  [TEXT/CWIE]

  1. unit MyTrackTextItems;
  2.  
  3. interface
  4.  
  5.     uses
  6.         Dialogs;
  7.  
  8.     procedure TrackTextItemsCreate (dialog: DialogPtr; var data: univ Handle);
  9.     procedure TrackTextItemsDestroy (var data: univ Handle);
  10.     procedure TrackTextItems (data: univ Handle; dialog: DialogPtr);
  11.     function AnyTextItemHasChanged (data: univ Handle; dialog: DialogPtr): boolean;
  12.     function TextItemHasChanged (data: univ Handle; dialog: DialogPtr; item: integer): boolean;
  13.     function TextItemWas (data: univ Handle; item: integer): Str255;
  14.  
  15. implementation
  16.  
  17.     uses
  18.         MyStrh, MyDialogs;
  19.  
  20.     procedure TrackTextItemsCreate (dialog: DialogPtr; var data: univ Handle);
  21.     begin
  22.         data := Handle(NewStrH);
  23.         TrackTextItems(data, dialog);
  24.     end;
  25.  
  26.     procedure TrackTextItemsDestroy (var data: univ Handle);
  27.     begin
  28.         DisposeHandle(data);
  29.     end;
  30.  
  31.     procedure SafeGetItemText (dialog: DialogPtr; item: integer; var s: Str255);
  32.         var
  33.             k: integer;
  34.     begin
  35.         s := '';
  36.         GetDItemKind(dialog, item, k);
  37.         if k in [editText, statText] then begin
  38.             GetItemText(dialog, item, s);
  39.         end;
  40.     end;
  41.  
  42.     procedure TrackTextItems (data: univ Handle; dialog: DialogPtr);
  43.         var
  44.             i: integer;
  45.             s: Str255;
  46.             junk: OSErr;
  47.     begin
  48.         for i := 1 to CountDItems(dialog) do begin
  49.             SafeGetItemText(dialog, i, s);
  50.             junk := SetIndStrH(StrHHandle(data), i, s);
  51.         end;
  52.     end;
  53.  
  54.     function TextItemWas (data: univ Handle; item: integer): Str255;
  55.     begin
  56.         TextItemWas := GetIndStrH(StrHHandle(data), item);
  57.     end;
  58.  
  59.     function TextItemHasChanged (data: univ Handle; dialog: DialogPtr; item: integer): boolean;
  60.         var
  61.             s: Str255;
  62.     begin
  63.         SafeGetItemText(dialog, item, s);
  64.         TextItemHasChanged := s <> TextItemWas(data, item);
  65.     end;
  66.  
  67.     function AnyTextItemHasChanged (data: univ Handle; dialog: DialogPtr): boolean;
  68.         var
  69.             i: integer;
  70.     begin
  71.         AnyTextItemHasChanged := false;
  72.         for i := 1 to CountDItems(dialog) do begin
  73.             if TextItemHasChanged(data, dialog, i) then begin
  74.                 AnyTextItemHasChanged := true;
  75.                 leave;
  76.             end;
  77.         end;
  78.     end;
  79.  
  80. end.