home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sibdemo3.zip / SOURCE.DAT / SOURCE / ADDON / GLYPHBTN.PAS < prev    next >
Pascal/Delphi Source File  |  1998-05-02  |  10KB  |  290 lines

  1. UNIT GlyphBtn;
  2.  
  3. INTERFACE
  4.  
  5. {$R GlyphBtn}
  6.  
  7. USES Classes,Forms,Graphics,Buttons;
  8.  
  9. TYPE TGlyphButton=CLASS(TSpeedButton)
  10.         PRIVATE
  11.               FGlyphOn:TBitmap;
  12.               FCaptionOn:^STRING;
  13.               FAllowDrawDown:BOOLEAN;
  14.               FAllowDrawFrame:BOOLEAN;
  15.         PRIVATE
  16.               FUNCTION GetGlyphOff:TBitmap;
  17.               PROCEDURE SetGlyphOff(NewValue:TBitmap);
  18.               FUNCTION GetCaptionOff:STRING;
  19.               PROCEDURE SetCaptionOff(CONST NewValue:STRING);
  20.               FUNCTION GetCaptionOn:STRING;
  21.               PROCEDURE SetCaptionOn(CONST NewValue:STRING);
  22.               PROCEDURE SetAllowDrawDown(NewValue:BOOLEAN);
  23.               FUNCTION GetGlyphOn:TBitmap;
  24.               PROCEDURE SetGlyphOn(NewBitmap:TBitmap);
  25.               PROCEDURE SetAllowDrawFrame(NewValue:BOOLEAN);
  26.         PRIVATE
  27.               PROPERTY Glyph;
  28.               PROPERTY Kind;
  29.               PROPERTY Caption;
  30.         PROTECTED
  31.               PROCEDURE DrawFrame(Down:BOOLEAN);OVERRIDE;
  32.               PROCEDURE DrawText(CONST Caption:STRING;Down:BOOLEAN);OVERRIDE;
  33.               PROCEDURE DrawBitmap(Bitmap:TBitmap;Down:BOOLEAN);OVERRIDE;
  34.               PROCEDURE ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);OVERRIDE;
  35.               FUNCTION WriteSCUResource(Stream:TResourceStream):BOOLEAN;OVERRIDE;
  36.         PUBLIC
  37.               PROCEDURE SetupComponent;OVERRIDE;
  38.         PUBLISHED
  39.               PROPERTY Align;
  40.               PROPERTY Color;
  41.               PROPERTY DragCursor;
  42.               PROPERTY DragMode;
  43.               PROPERTY Enabled;
  44.               PROPERTY Font;
  45.               PROPERTY ParentColor;
  46.               PROPERTY ParentPenColor;
  47.               PROPERTY ParentFont;
  48.               PROPERTY ParentShowHint;
  49.               PROPERTY PenColor;
  50.               PROPERTY PopupMenu;
  51.               PROPERTY ShowHint;
  52.               PROPERTY TabOrder;
  53.               PROPERTY TabStop;
  54.               PROPERTY Visible;
  55.               PROPERTY ZOrder;
  56.  
  57.               PROPERTY OnCanDrag;
  58.               PROPERTY OnClick:TNotifyEvent Read FOnClick Write FOnClick;
  59.               PROPERTY OnCommand;
  60.               PROPERTY OnDblClick;
  61.               PROPERTY OnDragDrop;
  62.               PROPERTY OnDragOver;
  63.               PROPERTY OnEndDrag;
  64.               PROPERTY OnEnter;
  65.               PROPERTY OnExit;
  66.               PROPERTY OnFontChange;
  67.               PROPERTY OnMouseClick;
  68.               PROPERTY OnMouseDblClick;
  69.               PROPERTY OnMouseDown;
  70.               PROPERTY OnMouseMove;
  71.               PROPERTY OnMouseUp;
  72.               PROPERTY OnResize;
  73.               PROPERTY OnSetupShow;
  74.               PROPERTY OnStartDrag;
  75.               PROPERTY GlyphOff:TBitmap read GetGlyphOff write SetGlyphOff;
  76.               PROPERTY GlyphOn:TBitmap read GetGlyphOn write SetGlyphOn;
  77.               PROPERTY CaptionOff:STRING read GetCaptionOff write SetCaptionOff;
  78.               PROPERTY CaptionOn:STRING read GetCaptionOn write SetCaptionOn;
  79.               PROPERTY AllowDrawDown:BOOLEAN read FAllowDrawDown write SetAllowDrawDown;
  80.               PROPERTY AllowDrawFrame:BOOLEAN read FAllowDrawFrame write SetAllowDrawFrame;
  81.      END;
  82.  
  83.      TOnOffSwitch=CLASS(TGlyphButton)
  84.          PRIVATE
  85.               PROPERTY GlyphOn;
  86.               PROPERTY GlyphOff;
  87.               PROPERTY AllowDrawDown;
  88.          PROTECTED
  89.               PROCEDURE ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);OVERRIDE;
  90.               FUNCTION WriteSCUResource(Stream:TResourceStream):BOOLEAN;OVERRIDE;
  91.          PUBLIC
  92.               PROCEDURE SetupComponent;OVERRIDE;
  93.      END;
  94.  
  95. IMPLEMENTATION
  96.  
  97. {
  98. ╔═══════════════════════════════════════════════════════════════════════════╗
  99. ║                                                                           ║
  100. ║ Speed-Pascal/2 Version 2.0                                                ║
  101. ║                                                                           ║
  102. ║ Speed-Pascal Component Classes (SPCC)                                     ║
  103. ║                                                                           ║
  104. ║ This section: TGlyphButton Class implementation                           ║
  105. ║                                                                           ║
  106. ║ Last modified: October 1996                                               ║
  107. ║                                                                           ║
  108. ║ (C) 1995 SpeedSoft. All rights reserved. Disclosure probibited !          ║
  109. ║                                                                           ║
  110. ╚═══════════════════════════════════════════════════════════════════════════╝
  111. }
  112.  
  113. PROCEDURE TGlyphButton.SetupComponent;
  114. BEGIN
  115.      Inherited SetupComponent;
  116.      Name:='GlyphButton';
  117.      Kind:=bkCustom;
  118.      GroupIndex:=1;
  119.      AllowAllUp:=TRUE;
  120.      AllowDrawDown:=TRUE;
  121.      FAllowDrawFrame:=TRUE;
  122. END;
  123.  
  124. PROCEDURE TGlyphButton.DrawFrame(Down:BOOLEAN);
  125. BEGIN
  126.      IF not FAllowDrawFrame THEN exit;
  127.      IF not FAllowDrawDown THEN Down:=FALSE;
  128.      Inherited DrawFrame(Down);
  129. END;
  130.  
  131. PROCEDURE TGlyphButton.DrawText(CONST Caption:STRING;Down:BOOLEAN);
  132. VAR s:STRING;
  133. BEGIN
  134.      IF Down THEN s:=CaptionOn
  135.      ELSE s:=CaptionOff;
  136.      IF not FAllowDrawDown THEN Down:=FALSE;
  137.      Inherited DrawText(s,Down);
  138. END;
  139.  
  140. PROCEDURE TGlyphButton.DrawBitmap(Bitmap:TBitmap;Down:BOOLEAN);
  141. VAR FBitmap:TBitmap;
  142. BEGIN
  143.      IF Down THEN FBitmap:=GlyphOn
  144.      ELSE FBitmap:=GlyphOff;
  145.      IF not FAllowDrawDown THEN Down:=FALSE;
  146.      Inherited DrawBitmap(FBitmap,Down);
  147. END;
  148.  
  149. FUNCTION TGlyphButton.GetGlyphOff:TBitmap;
  150. BEGIN
  151.      result:=Glyph;
  152. END;
  153.  
  154. PROCEDURE TGlyphButton.SetGlyphOff(NewValue:TBitmap);
  155. BEGIN
  156.      Glyph:=NewValue;
  157. END;
  158.  
  159. FUNCTION TGlyphButton.GetCaptionOff:STRING;
  160. BEGIN
  161.      result:=Caption;
  162. END;
  163.  
  164. PROCEDURE TGlyphButton.SetCaptionOff(CONST NewValue:STRING);
  165. BEGIN
  166.      Caption:=NewValue;
  167. END;
  168.  
  169. FUNCTION TGlyphButton.GetCaptionOn:STRING;
  170. BEGIN
  171.      IF FCaptionOn=NIL THEN result:=''
  172.      ELSE result:=FCaptionOn^;
  173. END;
  174.  
  175. PROCEDURE TGlyphButton.SetCaptionOn(CONST NewValue:STRING);
  176. BEGIN
  177.      IF FCaptionOn<>NIL THEN FreeMem(FCaptionOn,length(FCaptionOn^)+1);
  178.      GetMem(FCaptionOn,length(NewValue)+1);
  179.      FCaptionOn^:=NewValue;
  180.      Refresh;
  181. END;
  182.  
  183. PROCEDURE TGlyphButton.SetAllowDrawDown(NewValue:BOOLEAN);
  184. BEGIN
  185.      FAllowDrawDown:=NewValue;
  186.      Refresh;
  187. END;
  188.  
  189. FUNCTION TGlyphButton.GetGlyphOn:TBitmap;
  190. BEGIN
  191.      IF FGlyphOn = NIL THEN FGlyphOn.Create;
  192.      Result := FGlyphOn;
  193. END;
  194.  
  195. PROCEDURE TGlyphButton.SetGlyphOn(NewBitmap:TBitmap);
  196. VAR  OldBitmap:TBitmap;
  197. BEGIN
  198.      OldBitmap := FGlyphOn;
  199.  
  200.      {create internal copy}
  201.      IF NewBitmap <> NIL THEN FGlyphOn := NewBitmap.Copy
  202.      ELSE FGlyphOn := NIL;
  203.  
  204.      IF FGlyphOn <> NIL THEN Include(FGlyphOn.ComponentState, csDetail);
  205.  
  206.      IF OldBitmap <> NIL THEN IF OldBitmap<>NewBitmap THEN OldBitmap.Destroy;
  207.  
  208.      Arrange;
  209.      Refresh;
  210. END;
  211.  
  212. PROCEDURE TGlyphButton.SetAllowDrawFrame(NewValue:BOOLEAN);
  213. BEGIN
  214.      FAllowDrawFrame:=NewValue;
  215.      Refresh;
  216. END;
  217.  
  218. PROCEDURE TGlyphButton.ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);
  219. BEGIN
  220.      IF ResName <> 'rnGlyphOn' THEN
  221.      BEGIN
  222.           Inherited ReadSCUResource(ResName,Data,DataLen);
  223.           exit;
  224.      END
  225.      ELSE
  226.      BEGIN
  227.          IF FGlyphOn = NIL THEN FGlyphOn.Create;
  228.          FGlyphOn.ReadSCUResource(rnBitmap,Data,DataLen);
  229.      END;
  230. END;
  231.  
  232.  
  233. FUNCTION TGlyphButton.WriteSCUResource(Stream:TResourceStream):BOOLEAN;
  234. BEGIN
  235.      Result := Inherited WriteSCUResource(Stream);
  236.      IF not Result THEN exit;
  237.  
  238.      IF (FGlyphOn <> NIL) AND (ComponentState * [csDetail] = [])
  239.      THEN Result := FGlyphOn.WriteSCUResourceName(Stream,'rnGlyphOn')
  240.      ELSE Result := TRUE;
  241. END;
  242.  
  243.  
  244. {
  245. ╔═══════════════════════════════════════════════════════════════════════════╗
  246. ║                                                                           ║
  247. ║ Speed-Pascal/2 Version 2.0                                                ║
  248. ║                                                                           ║
  249. ║ Speed-Pascal Component Classes (SPCC)                                     ║
  250. ║                                                                           ║
  251. ║ This section: TOnOffSwitch Class implementation                           ║
  252. ║                                                                           ║
  253. ║ Last modified: October 1996                                               ║
  254. ║                                                                           ║
  255. ║ (C) 1995 SpeedSoft. All rights reserved. Disclosure probibited !          ║
  256. ║                                                                           ║
  257. ╚═══════════════════════════════════════════════════════════════════════════╝
  258. }
  259.  
  260. PROCEDURE TOnOffSwitch.SetupComponent;
  261. VAR FBitmap:TBitmap;
  262. BEGIN
  263.      Inherited SetupComponent;
  264.      Name:='OnOffSwitch';
  265.      AllowDrawDown:=FALSE;
  266.      FBitmap.Create;
  267.      FBitmap.LoadFromResourceName('TOnOffSwitch_On');
  268.      GlyphOn:=FBitmap;
  269.      FBitmap.LoadFromResourceName('TOnOffSwitch_Off');
  270.      GlyphOff:=FBitmap;
  271.      FBitmap.Destroy;
  272.      Width:=30;
  273.      Height:=42;
  274. END;
  275.  
  276. PROCEDURE TOnOffSwitch.ReadSCUResource(CONST ResName:TResourceName;VAR Data;DataLen:LONGINT);
  277. BEGIN
  278.      IF ResName<>rnBitmap THEN Inherited ReadSCUResource(ResName,Data,DataLen);
  279. END;
  280.  
  281. FUNCTION TOnOffSwitch.WriteSCUResource(Stream:TResourceStream):BOOLEAN;
  282. BEGIN
  283.      //don't write our Bitmaps here !
  284.      result:=TButton.WriteSCUResource(Stream);
  285. END;
  286.  
  287. BEGIN
  288.      RegisterClasses([TGlyphButton,TOnOffSwitch]);
  289. END.
  290.