home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / PRECOM.ZIP / SAMPLE.ZIP / SAM.MOD < prev    next >
Text File  |  1992-10-02  |  6KB  |  191 lines

  1. IMPLEMENTATION MODULE SAM;
  2. FROM LstBox IMPORT ListBox;
  3. FROM Sample IMPORT Org,Staff;
  4. FROM Str IMPORT FixRealToStr,CardToStr;
  5. (* sample data manager application *)
  6.  
  7. IMPORT OS2DEF,Win,Lib,SYSTEM;
  8.  
  9. FROM OS2DEF IMPORT HDC,HRGN,HAB,HPS,HBITMAP,HWND,HMODULE,HSEM,
  10.                    POINTL,RECTL,PID,TID,LSET,NULL,
  11.                    COLOR,NullVar,NullStr,BOOL ;
  12.  
  13.  
  14. VAR
  15.  
  16.  OrgList  : POINTER TO ListBox;
  17.  OrgUnit  : POINTER TO Org;
  18.  StaffMbr : POINTER TO Staff;
  19. (*# save,
  20.     call(near_call=>off, reg_param=>(), reg_saved=>(di,si,ds,es,st1,st2)) *)
  21.  
  22.  
  23.  
  24.  
  25.  
  26. PROCEDURE WrTxtItem(hwnd : HWND; Id : CARDINAL; Txt : ARRAY OF CHAR);
  27. VAR
  28.   B : BOOLEAN;
  29. BEGIN
  30.   B := Win.SetWindowText(Win.WindowFromID(hwnd,Id),Txt);
  31. END WrTxtItem;
  32.  
  33. PROCEDURE WrRealItem(hwnd : HWND; Id : CARDINAL; R : LONGREAL);
  34. VAR
  35.   Txt : ARRAY[0..14] OF CHAR;
  36.   B : BOOLEAN;
  37. BEGIN
  38.   FixRealToStr(R,2,Txt,B);
  39.   WrTxtItem(hwnd,Id,Txt);
  40. END WrRealItem;
  41.  
  42. PROCEDURE WrCardItem(hwnd : HWND; Id : CARDINAL; C : CARDINAL);
  43. VAR
  44.   Txt : ARRAY[0..12] OF CHAR;
  45.   B : BOOLEAN;
  46. BEGIN
  47.   CardToStr(LONGCARD(C),Txt,10,B);
  48.   WrTxtItem(hwnd,Id,Txt);
  49. END WrCardItem;
  50.  
  51.  
  52.  
  53. PROCEDURE StaffDlgProc(hwnd : HWND;msg:CARDINAL;mp1,mp2:Win.MPARAM):Win.MRESULT;
  54.  
  55. VAR Nbr : CARDINAL;
  56.    A   : ADDRESS;
  57. BEGIN
  58.   CASE msg OF
  59.     Win.WM_INITDLG:
  60.                     WrTxtItem(hwnd,Name,StaffMbr^.Name);
  61.                     WrTxtItem(hwnd,Job,StaffMbr^.Job);
  62.                     WrCardItem(hwnd,Dept,StaffMbr^.DeptNbr);
  63.  
  64.                     WrCardItem(hwnd,Years, StaffMbr^.Years);
  65.                     WrRealItem(hwnd,Salary,StaffMbr^.Salary);
  66.                     WrRealItem(hwnd,Commis,StaffMbr^.Comm);
  67.  
  68.  
  69.    |Win.WM_CONTROL:
  70.          CASE Win.LOWORD(mp1) OF
  71.  
  72.  
  73.         END; (* end case of control ID *)
  74.    (* process any push buttons or other control windows *)
  75.    |Win.WM_COMMAND:
  76.    |Win.WM_CLOSE:
  77.          Win.PostMsg(hwnd, Win.WM_COMMAND, Win.MAKELONG(Win.DID_CANCEL,0), 0);
  78.     ELSE RETURN(Win.DefDlgProc(hwnd, msg, mp1, mp2));
  79.  END; (* end of outer case *)
  80.  RETURN Win.DefDlgProc(hwnd,msg,mp2,mp2);
  81. END StaffDlgProc;
  82.  
  83.  
  84. PROCEDURE OrgUnitDlgProc(hwnd : HWND;msg:CARDINAL;mp1,mp2:Win.MPARAM):Win.MRESULT;
  85.  
  86. VAR Nbr : CARDINAL;
  87.     A  : LONGCARD;
  88.     B  : BOOLEAN;
  89.  
  90. BEGIN
  91.   CASE msg OF
  92.     Win.WM_INITDLG: A := 5555;
  93.                     B := Win.SetWindowULong(hwnd,0,A);
  94.                     A := 0;
  95.                     A := Win.QueryWindowULong(hwnd,0);
  96.                     OrgUnit^.GetStaffList();
  97.                     OrgUnit^.StaffLst.FillBox(hwnd,EmplyeeLst);
  98.                     WrTxtItem(hwnd,Department,OrgUnit^.DeptName);
  99.                     WrCardItem(hwnd,DeptNbr,OrgUnit^.DeptNbr);
  100.  
  101.                     WrCardItem(hwnd,Manager, OrgUnit^.Manager);
  102.                     WrTxtItem(hwnd,Division,OrgUnit^.Division);
  103.                     WrTxtItem(hwnd,Location,OrgUnit^.Location);
  104.                     WrRealItem(hwnd,Avg,OrgUnit^.AvgSalary);
  105.                     WrRealItem(hwnd,Min,OrgUnit^.MinSalary);
  106.                     WrRealItem(hwnd,Max,OrgUnit^.MaxSalary);
  107.  
  108.    |Win.WM_CONTROL:
  109.          CASE Win.LOWORD(mp1) OF
  110.            EmplyeeLst :   (* if an employee was selected from the list*)
  111.                   CASE Win.HIWORD(mp1) OF (* double click set active *)
  112.                     Win.LN_ENTER:OrgUnit^.StaffLst.GetSelected(StaffMbr,Nbr);
  113.                                   Nbr := Win.DlgBox(Win.HWND_DESKTOP, hwnd,
  114.                                            StaffDlgProc,
  115.                                            0, EmplyDetail,NIL);
  116.                   END;    
  117.  
  118.         END; (* end case of control ID *)
  119.    (* process any push buttons or other control windows *)
  120.    |Win.WM_COMMAND:
  121.    |Win.WM_CLOSE:
  122.          Win.PostMsg(hwnd, Win.WM_COMMAND, Win.MAKELONG(Win.DID_CANCEL,0), 0);
  123.     ELSE RETURN(Win.DefDlgProc(hwnd, msg, mp1, mp2));
  124.  END; (* end of outer case *)
  125.  RETURN Win.DefDlgProc(hwnd,msg,mp2,mp2);
  126. END OrgUnitDlgProc;
  127.  
  128. PROCEDURE SampleMessageProc(hwnd : HWND;msg:CARDINAL;mp1,mp2:Win.MPARAM):Win.MRESULT;
  129. VAR
  130.  
  131.  hWndParent : HWND;
  132.  J,Size,Code : CARDINAL;
  133.  P1,P2 : Win.MPARAM;
  134.  Reply : Win.MRESULT;
  135.  ScrollHwnd : HWND;
  136.  Nbr : CARDINAL;
  137.  
  138. BEGIN
  139.   CASE msg OF
  140.     Win.WM_INITDLG: OrgList := ADDRESS(mp2);
  141.                   OrgList^.FillBox(hwnd,OrgUnitLst);
  142.    |Win.WM_CONTROL:
  143.          CASE Win.LOWORD(mp1) OF
  144.            OrgUnitLst :
  145.                   CASE Win.HIWORD(mp1) OF (* double click set active *)
  146.                     Win.LN_ENTER: OrgList^.GetSelected(OrgUnit,Nbr);
  147.                                   Nbr := Win.DlgBox(Win.HWND_DESKTOP, hwnd,
  148.                                            OrgUnitDlgProc,
  149.                                            0, OrgUnitDetail,OrgUnit);
  150.                   END;    
  151.  
  152.         END; (* end case of control ID *)
  153.    (* process any push buttons or other control windows *)
  154.    |Win.WM_COMMAND:
  155. (**********
  156.      CASE Win.LOWORD(mp1) OF
  157.             ZID.PB_OK: (* an ok button was pushed    *)
  158.                  Reply := Win.SendMsg(Win.WindowFromID(hwnd,ZID.LB_RECENT),
  159.                                       Win.LM_QUERYSELECTION, P1,P2);
  160.                  IF Reply <> Win.LIT_NONE
  161.                    THEN
  162.                      GetElmtAdr(MemoryList,CARDINAL(Reply+1),Pnt,Size,Code);
  163.                      CurtClient^ := Pnt^;
  164.                      AddToMemory();
  165.                      (* WrZpersonaScr(MainHwnd,CurtClient); BDC 07/08/92 *)
  166.                       WrScreen();
  167.  
  168.                    END;
  169.                  Win.DismissDlg(hwnd, 0);
  170.  
  171.             |ZID.PB_CANCEL: (* Cancle Button            *)
  172.                  Win.DismissDlg(hwnd, 1);
  173.             ELSE RETURN Win.DefDlgProc(hwnd,Message,mp2,mp2);
  174.          END; (* end of push button commands *)
  175.  
  176. ******************)
  177.    |Win.WM_CLOSE:
  178.          Win.PostMsg(hwnd, Win.WM_COMMAND, Win.MAKELONG(Win.DID_CANCEL,0), 0);
  179.     ELSE RETURN(Win.DefDlgProc(hwnd, msg, mp1, mp2));
  180.  END; (* end of outer case *)
  181.  RETURN Win.DefDlgProc(hwnd,msg,mp2,mp2);
  182. END SampleMessageProc;
  183.  
  184.  
  185.  
  186.  
  187. (*# restore *)
  188.  
  189.  
  190.  
  191. END SAM.