home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sp15demo.zip / libsrc.zip / LIBSRC / CONTROLS.PAS < prev    next >
Pascal/Delphi Source File  |  1995-09-29  |  28KB  |  811 lines

  1. UNIT Controls;
  2.  
  3. {$R-,D-,S-}
  4.  
  5. INTERFACE
  6.  
  7. USES Os2Def,ObjectPM,Crt,PmBitmap,PmWin,PmStdDlg;
  8.  
  9. TYPE
  10.     __MyPARAM=RECORD
  11.                 aindex:LONGWORD;   {PP_XXXX index}
  12.                 cb:LONGWORD;   {total bytes in data fields below}
  13.                 CASE Integer OF {This field is 4 bytes in length}
  14.                   1:(along:LONGINT);
  15.                   2:(apsz:PChar);
  16.                   3:(argb:RGB);
  17.               END;
  18.  
  19.     __PMyPRESPARAMS=^__TMyPRESPARAMS;
  20.     __TMyPRESPARAMS=RECORD
  21.                      cb:LONGWORD;  {total bytes of __MyParam (Count*12)}
  22.                      aparam:ARRAY[1..43] OF __MyPARAM;
  23.                END;
  24.  
  25.     { TControl creation attributes }
  26.      TControlAttr = RECORD
  27.                        Title:STRING;
  28.                        WinClass:LONGWORD;
  29.                        Flags:LONGWORD;
  30.                        X, Y, W, H: LONGINT;
  31.                        ResourceId:LONGWORD;
  32.                        ResourceModule:HModule;
  33.                        WindowId:LONGWORD;
  34.                        PresParamCount:BYTE;
  35.                        ThePresParams:__TMyPRESPARAMS;
  36.                        TheCtlData:POINTER;
  37.                    END;
  38.  
  39.     PControl=^TControl;
  40.     TControl=OBJECT(TWindowsObject)
  41.                   OldWndProc:POINTER;
  42.                   Title:STRING;
  43.                   Attr:TControlAttr;
  44.                   QuietMode:BOOLEAN; {All Controls like Bitmaps}
  45.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING);
  46.                   FUNCTION Create:BOOLEAN;VIRTUAL;
  47.                   PROCEDURE CloseWindow;VIRTUAL;
  48.                   PROCEDURE SendMouseEventToOwner(VAR Msg:TMessage);
  49.                   PROCEDURE SetPresentationParameter(aindex:BYTE;
  50.                                                      aValue:LONGINT);
  51.  
  52.                   PROCEDURE DefWndProc(var Msg: TMessage); VIRTUAL {index 1};
  53.  
  54.                   PROCEDURE WMPaint(VAR Msg:TMessage);
  55.                                   VIRTUAL WM_FIRST+WM_PAINT;
  56.                   PROCEDURE WMButton1Down(VAR Msg:TMessage);
  57.                                    VIRTUAL WM_FIRST+WM_BUTTON1DOWN;
  58.                   PROCEDURE WMButton1Up(VAR Msg:TMessage);
  59.                                    VIRTUAL WM_FIRST+WM_BUTTON1UP;
  60.                   PROCEDURE WMButton1CLICK(VAR Msg:TMessage);
  61.                                    VIRTUAL WM_FIRST+WM_BUTTON1CLICK;
  62.                   PROCEDURE WMButton1DBLCLK(VAR Msg:TMessage);
  63.                                    VIRTUAL WM_FIRST+WM_BUTTON1DBLCLK;
  64.                   PROCEDURE WMMouseMove(VAR Msg:TMessage);
  65.                                    VIRTUAL WM_FIRST+WM_MOUSEMOVE;
  66.              END;
  67.  
  68.     PButton=^TButton;
  69.     TButton=OBJECT(TControl)
  70.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING);
  71.             END;
  72.  
  73.     PGroupBox=^TGroupBox;
  74.     TGroupBox=OBJECT(TControl)
  75.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING);
  76.             END;
  77.  
  78.     PRadioBox=^TRadioBox;
  79.     TRadioBox=OBJECT(TControl)
  80.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING);
  81.             END;
  82.  
  83.     PCheckBox=^TCheckBox;
  84.     TCheckBox=OBJECT(TControl)
  85.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING);
  86.             END;
  87.  
  88.     PListBox=^TListBox;
  89.     TListBox=OBJECT(TControl)
  90.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING);
  91.             END;
  92.  
  93.     PEntryField=^TEntryField;
  94.     TEntryField=OBJECT(TControl)
  95.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING);
  96.             END;
  97.  
  98.     PText=^TText;
  99.     TText=OBJECT(TControl)
  100.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING);
  101.             END;
  102.  
  103.     PHScrollBar=^THScrollBar;
  104.     THScrollBar=OBJECT(TControl)
  105.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING);
  106.             END;
  107.  
  108.     PMLE=^TMLE;
  109.     TMLE=OBJECT(TControl)
  110.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING);
  111.             END;
  112.  
  113.     PNOTEBOOK=^TNOTEBOOK;
  114.     TNOTEBOOK=OBJECT(TControl)
  115.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING);
  116.             END;
  117.  
  118.     PVScrollBar=^TVScrollBar;
  119.     TVScrollBar=OBJECT(TControl)
  120.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING);
  121.             END;
  122.  
  123.     PIcon=^TIcon;
  124.     TIcon=OBJECT(TControl)
  125.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING);
  126.             END;
  127.  
  128.     PBitmap=^TBitmap;
  129.     TBitmap=OBJECT(TControl)
  130.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING);
  131.             END;
  132.  
  133.     PValueSet=^TValueSet;
  134.     TValueSet=OBJECT(TControl)
  135.                   rows,columns:WORD;
  136.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING;
  137.                                    TheRows,TheColumns:WORD);
  138.                   FUNCTION Create:BOOLEAN;VIRTUAL;
  139.             END;
  140.  
  141.     PSpinButton=^TSpinButton;
  142.     TSpinButton=OBJECT(TControl)
  143.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING);
  144.             END;
  145.  
  146.     PSlider=^TSlider;
  147.     TSlider=OBJECT(TControl)
  148.                   Scale1,Scale2:LONGINT;
  149.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING;
  150.                                    TheScale1,TheScale2:LONGINT);
  151.                   FUNCTION Create:BOOLEAN;VIRTUAL;
  152.             END;
  153.  
  154.     PRectangle=^TRectangle;
  155.     TRectangle=OBJECT(TControl)
  156.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING);
  157.             END;
  158.  
  159.     PFrame=^TFrame;
  160.     TFrame=OBJECT(TControl)
  161.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING);
  162.             END;
  163.  
  164.     PContainer=^TContainer;
  165.     TContainer=OBJECT(TControl)
  166.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING);
  167.             END;
  168.  
  169.     PUserDef=^TUserDef;
  170.     TUserDef=OBJECT(TControl)
  171.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING);
  172.             END;
  173.  
  174.     PComboBox=^TComboBox;
  175.     TComboBox=OBJECT(TControl)
  176.                   aEntryField:PEntryField;
  177.                   aListBox:PListBox;
  178.                   CONSTRUCTOR Init(AParent:PWindowsObject;ATitle:STRING);
  179.                   DESTRUCTOR Done;VIRTUAL;
  180.                   FUNCTION Create:BOOLEAN;VIRTUAL;
  181.             END;
  182.  
  183. { Presentation parameter types. }
  184. CONST
  185.    DPP_FOREGROUNDCOLOR                      =1;
  186.    DPP_FOREGROUNDCOLORINDEX                 =2;
  187.    DPP_BACKGROUNDCOLOR                      =3;
  188.    DPP_BACKGROUNDCOLORINDEX                 =4;
  189.    DPP_HILITEFOREGROUNDCOLOR                =5;
  190.    DPP_HILITEFOREGROUNDCOLORINDEX           =6;
  191.    DPP_HILITEBACKGROUNDCOLOR                =7;
  192.    DPP_HILITEBACKGROUNDCOLORINDEX           =8;
  193.    DPP_DISABLEDFOREGROUNDCOLOR              =9;
  194.    DPP_DISABLEDFOREGROUNDCOLORINDEX         =10;
  195.    DPP_DISABLEDBACKGROUNDCOLOR              =11;
  196.    DPP_DISABLEDBACKGROUNDCOLORINDEX         =12;
  197.    DPP_BORDERCOLOR                          =13;
  198.    DPP_BORDERCOLORINDEX                     =14;
  199.    DPP_FONTNAMESIZE                         =15;
  200.    DPP_FONTHANDLE                           =16;
  201.    DPP_RESERVED                             =17;
  202.    DPP_ACTIVECOLOR                          =18;
  203.    DPP_ACTIVECOLORINDEX                     =19;
  204.    DPP_INACTIVECOLOR                        =20;
  205.    DPP_INACTIVECOLORINDEX                   =21;
  206.    DPP_ACTIVETEXTFGNDCOLOR                  =22;
  207.    DPP_ACTIVETEXTFGNDCOLORINDEX             =23;
  208.    DPP_ACTIVETEXTBGNDCOLOR                  =24;
  209.    DPP_ACTIVETEXTBGNDCOLORINDEX             =25;
  210.    DPP_INACTIVETEXTFGNDCOLOR                =26;
  211.    DPP_INACTIVETEXTFGNDCOLORINDEX           =27;
  212.    DPP_INACTIVETEXTBGNDCOLOR                =28;
  213.    DPP_INACTIVETEXTBGNDCOLORINDEX           =29;
  214.    DPP_SHADOW                               =30;
  215.    DPP_MENUFOREGROUNDCOLOR                  =31;
  216.    DPP_MENUFOREGROUNDCOLORINDEX             =32;
  217.    DPP_MENUBACKGROUNDCOLOR                  =33;
  218.    DPP_MENUBACKGROUNDCOLORINDEX             =34;
  219.    DPP_MENUHILITEFGNDCOLOR                  =35;
  220.    DPP_MENUHILITEFGNDCOLORINDEX             =36;
  221.    DPP_MENUHILITEBGNDCOLOR                  =37;
  222.    DPP_MENUHILITEBGNDCOLORINDEX             =38;
  223.    DPP_MENUDISABLEDFGNDCOLOR                =39;
  224.    DPP_MENUDISABLEDFGNDCOLORINDEX           =40;
  225.    DPP_MENUDISABLEDBGNDCOLOR                =41;
  226.    DPP_MENUDISABLEDBGNDCOLORINDEX           =42;
  227.  
  228.  
  229. IMPLEMENTATION
  230.  
  231. {**************************************************************************
  232.  *                                                                        *
  233.  *  Object TControl                                                       *
  234.  *                                                                        *
  235.  **************************************************************************}
  236.  
  237. CONSTRUCTOR TControl.Init(AParent:PWindowsObject;ATitle:STRING);
  238. BEGIN
  239.      Inherited.Init(AParent);
  240.      Title:=ATitle;
  241.      OldWndProc:=NIL;
  242.      Attr.Title:=ATitle;
  243.      Attr.WinClass:=WC_STATIC;
  244.      Attr.Flags:=0;
  245.      Attr.X:=50;
  246.      Attr.Y:=50;
  247.      Attr.W:=100;
  248.      Attr.H:=100;
  249.      Attr.ResourceId:=0;
  250.      Attr.ResourceModule:=0;
  251.      Attr.WindowId:=0;
  252.      QuietMode:=FALSE;
  253.      Attr.PresParamCount:=0;   {No PreParams at all}
  254.      Attr.ThePresParams.cb:=0;  {No PresParams at all}
  255.      Attr.TheCtlData:=NIL;
  256. END;
  257.  
  258.  
  259. PROCEDURE TControl.CloseWindow;
  260. BEGIN
  261.      IF CanClose THEN
  262.      BEGIN
  263.           WinDestroyWindow(HWindow);
  264.           IF Parent<>NIL THEN
  265.           BEGIN
  266.               Parent^.RemoveChild(ObjectPtr);
  267.               IF Parent^.FirstChild=NIL THEN Parent^.ActiveChild:=NIL;
  268.           END;
  269.      END;
  270. END;
  271.  
  272.  
  273. PROCEDURE TControl.SetPresentationParameter(aindex:BYTE;aValue:LONGINT);
  274. VAR
  275.    t:BYTE;
  276. LABEL l;
  277. BEGIN
  278.      {Seach if the index is alwas present}
  279.      FOR t:=1 TO Attr.PresParamCount DO
  280.      BEGIN
  281.           IF Attr.ThePresParams.aparam[t].aindex=aindex THEN goto l; {found}
  282.      END;
  283.      {not found --> new one}
  284.      inc(Attr.PresParamCount);
  285.      t:=Attr.PresParamCount;
  286. l:
  287.      Attr.ThePresParams.cb:=Attr.PresParamCount*12;
  288.  
  289.      Attr.ThePresParams.aparam[t].aindex:=aindex;
  290.      Attr.ThePresParams.aparam[t].cb:=4;
  291.      Attr.ThePresParams.aparam[t].along:=avalue;
  292. END;
  293.  
  294.  
  295. FUNCTION TControl.Create:BOOLEAN;
  296. VAR
  297.    ParentWin:HWND;
  298.    params:__PMyPresParams;
  299.    CtlData:^LONGWORD;
  300.    cTitle:CSTRING;
  301. BEGIN
  302.      IF Parent=NIL THEN ParentWin:=HWND_DESKTOP
  303.      ELSE ParentWin:=Parent^.HWindow;
  304.  
  305.      {Set Presentation Parameter}
  306.      IF Attr.PresParamCount=0 THEN Params:=NIL
  307.      ELSE Params:=@Attr.ThePresParams;
  308.  
  309.      CtlData:=Attr.TheCtlData;
  310.  
  311.      cTitle:=Attr.Title;
  312.      HWindowFrame:=WinCreateWCWindow(ParentWin,Attr.WinClass,cTitle,
  313.                                      Attr.Flags,Attr.x,Attr.y,
  314.                                      Attr.w,Attr.h,ParentWin,HWND_TOP,
  315.                                      Attr.WindowID,CtlData,Params);
  316.      HWindow:=HWindowFrame;
  317.      IF HWindow=0 THEN
  318.      BEGIN
  319.           Create:=FALSE;
  320.           exit;
  321.      END;
  322.      WinSetWindowPos(HWindow,HWND_TOP,Attr.x,Attr.y,Attr.w,Attr.h,
  323.                      SWP_ZORDER OR SWP_SHOW OR SWP_MOVE);
  324.      WinSetWindowULong(HWindow,QWL_USER,LONGWORD(SELF));
  325.      OldWndProc:=WinSubClassWindow(HWindow,MessageHandlerAddr);
  326.      Create:=TRUE;
  327. END;
  328.  
  329. PROCEDURE TControl.WMPaint(VAR Msg:TMessage);
  330. BEGIN
  331. END;
  332.  
  333. PROCEDURE TControl.SendMouseEventToOwner(VAR Msg:TMessage);
  334. VAR
  335.    po:POINTS;
  336.    x,y:INTEGER;
  337.    aswp:SWP;
  338. BEGIN
  339.      IF Parent=NIL THEN exit;
  340.      po:=POINTS(Msg.Param1);
  341.      x:=po.x;
  342.      y:=po.y;
  343.      WinQueryWindowPos(HWindow,aswp);
  344.      po.x:=aswp.x+x;
  345.      po.y:=aswp.y+y;
  346.      WinSendMsg(Parent^.HWindow,Msg.Message,LONGWORD(po),0);
  347. END;
  348.  
  349.  
  350. PROCEDURE TControl.WMButton1DBLCLK(VAR Msg:TMessage);
  351. BEGIN
  352.      Inherited.WMButton1DBLCLK(Msg);
  353.      IF QuietMode THEN
  354.      BEGIN
  355.           SendMouseEventToOwner(Msg);
  356.           Msg.handled:=TRUE;
  357.      END;
  358. END;
  359.  
  360.  
  361. PROCEDURE TControl.WMMouseMove(VAR Msg:TMessage);
  362. BEGIN
  363.      IF QuietMode THEN
  364.      BEGIN
  365.           SendMouseEventToOwner(Msg);
  366.           Msg.handled:=TRUE;
  367.      END;
  368. END;
  369.  
  370. PROCEDURE TControl.WMButton1Down(VAR Msg:TMessage);
  371. BEGIN
  372.      Inherited.WMButton1Down(Msg);
  373.      IF QuietMode THEN
  374.      BEGIN
  375.           SendMouseEventToOwner(Msg);
  376.           Msg.Handled:=TRUE;
  377.      END;
  378. END;
  379.  
  380. PROCEDURE TControl.WMButton1Up(VAR Msg:TMessage);
  381. BEGIN
  382.      Inherited.WMButton1Up(Msg);
  383.      IF QuietMode THEN
  384.      BEGIN
  385.          SendMouseEventToOwner(Msg);
  386.          Msg.Handled:=TRUE;
  387.      END;
  388. END;
  389.  
  390. PROCEDURE TControl.WMButton1CLICK(VAR Msg:TMessage);
  391. BEGIN
  392.      Inherited.WMButton1CLICK(Msg);
  393.      IF QuietMode THEN
  394.      BEGIN
  395.          SendMouseEventToOwner(Msg);
  396.          Msg.Handled:=TRUE;
  397.      END;
  398. END;
  399.  
  400. PROCEDURE TControl.DefWndProc(var Msg: TMessage);
  401. VAR
  402.    DefProc:FUNCTION(Win,Msg,Param1,Param2:LONGWORD):LONGWORD;CDECL;
  403. BEGIN
  404.      DefProc:=OldWndProc;
  405.      Msg.Result:=DefProc(Msg.Receiver,Msg.Message,Msg.Param1,Msg.Param2);
  406.      Msg.Handled:=TRUE;
  407. END;
  408.  
  409.  
  410. {**************************************************************************
  411.  *                                                                        *
  412.  *  Object TButton                                                        *
  413.  *                                                                        *
  414.  **************************************************************************}
  415.  
  416.  
  417. CONSTRUCTOR TButton.Init(AParent:PWindowsObject;ATitle:STRING);
  418. BEGIN
  419.      Inherited.Init(AParent,ATitle);
  420.      Attr.WinClass:=WC_BUTTON;
  421.      Attr.Flags:=BS_PUSHBUTTON;
  422. END;
  423.  
  424.  
  425. {**************************************************************************
  426.  *                                                                        *
  427.  *  Object TGroupBox                                                      *
  428.  *                                                                        *
  429.  **************************************************************************}
  430.  
  431.  
  432. CONSTRUCTOR TGroupBox.Init(AParent:PWindowsObject;ATitle:STRING);
  433. BEGIN
  434.      Inherited.Init(AParent,ATitle);
  435.      Attr.WinClass:=WC_STATIC;
  436.      Attr.Flags:=SS_GROUPBOX;
  437. END;
  438.  
  439. {**************************************************************************
  440.  *                                                                        *
  441.  *  Object TRadioBox                                                      *
  442.  *                                                                        *
  443.  **************************************************************************}
  444.  
  445.  
  446. CONSTRUCTOR TRadioBox.Init(AParent:PWindowsObject;ATitle:STRING);
  447. BEGIN
  448.      Inherited.Init(AParent,ATitle);
  449.      Attr.WinClass:=WC_BUTTON;
  450.      Attr.Flags:=BS_AUTORADIOBUTTON;
  451. END;
  452.  
  453.  
  454. {**************************************************************************
  455.  *                                                                        *
  456.  *  Object TCheckBox                                                      *
  457.  *                                                                        *
  458.  **************************************************************************}
  459.  
  460.  
  461. CONSTRUCTOR TCheckBox.Init(AParent:PWindowsObject;ATitle:STRING);
  462. BEGIN
  463.      Inherited.Init(AParent,ATitle);
  464.      Attr.WinClass:=WC_BUTTON;
  465.      Attr.Flags:=BS_AUTOCHECKBOX;
  466. END;
  467.  
  468.  
  469. {**************************************************************************
  470.  *                                                                        *
  471.  *  Object TListBox                                                       *
  472.  *                                                                        *
  473.  **************************************************************************}
  474.  
  475.  
  476. CONSTRUCTOR TListBox.Init(AParent:PWindowsObject;ATitle:STRING);
  477. BEGIN
  478.      Inherited.Init(AParent,ATitle);
  479.      Attr.WinClass:=WC_LISTBOX;
  480.      Attr.Flags:=0;
  481. END;
  482.  
  483.  
  484. {**************************************************************************
  485.  *                                                                        *
  486.  *  Object TEntryField                                                    *
  487.  *                                                                        *
  488.  **************************************************************************}
  489.  
  490.  
  491. CONSTRUCTOR TEntryField.Init(AParent:PWindowsObject;ATitle:STRING);
  492. BEGIN
  493.      Inherited.Init(AParent,ATitle);
  494.      Attr.WinClass:=WC_ENTRYFIELD;
  495.      Attr.Flags:=ES_LEFT OR ES_MARGIN OR ES_AUTOSCROLL;
  496. END;
  497.  
  498.  
  499. {**************************************************************************
  500.  *                                                                        *
  501.  *  Object TText                                                          *
  502.  *                                                                        *
  503.  **************************************************************************}
  504.  
  505.  
  506. CONSTRUCTOR TText.Init(AParent:PWindowsObject;ATitle:STRING);
  507. BEGIN
  508.      Inherited.Init(AParent,ATitle);
  509.      Attr.WinClass:=WC_STATIC;
  510.      Attr.Flags:=SS_TEXT OR DT_LEFT OR DT_TOP;
  511. END;
  512.  
  513.  
  514. {**************************************************************************
  515.  *                                                                        *
  516.  *  Object THScrollBar                                                    *
  517.  *                                                                        *
  518.  **************************************************************************}
  519.  
  520.  
  521. CONSTRUCTOR THScrollBar.Init(AParent:PWindowsObject;ATitle:STRING);
  522. BEGIN
  523.      Inherited.Init(AParent,ATitle);
  524.      Attr.WinClass:=WC_SCROLLBAR;
  525.      Attr.Flags:=SBS_HORZ OR SBS_AUTOSIZE;
  526. END;
  527.  
  528.  
  529. {**************************************************************************
  530.  *                                                                        *
  531.  *  Object TVScrollBar                                                    *
  532.  *                                                                        *
  533.  **************************************************************************}
  534.  
  535.  
  536. CONSTRUCTOR TVScrollBar.Init(AParent:PWindowsObject;ATitle:STRING);
  537. BEGIN
  538.      Inherited.Init(AParent,ATitle);
  539.      Attr.WinClass:=WC_SCROLLBAR;
  540.      Attr.Flags:=SBS_VERT OR SBS_AUTOSIZE;
  541. END;
  542.  
  543.  
  544. {**************************************************************************
  545.  *                                                                        *
  546.  *  Object TMLE                                                           *
  547.  *                                                                        *
  548.  **************************************************************************}
  549.  
  550.  
  551. CONSTRUCTOR TMLE.Init(AParent:PWindowsObject;ATitle:STRING);
  552. BEGIN
  553.      Inherited.Init(AParent,ATitle);
  554.      Attr.WinClass:=WC_MLE;
  555.      Attr.Flags:=MLS_BORDER OR MLS_WORDWRAP OR MLS_VSCROLL OR MLS_HSCROLL;
  556. END;
  557.  
  558.  
  559.  
  560. {**************************************************************************
  561.  *                                                                        *
  562.  *  Object TNoteBook                                                      *
  563.  *                                                                        *
  564.  **************************************************************************}
  565.  
  566.  
  567. CONSTRUCTOR TNoteBook.Init(AParent:PWindowsObject;ATitle:STRING);
  568. BEGIN
  569.      Inherited.Init(AParent,ATitle);
  570.      Attr.WinClass:=WC_NOTEBOOK;
  571.      Attr.Flags:=BKS_BACKPAGESBR OR BKS_MAJORTABRIGHT OR
  572.                  BKS_SQUARETABS OR BKS_STATUSTEXTLEFT OR BKS_TABTEXTLEFT;
  573. END;
  574.  
  575.  
  576. {**************************************************************************
  577.  *                                                                        *
  578.  *  Object TIcon                                                          *
  579.  *                                                                        *
  580.  **************************************************************************}
  581.  
  582.  
  583. CONSTRUCTOR TIcon.Init(AParent:PWindowsObject;ATitle:STRING);
  584. BEGIN
  585.      Inherited.Init(AParent,ATitle);
  586.      Attr.WinClass:=WC_STATIC;
  587.      Attr.Flags:=SS_ICON OR SS_AUTOSIZE;
  588. END;
  589.  
  590.  
  591. {**************************************************************************
  592.  *                                                                        *
  593.  *  Object TBitmap                                                        *
  594.  *                                                                        *
  595.  **************************************************************************}
  596.  
  597.  
  598. CONSTRUCTOR TBitmap.Init(AParent:PWindowsObject;ATitle:STRING);
  599. BEGIN
  600.      Inherited.Init(AParent,ATitle);
  601.      Attr.WinClass:=WC_STATIC;
  602.      Attr.Flags:=SS_BITMAP OR SS_AUTOSIZE;
  603. END;
  604.  
  605.  
  606. {**************************************************************************
  607.  *                                                                        *
  608.  *  Object TValueSet                                                      *
  609.  *                                                                        *
  610.  **************************************************************************}
  611.  
  612.  
  613. CONSTRUCTOR TValueSet.Init(AParent:PWindowsObject;ATitle:STRING;
  614.                            TheRows,TheColumns:WORD);
  615. BEGIN
  616.      Inherited.Init(AParent,ATitle);
  617.      Attr.WinClass:=WC_VALUESET;
  618.      Attr.Flags:=VS_TEXT OR VS_BORDER OR VS_ITEMBORDER;
  619.      rows:=TheRows;
  620.      columns:=TheColumns;
  621. END;
  622.  
  623.  
  624. FUNCTION TValueSet.Create:BOOLEAN;
  625. VAR r:RECORD
  626.             len:LONGWORD;
  627.             rows,columns:WORD;
  628.       END;
  629. BEGIN
  630.      r.len:=8;
  631.      r.rows:=rows;
  632.      r.columns:=columns;
  633.      Attr.TheCtlData:=@r;
  634.      Create:=Inherited.Create;
  635. END;
  636.  
  637.  
  638. {**************************************************************************
  639.  *                                                                        *
  640.  *  Object TSpinButton                                                    *
  641.  *                                                                        *
  642.  **************************************************************************}
  643.  
  644.  
  645. CONSTRUCTOR TSpinButton.Init(AParent:PWindowsObject;ATitle:STRING);
  646. BEGIN
  647.      Inherited.Init(AParent,ATitle);
  648.      Attr.WinClass:=WC_SPINBUTTON;
  649.      Attr.Flags:=SPBS_ALLCHARACTERS OR SPBS_JUSTDEFAULT OR SPBS_SERVANT;
  650. END;
  651.  
  652.  
  653. {**************************************************************************
  654.  *                                                                        *
  655.  *  Object TSlider                                                        *
  656.  *                                                                        *
  657.  **************************************************************************}
  658.  
  659.  
  660. CONSTRUCTOR TSlider.Init(AParent:PWindowsObject;ATitle:STRING;
  661.                          TheScale1,TheScale2:LONGINT);
  662. BEGIN
  663.      Inherited.Init(AParent,ATitle);
  664.      Attr.WinClass:=WC_SLIDER;
  665.      Attr.Flags:=SLS_HORIZONTAL OR SLS_SNAPTOINCREMENT OR SLS_CENTER
  666.                  OR SLS_HOMELEFT OR SLS_PRIMARYSCALE1;
  667.      Scale1:=TheScale1;
  668.      Scale2:=TheScale2;
  669. END;
  670.  
  671. FUNCTION TSlider.Create:BOOLEAN;
  672. VAR r:RECORD
  673.             len:LONGWORD;
  674.             Scale1,Scale2:LONGINT;
  675.       END;
  676. BEGIN
  677.      r.len:=12;
  678.      r.Scale1:=Scale1;
  679.      r.Scale2:=Scale2;
  680.      Attr.TheCtlData:=@r;
  681.      Create:=Inherited.Create;
  682. END;
  683.  
  684.  
  685. {**************************************************************************
  686.  *                                                                        *
  687.  *  Object TRectangle                                                     *
  688.  *                                                                        *
  689.  **************************************************************************}
  690.  
  691.  
  692. CONSTRUCTOR TRectangle.Init(AParent:PWindowsObject;ATitle:STRING);
  693. BEGIN
  694.      Inherited.Init(AParent,ATitle);
  695.      Attr.WinClass:=WC_STATIC;
  696.      Attr.Flags:=SS_FGNDRECT;
  697. END;
  698.  
  699.  
  700. {**************************************************************************
  701.  *                                                                        *
  702.  *  Object TFrame                                                         *
  703.  *                                                                        *
  704.  **************************************************************************}
  705.  
  706.  
  707. CONSTRUCTOR TFrame.Init(AParent:PWindowsObject;ATitle:STRING);
  708. BEGIN
  709.      Inherited.Init(AParent,ATitle);
  710.      Attr.WinClass:=WC_STATIC;
  711.      Attr.Flags:=SS_FGNDFRAME;
  712. END;
  713.  
  714.  
  715. {**************************************************************************
  716.  *                                                                        *
  717.  *  Object TContainer                                                     *
  718.  *                                                                        *
  719.  **************************************************************************}
  720.  
  721.  
  722. CONSTRUCTOR TContainer.Init(AParent:PWindowsObject;ATitle:STRING);
  723. BEGIN
  724.      Inherited.Init(AParent,ATitle);
  725.      Attr.WinClass:=WC_CONTAINER;
  726.      Attr.Flags:=CCS_SINGLESEL;
  727. END;
  728.  
  729.  
  730. {**************************************************************************
  731.  *                                                                        *
  732.  *  Object TUserDef                                                       *
  733.  *                                                                        *
  734.  **************************************************************************}
  735.  
  736.  
  737. CONSTRUCTOR TUserDef.Init(AParent:PWindowsObject;ATitle:STRING);
  738. BEGIN
  739.      Inherited.Init(AParent,ATitle);
  740.      Attr.WinClass:=WC_STATIC;
  741.      Attr.Flags:=0;
  742. END;
  743.  
  744.  
  745. {**************************************************************************
  746.  *                                                                        *
  747.  *  Object TComboBox                                                      *
  748.  *                                                                        *
  749.  **************************************************************************}
  750.  
  751.  
  752. CONSTRUCTOR TComboBox.Init(AParent:PWindowsObject;ATitle:STRING);
  753. BEGIN
  754.      Inherited.Init(AParent,ATitle);
  755.      Attr.WinClass:=WC_COMBOBOX;
  756.      Attr.Flags:=CBS_SIMPLE;
  757.      aEntryField:=NIL;
  758.      aListBox:=NIL;
  759. END;
  760.  
  761. FUNCTION TComboBox.Create:BOOLEAN;
  762. VAR
  763.    result:BOOLEAN;
  764.    List,Entry:HWND;
  765. BEGIN
  766.      result:=Inherited.Create;
  767.      IF result THEN
  768.      BEGIN
  769.           List:=WinWindowFromID(HWindow,CBID_LIST);
  770.           IF List<>0 THEN
  771.           BEGIN
  772.                aListBox:=New(PListBox,Init(NIL,''));
  773.                aListBox^.QuietMode:=Quietmode;
  774.                aListBox^.HWindowFrame:=List;
  775.                aListBox^.HWindow:=List;
  776.                aListBox^.Parent:=ObjectPtr;
  777.                WinSetWindowULong(aListBox^.HWindow,QWL_USER,
  778.                                  LONGWORD(aListBox));
  779.                aListBox^.OldWndProc:=WinSubClassWindow(aListBox^.HWindow,
  780.                                                        MessageHandlerAddr);
  781.           END;
  782.  
  783.           Entry:=WinWindowFromID(HWindow,CBID_EDIT);
  784.           IF Entry<>0 THEN
  785.           BEGIN
  786.                aEntryField:=New(PEntryField,Init(NIL,''));
  787.                aEntryField^.QuietMode:=QuietMode;
  788.                aEntryField^.HWindowFrame:=Entry;
  789.                aEntryField^.HWindow:=Entry;
  790.                aEntryField^.Parent:=ObjectPtr;
  791.                WinSetWindowULong(aEntryField^.HWindow,QWL_USER,
  792.                                  LONGWORD(aEntryField));
  793.                aEntryField^.OldWndProc:=WinSubClassWindow(aEntryField^.HWindow,
  794.                                                           MessageHandlerAddr);
  795.           END;
  796.      END;
  797.      Create:=result;
  798. END;
  799.  
  800. DESTRUCTOR TComboBox.Done;
  801. BEGIN
  802.      aListBox^.Done;
  803.      aEntryField^.Done;
  804.      Inherited.Done;
  805. END;
  806.  
  807. {$D+}
  808.  
  809. BEGIN
  810. END.
  811.