[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]

    {
    Hello again!

    I send to You a toolbar button component, which looks like the Explorer
    3.0's toolbar button. Resource file and a number of button images are included.
    These need to extracted using XX3402.  See below for more information.

    This component made under Delphi 2.0, and NOT tested with Delphi 1.0 (but I
    think it works under 1.0).

    Kind regards
            Matthew Csulik
            matthew-c@usa.net

    ---------------------------------------------------------
    -                                                       -
    -  ToolButton.pas                                       -
    -  **************                                       -
    -  This component and it's bitmaps are completely FREE. -
    -                                                       -
    ---------------------------------------------------------

    {usage:                                                                        }
    { just assign three bitmap (included) to the Color, Disabled, and Mono bitmaps;}
    { set the right color for transparentcolor;                                    }
    { and USE IT!                                                                  }

    unit Toolbutton;

    interface

    { written by Matthew }
    { matthew-c@usa.net  }

    uses
       Windows, Messages, SysUtils, Classes, Graphics, Controls;

    type
       TToolButtonState = (tbsUp, tbsDown);
       TToolButtonStyle = (tstTextBitmap, tstBitmap);
       TMouseState = (msIn, msOut);

       TToolButton = class(TGraphicControl)
       private
          State: TToolButtonState;
          MouseState: TMouseState;
          FStyle: TToolButtonStyle;
          FColorBitmap, FMonoBitmap, FDisabledBitmap: TBitmap;
          FTransparentColor: TColor;
          procedure SetColorBitmap(Value: TBitmap);
          procedure SetMonoBitmap(Value: TBitmap);
          procedure SetDisabledBitmap(Value: TBitmap);
          procedure SetStyle(Value: TToolButtonStyle);
          procedure SetTransparentColor(Value: TColor);
          procedure CMMouseEnter(var Message: TMessage);
             message CM_MOUSEENTER;
          procedure CMMouseLeave(var Message: TMessage);
             message CM_MOUSELEAVE;
          procedure CMEnabledChanged(var Message: TMessage);
             message CM_ENABLEDCHANGED;
          procedure CMSysColorChange(var Message: TMessage);
          	 message CM_SYSCOLORCHANGE;
          procedure CMTextChanged(var Message: TMessage);
          	 message CM_TEXTCHANGED;
       protected
          procedure Paint; override;
       public
          constructor Create(AOwner: TComponent); override;
          destructor Destroy; override;
          procedure Click; override;
          procedure DblClick; override;
          procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
             X, Y: integer); override;
          procedure MouseMove(Shift: TShiftState; X, Y: Integer);
             override;
          procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
             X, Y: integer); override;
       published
          property Caption;
          property ColorBitmap: TBitmap read FColorBitmap write SetColorBitmap;
          property DisabledBitmap: TBitmap read FDisabledBitmap write
    SetDisabledBitmap;
          property MonoBitmap: TBitmap read FMonoBitmap write SetMonoBitmap;
          property TransparentColor: TColor read FTransparentColor write
    SetTransparentColor default clOlive;
          property Style: TToolButtonStyle read FStyle write SetStyle;
          property Enabled;
          property ParentShowHint;
          property ShowHint;
          property Visible;
          property OnClick;
          property OnMouseDown;
          property OnMouseMove;
          property OnMouseUp;
       end;

    procedure Register;

    implementation

    constructor TToolButton.Create(AOwner: TComponent);
    begin
       inherited Create(AOwner);
       FTransparentColor:= clOlive;
       FColorBitmap:= TBitmap.Create;
       FMonoBitmap:= TBitmap.Create;
       FDisabledBitmap:= TBitmap.Create;
       Caption:= Name;
       State:= tbsUp;
       Style:= tstTextBitmap;
       MouseState:= msOut;
    end;

    destructor TToolButton.Destroy;
    begin
       FColorBitmap.Free;
       FMonoBitmap.Free;
       FDisabledBitmap.Free;
       inherited Destroy;
    end;

    procedure TToolButton.Paint;
    var
       CX,CY: integer;
    begin
       CX:= Width div 2;
       CY:= Height div 2;
       if csDesigning in ComponentState then
       begin
          with inherited Canvas do
          begin
             Pen.Style := psDash;
             Brush.Style := bsClear;
             Rectangle(0, 0, Width, Height);
             Brush.Color:= clBtnFace;
    	 FillRect(Rect(0,0,Width,Height));
             if Style = tstTextBitmap then
             begin
                BrushCopy(Rect(CX-(MonoBitmap.Width div 2),CY-(MonoBitmap.Height
    div 2)-10,
    	       CX+(MonoBitmap.Width div 2),CY+(MonoBitmap.Height div 2)-10),
    	          MonoBitmap, Rect(0,0,MonoBitmap.Width,MonoBitmap.Height),
    TransparentColor);
    	    Font.Color:= clBlack;
    	    Font.Name:= 'MS Sans Serif';
    	    Font.Size:= 8;
    	    Font.Style:= [];
    	    TextOut(CX-(TextWidth(Caption) div 2),CY+5,Caption);
             end
             else
             begin
                BrushCopy(Rect(CX-(MonoBitmap.Width div 2),CY-(MonoBitmap.Height
    div 2),
    	       CX+(MonoBitmap.Width div 2),CY+(MonoBitmap.Height div 2)),
    	       MonoBitmap, Rect(0,0,MonoBitmap.Width,MonoBitmap.Height),
    TransparentColor);
             end;
          end;
       end
       else
       begin
          with inherited Canvas do
          begin
             Brush.Style := bsClear;
             Brush.Color:= clBtnFace;
    	 FillRect(Rect(0,0,Width,Height));
          end;
          if Enabled then
          begin
             if (State = tbsUp) and (MouseState = msOut) then
             begin
                with Canvas do
                begin
                   Brush.Style:= bsClear;
                   Brush.Color:= clBtnFace;
    	       if Style = tstTextBitmap then
                   begin
                      BrushCopy(Rect(CX-(MonoBitmap.Width div
    2),CY-(MonoBitmap.Height div 2)-10,
                         CX+(MonoBitmap.Width div 2),CY+(MonoBitmap.Height div
    2)-10),
                            MonoBitmap,
    Rect(0,0,MonoBitmap.Width,MonoBitmap.Height), TransparentColor);
                      Font.Color:= clBlack;
                      Font.Name:= 'MS Sans Serif';
                      Font.Size:= 8;
                      Font.Style:= [];
                      TextOut(CX-(TextWidth(Caption) div 2),CY+5,Caption);
     	       end
                   else
                   begin
                      BrushCopy(Rect(CX-(MonoBitmap.Width div
    2),CY-(MonoBitmap.Height div 2),
                         CX+(MonoBitmap.Width div 2),CY+(MonoBitmap.Height div 2)),
                            MonoBitmap,
    Rect(0,0,MonoBitmap.Width,MonoBitmap.Height), TransparentColor);
                   end;
                end;
             end
             else if (State = tbsUp) and (MouseState = msIn) then
             begin
                with Canvas do
                begin
    	       FillRect(Rect(0,0,Width,Height));
    	       Pen.Color:= clbtnHighlight;
                   Polyline([Point(Width-1,0),Point(0,0),Point(0,Height-1)]);
                   Pen.Color:= clbtnShadow;
                   Polyline([Point(Width-1,1),Point(Width-1,Height-1),Point(1,He
    ight-1)]);
                   Brush.Style:= bsClear;
                   Brush.Color:= clBtnFace;
    	       if Style = tstTextBitmap then
                   begin
                      BrushCopy(Rect(CX-(ColorBitmap.Width div
    2),CY-(ColorBitmap.Height div 2)-10,
                         CX+(ColorBitmap.Width div 2),CY+(ColorBitmap.Height div
    2)-10),
                            ColorBitmap,
    Rect(0,0,ColorBitmap.Width,ColorBitmap.Height), TransparentColor);
                      Font.Color:= clBlack;
                      Font.Name:= 'MS Sans Serif';
                      Font.Size:= 8;
                      Font.Style:= [];
                      TextOut(CX-(TextWidth(Caption) div 2),CY+5,Caption);
    	       end
                   else
                   begin
                      BrushCopy(Rect(CX-(ColorBitmap.Width div
    2),CY-(ColorBitmap.Height div 2),
                         CX+(ColorBitmap.Width div 2),CY+(ColorBitmap.Height div
    2)),
                            ColorBitmap,
    Rect(0,0,ColorBitmap.Width,ColorBitmap.Height), TransparentColor);
                   end;
                end;
             end
             else if (State = tbsDown) and (MouseState = msIn) then
             begin
                with Canvas do
                begin
                   Brush.Style:= bsClear;
                   Brush.Color:= clBtnFace;
    	       FillRect(Rect(0,0,Width,Height));
    	       Pen.Color:= clbtnShadow;
                   Polyline([Point(Width-1,0),Point(0,0),Point(0,Height-1)]);
                   Pen.Color:= clbtnHighlight;
                   Polyline([Point(Width-1,1),Point(Width-1,Height-1),Point(1,He
    ight-1)]);
    	       if Style = tstTextBitmap then
                   begin
                      BrushCopy(Rect(CX-(ColorBitmap.Width div
    2)+1,CY-(ColorBitmap.Height div 2)-9,
                         CX+(ColorBitmap.Width div 2)+1,CY+(ColorBitmap.Height
    div 2)-9),
                            ColorBitmap,
    Rect(0,0,ColorBitmap.Width,ColorBitmap.Height), TransparentColor);
                      Font.Color:= clBlack;
                      Font.Name:= 'MS Sans Serif';
                      Font.Size:= 8;
                      Font.Style:= [];
                      TextOut(CX-(TextWidth(Caption) div 2)+1,CY+6,Caption);
    	       end
                   else
                   begin
                      BrushCopy(Rect(CX-(ColorBitmap.Width div
    2)+1,CY-(ColorBitmap.Height div 2)+1,
                         CX+(ColorBitmap.Width div 2)+1,CY+(ColorBitmap.Height
    div 2)+1),
                            ColorBitmap,
    Rect(0,0,ColorBitmap.Width,ColorBitmap.Height), TransparentColor);
                   end;
                end;
             end;
          end
          else
          begin		               {Disabled}
             with Canvas do
             begin
    	    Brush.Style:= bsClear;
                Brush.Color:= clBtnFace;
    	    FillRect(Rect(0,0,Width,Height));
    	    if Style = tstTextBitmap then
                begin
                   BrushCopy(Rect(CX-(FDisabledBitmap.Width div
    2),CY-(FDisabledBitmap.Height div 2)-10,
                      CX+(FDisabledBitmap.Width div
    2),CY+(FDisabledBitmap.Height div 2)-10),
                         FDisabledBitmap,
    Rect(0,0,FDisabledBitmap.Width,FDisabledBitmap.Height), TransparentColor);
                   Font.Name:= 'MS Sans Serif';
                   Font.Size:= 8;
                   Font.Style:= [];
                   Font.Color:= clbtnHighlight;
                   TextOut(CX-(TextWidth(Caption) div 2)+1,CY+6,Caption);
                   Font.Color:= clbtnShadow;
                   TextOut(CX-(TextWidth(Caption) div 2),CY+5,Caption);
    	    end
                else
                begin
                   BrushCopy(Rect(CX-(FDisabledBitmap.Width div
    2),CY-(FDisabledBitmap.Height div 2),
                      CX+(FDisabledBitmap.Width div
    2),CY+(FDisabledBitmap.Height div 2)),
                         FDisabledBitmap,
    Rect(0,0,FDisabledBitmap.Width,FDisabledBitmap.Height), TransparentColor);
                end;
             end;
          end;
       end;
    end;

    procedure TToolButton.Click;
    begin
       inherited Click;
    end;

    procedure TToolButton.DblClick;
    begin
       inherited Click;
    end;

    procedure TToolButton.MouseDown(Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer);
    begin
       inherited MouseDown(Button, Shift, X, Y);
       if (Button = mbLeft) and Enabled then
       begin
          if State <> tbsDown then
          begin
             State:= tbsDown;
             Invalidate;
          end;
       end;
    end;

    procedure TToolButton.MouseMove(Shift: TShiftState; X, Y: Integer);
    begin
       inherited MouseMove(Shift, X, Y);
    end;

    procedure TToolButton.MouseUp(Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer);
    begin
       inherited MouseUp(Button, Shift, X, Y);
       State:= tbsUp;
       Invalidate;
    end;

    procedure TToolButton.CMMouseEnter(var Message: TMessage);
    begin
       MouseState:= msIn;
       if Enabled then
          Invalidate;
    end;

    procedure TToolButton.CMMouseLeave(var Message: TMessage);
    begin
       if State = tbsDown then
       begin
          State:= tbsUp;
          Invalidate;
       end;
       MouseState:= msOut;
       if Enabled then
          Invalidate;
    end;

    procedure TToolButton.CMEnabledChanged(var Message: TMessage);
    begin
       Invalidate;
    end;

    procedure TToolButton.CMSysColorChange(var Message: TMessage);
    begin
       Invalidate;
    end;

    procedure TToolButton.CMTextChanged(var Message: TMessage);
    begin
      Invalidate;
    end;

    procedure TToolButton.SetColorBitmap(Value: TBitmap);
    begin
       if FColorBitmap <> Value then
       begin
          FColorBitmap.Assign(Value);
          Invalidate;
       end;
    end;

    procedure TToolButton.SetMonoBitmap(Value: TBitmap);
    var
       x,y: integer;
    begin
       if FMonoBitmap <> Value then
       begin
          FMonoBitmap.Assign(Value);
          FDisabledBitmap.Height:= FMonoBitmap.Height;
          FDisabledBitmap.Width:= FMonoBitmap.Width;
          for x:= 0 to FDisabledBitmap.Width do
          begin
             for y:= 0 to FDisabledBitmap.Height do
             begin
                if FMonoBitmap.Canvas.Pixels[x,y] = clWhite then
                   FDisabledBitmap.Canvas.Pixels[x,y]:= clbtnHighlight;
                if FMonoBitmap.Canvas.Pixels[x,y] = clGray then
                   FDisabledBitmap.Canvas.Pixels[x,y]:= clbtnShadow;
             end;
          end;
          Invalidate;
       end;
    end;

    procedure TToolButton.SetDisabledBitmap(Value: TBitmap);
    const
      ROP_DSPDxax = $00E20746;
    var
       MonoBmp, TmpImage: TBitmap;
       IRect: TRect;
       IWidth,IHeight: integer;
    begin
       if FDisabledBitmap <> Value then
       begin
          FDisabledBitmap.Assign(Value);
          IWidth:= FDisabledBitmap.Width;
          IHeight:= FDisabledBitmap.Height;
          IRect:= Rect(0,0,IWidth,IHeight);
          TmpImage:= TBitmap.Create;
          MonoBmp:= TBitmap.Create;
          TmpImage.Width:= FDisabledBitmap.Width;
          TmpImage.Height:= FDisabledBitmap.Height;
          MonoBmp.Width:= FDisabledBitmap.Width;
          MonoBmp.Height:= FDisabledBitmap.Height;
          with MonoBmp do
          begin
             Assign(FDisabledBitmap);
             Canvas.Brush.Color := clBlack;
             if Monochrome then
             begin
                Canvas.Font.Color := clWhite;
                Monochrome := False;
                Canvas.Brush.Color := clWhite;
             end;
             Monochrome := True;
          end;
          with TmpImage.Canvas do
          begin
             Brush.Color := clBtnFace;
             FillRect(IRect);
             Brush.Color := clBtnHighlight;
             SetTextColor(Handle, clBlack);
             SetBkColor(Handle, clWhite);
             BitBlt(Handle, 1, 1, IWidth, IHeight,
             MonoBmp.Canvas.Handle, 0, 0, ROP_DSPDxax);
             Brush.Color := clBtnShadow;
             SetTextColor(Handle, clBlack);
             SetBkColor(Handle, clWhite);
             BitBlt(Handle, 0, 0, IWidth, IHeight,
             MonoBmp.Canvas.Handle, 0, 0, ROP_DSPDxax);
          end;
          FDisabledBitmap.Assign(TmpImage);
          TmpImage.Free;
          MonoBmp.Free;
          Invalidate;
       end;
    end;

    procedure TToolButton.SetStyle(Value: TToolButtonStyle);
    begin
       if FStyle <> Value then
       begin
          FStyle:= Value;
          Invalidate;
       end;
    end;

    procedure TToolButton.SetTransparentColor(Value: TColor);
    begin
       if FTransParentColor <> Value then
       begin
          FTransparentColor:= Value;
          Invalidate;
       end;
    end;

    procedure Register;
    begin
       RegisterComponents('Matthew', [TToolButton]);
    end;

    end.

    { the following contains addition files that should be included with this
      file.  To extract, you need XX3402 available with the SWAG distribution.

      1.     Cut the text below out, and save to a file  ..  filename.xx
      2.     Use XX3402  :   xx3402 d filename.xx
      3.     The decoded file should be created in the same directory.
      4.     If the file is a archive file, use the proper archive program to
             extract the members.

    { ------------------            CUT              ----------------------}

    *XX3402-006403-230497--72--85-59226------TBBMPS.ZIP--1-OF--2
    I2g1--E++U+6+AaH6G9hcx9WLE+++DM++++E++++KaxjPIxpR0-BPqtj9a7hQ5JBkF4+A+W9
    VkAsVgzSiM3zpz5BO7r8PmK2VxsdB+Y2qiv5-QINK+B9MQ8QjiAjL2Br0NBKICwxb725MoWM
    h2WP+WNh5sOKm0kO4mh3ZhZM+ymdtPzqHLTo0Jyw+J-9+kEI++6+0+0eYm2WXHvv6qU+++1q
    ++++3++++3djPqpDRLEUF4ZnMK7gNKEiMapkRMmx1MIk16GBn+0AEKbd-cV2nnejxaXN8F7h
    g5CFc5XMCJzoySQs9q5wEbhcapdY5RnZ8tlBRpdacWWppW-xDCaRZdYc0lWWRDg1C7EpDsNK
    22ofE+iU1GUKPW9uxgb5b1tva5RswENEGkA23++0++U+WNAV6ZwDA0Fs++++xU+++-A+++-O
    PqxhHrJo62BjP4xmNKEiMapkRMkl0gEk1+FpC71qbb4ZMEhrBZmTjlU0eToozwJDA8HpfOkI
    UGCGJUinGBzh38i1yZ1jGmxN7WzmJAL0Igmo3L5JKYb45-b1H3iF9ZVZNlvyEF1N3H1FoCwh
    -MMt+dr+BG-tiVRlRyx+dCQ2h3LjShEvL5wkzzs+I2g1--E++U+6+D0G6G6WLTWlLk+++DM+
    +++D++++KaxjPIZi62pjPawiMapkRMn-2M+U1+HDWEJMVgzAo63zqz4RoeX89yMsaD4V0Qb0
    2XXC4scfOwzOFWpMikzwFSUmEa-GNOipdaZxcHK-GQJK311FDsG4q9Zl5clo6spAOEvMawDD
    iTaiX5zoskBEGkA23++0++U+pN6V6Y9+oL-a++++xU+++-A+++-OPqxhGKsUF4ZnMK7gNKEi
    MapkRIn71M+k1+g8+n+4noUNc-7zpi4RoPdH7PsVeJi7-nWpLHb5QRs2LA2xi+oihDPQu+y4
    dVYg8uCEKagYrVytkv6mGZ4+40sT+MNGwmDOWYNHWb+9tmNQ73m6yCoXbrBnHwQRL5k+I2g1
    --E++U+6+D8G6G9sgV4hPU+++DM++++G++++KaxjPIZi62BjP4xmNKEiMapkRMkl0c+k12IX
    2JkxVaAUEwS0irQd0AstKixIQ8p7os6U7jrtw5uOzPX-up7hefJfUfZlUPwG1oLQf+rdm1Yf
    eSp-fKvKVamkJo9rw+I-s1GUWMJoZVUoH74k9AlM00Cd2k0yjTClBztljwDhvUBEGkA23++0
    ++U+TMcV6fzoaNhM++++xU++++o+++-HMLNZ62pjPawiMapkQz9xlU+-NI0g+QE0IAn6k+6K
    Pk1W6rkEX+cO676B1F+8-230EC9+UEB+YTxUlD1zDsE0EN+EY104+MV-n+MUVX2nRdc-F6A-
    Z+yYkE9A-4U4--xe1wlO+3-9+kEI++6+0+-oWW2W6AMO4pU+++1q++++2E+++3BVRaIUF4Zn
    MK7gNKEiMapkQz9xlU+-NI0g+QE0IAn6k+6KPk1W6rkEX+cO676B1F+8-230EC9+UEB+YTxU
    lD1zDsE0EN+EY104+MV-n+NU-TnMOEME1ENEDd1y+C9m2u+N25mcDH-f+J-9+kEI++6+0+-O
    WW2WFXGa0qo+++1q++++2++++3BVRaIUEqxgPr7ZN0tWPL-nwjr4++3ZE8k-l+7EnAX++VNj
    +C6XT-0A0VcUYUoB2+c2EI7+sg0-+o0Fzq12wDwzV+7-Y-0EA6M-VU8UH+4nyFYUJQ21cRht
    IDYA6-cAc5kUTO1XFwQDcDU-6BL-UsDD+CJnA7iLUk2nn3c+I2g1--E++U+6+D4A6G6fDYx+
    NU+++DM++++C++++I57dPbEUHKxiPmtWPL-pXP2JU1+6FD5V+6tVSSylUPrfK4SoH4IPCGvO
    0HY65oWCwnPNZRdHqxFWOz3aTxPIP2q7HdGVxttYp92lZCV24S8pSgQ1j+AenRrJN6O3yyFk
    nE2OmtPe6A5v283PPKi+sgPrvEBEGkA23++0++U+tMkV6hfB7rxg++++xU+++-6+++-EQaZi
    R0-2OLBVMalZN0tWPL-pHH2GU0+AWsRvTMMXRzn+rSwswnGSpAapBWquqN9a2YcsnVhNZqBr
    P-A9pj+vzefbNSx7P3cylVXiK-mM7P3dyKVjFItdpIpHHEYdEaoU8on8x3JmHqh6ENDIfGeU
    Pp1lM42AaEjCwS9vxU3EGkA23++0++U+kckV6ig1waBt++++xU+++-2+++-EQaZiR0-1Pqlj
    QaJY9a7hQ5JBAF60AEVQ7pTElKRMNWMzgDQvqh97X2ymmNBGLFgLCCpQ+Xggg9bSRWHin+jn
    TCE7KyW8Tx+QeWNtiAEmle0msa4h7+yLKDcLsJBuAo6pKoUFgxTPsDlwa7F1JwYxPR28SeLP
    t44Pk5EXxejEi+6pq-T6QT5vxUBEGkA23++0++U+hcYV6VsLHHpg++++xU++++s+++-EMLBo
    NG-BPqtj9a7hQ3JBiF4+A+kHRnFiCANU1bfKcTM6OPBB0aOW1N9BwRWF3AiCgqsbAbNW6SMP
    +wPkbHWal1wwaysdGZaYpVeR5USxdmVZYScPgOY+lbgVaIfdIpgoRGkJEMkMsZUp9c-7KIft
    fB0bLSzJgAyb3p-9+kEI++6+0+0dWG2WxsTioL++++1q++++2U+++3-VQrFZ62FdQq3WP4JY
    9a7hQ3JCiF4+A+knRnFdA4Ak-nrfI5i2hBYa-ECZcUqGnLDMZbGKYnXfRYf21Wn+T4CEoLo1
    XWbk1siVKEWH3eXK0eRvGSwVH3eUwcKzZ2IITUAdKhSrJlymIeUI2c98MoIPCeKWdS7OUtzx
    -kZfgjCnx+7EGkA23++0++U+VcYV6f6fTtaG++++xU+++-2+++-EMLBoNG-1PqljQaJY9a7h
    Q5DmzQM++KJ+f+52+Z1AmA+03aw+sWBw26k84W0G1EoE0UF-EY1Wk621E75zMAHkzny2+Y4E
    270MWE+i610-US32FoR50vityKYUhsKtiDXwvzyz6Lnj6msEzUZD2DzzvmAnUTknNwsQa+bY
    +s5-HCM0c+Lg-HDN0s0ag+DtlRkA4sc9NU9BrQr+k+aoNU8MV+2+I2g1--E++U+6++SD6G7Y
    VhtqV++++DM++++E++++EqxkSG-1PqljQaJY9a7hQ5DmzQM++KJ+f+52+Z1AmA+03axUk+IO
    676B1F+8-230EC9+UEB+YTxUlD1zDsE0EN+EY114-0MiE+0YPHcuCZd+x+M4VVOUBdvzyzyr
    J5Fox61spJ-yzSzzDFjsXvV+y0SQETnxzswMJnBws1Zntf-lzSwD1G-1ezxzM+PFtSI387M-
    +3-9+kEI++6+0+-qVG2Wri2ReK6+++1q++++2E+++2xkNKsUF4ZnMK7gNKEiMapkQz9xlU+-
    NI0g+QE0IAn6k+6KPq1+-FcUYUoB2+c2EI7+sg0-+o0Fzq12wDwzV+7-Y-0Ea6YC7Y-AbAYD
    ZDrzsECAbj+TaSPzk6xATzUDdm5OzoDJEKWU+0T652ucyQXK+E-EGkA23++0++U+z6EV6ZEM
    wCdp++++xU+++-++++-DQ4Ji62BjP4xmNKEiMapkQz9xlU+-NI0g+QE0IAn6k+6KPq1+-FcU
    YUoB2+c2EI7+sg0-+o0Fzq12wDwzV+7-Y-0Ea6YCddS1kQkCA4WTqPwP05OInzWBH9SPUsJV
    x6tWwruUMTxz37jD+4inBdw-ZhwBdc20ZXCvRyyq-7YzcuANqHc+I2g1--E++U+6+8pN806d
    husGIE+++DM++++A++++HaJr62pjPawiMapkQz9xlU+-NI0g+QE0IAn6k+6KPk1W6rkEX+cO
    676B1F+8-230EC9+UEB+YTxUlD1zDsE0EN+EY104+MV-lgPA66s-RKWMSQnAI1vI5aOsfQM+
    I2g1--E++U+6+AVg9G7OG9EHIk+++DM++++E++++HaJr62FdQq3WP4JY9a7hQ5DmzQM++KJ+
    f+52+Z1AmA+03aw+sWBw26k84W0G1EoE0UF-EY1Wk621E75zMAHkzny2+Y4E27+kVU46EQP4
    z21FzlycEwDAsqS4we5qAABhBEM+I2g1--E++U+6+6hN806zB2u3Mk+++DM++++D++++HaJr
    62BjP4xmNKEiMapkQz9xlU+-NI0g+QE0IAn6k+6KPk1W6rkEX+cO676B1F+8-230EC9+UEB+
    YTxUlD1zDsE0EN+EY104+MV-lgMJ5I1EM4lQzTzrzxx+iVt6zGSHLw++sJQkEzZ+Swe-c-Vi
    en2+I2g1--E++U+6+07SN0608mxMN++++DM++++B++++G4JgQ0-BPqtj9a7hQ5JBiF4+A+kH
    NkNU12fTSEBupe5qO7a8BZVqS-fYFsYQ8xhycb-2fJ59e+ZnucszS+rRWlWIcfLKEiaNu9q6
    EGaODJ1YFEL0UtWCFd4Q8LkFUkwPYY5VMPKk2SvFBuoUxnPSzmtEGkA23++0++U+AJtY6cMw
    mmNf++++xU+++-2+++-6NKlk62FdQq3WP4JY9a7hQ5JBgEq+A+k9UXqQkFWd5v1n1bBDuoaN
    K6DRJ-I9HVorfieQpmC74nn+TL0FfThJzZ1ngRMI3WqopVeQu2QWIZWooAe2GFxAFLbFw6Wp
    K--CROeWUSh54EMJ4ZAh28DwtpXYn-DMn-xPQxw9I2g1--E++U+6+5BSN09+uYbrW++++DM+
    +++E++++G4JgQ0-1PqljQaJY9a7hQ5JBAEc1AEl9cEzcAvdvv-1criyoV+v7BwkBxsWPPZ9y
    R3+sD8FmQbGf53iFF7nvslA4bikfyr9o8NmvLw6zZ-4KAgX99MtO8trKHqVhY7RP5D71HBbd
    NXcN4IUN0qK5F4+369njPvCBxrI43UypulTGv3chHPN3O8PaypqNyntZ94BVzszPF9tEGkA2
    3++0++U+G6YV6UnHLltW++++xU++++k+++-1RLEUHKxiPmtWPL-hX12CU1+6FH2s4szVGA6B
    r9qCAoTfs7auJi0rFVAzzPno3vcTZO1HjPbLvcbanApx9T-LVYQn60cWPuIIHpcSOUq6WgWP
    DV64KNF+ILtF03EFPAZMvcjXvjAduXymzXC5PZ-9+kEI++6+0++eWG2W1BBT5a6+++1q++++
    2++++2BpR0-2OLBVMalZN0tWPL-hX12CU1+6FH2s4szVGA6Br9qCAoTfs7auJi0rFVAzzPno
    3vcTZO1HjPbLvcbanApx9T-LVYQn60cWPuIIHpcSOUq6WgWPDV64KNF+ILtF03EFPAZMvcjX
    vjAduXymzXC5PZ-9+kEI++6+0++FWG2W-J+FdKU+++1q++++1k+++2BpR0-1PqljQaJY9a7h
    Q5DmzQM++KJ+f+52+Z1AmA+03aw+sWBw26k84W0G1EoE0UF-EY1Wk621E75zMAHkzny2+Y4E
    27+kVUAHNkVxqAHM-I9P41gXoHN569GlWQoNW+MKe2ta04I+BQn++26n41-1dP5HM2I+I2g1
    --E++U+6+1KD6G8j-+qFM++++DM++++B++++EqxkSG-BPqtj9a7hQ5JBEEu+A+X1p+Ts16wa
    ys3rjyCNdypJLaQ9oqWAg29O+Zirkn7qMWOaXg54oBrykhBonuOIl37fdR9WKKjNZ77MmXQK
    LJGzEC5Ko1aSb0EtUBWlUZV-+KoRFMnGgTSL7p-9+kEI++6+0++eXm2WVMMAoKI+++1q++++
    2E+++2BjQ5YUF4ZnMK7gNKEiMapkRIkl0c-+18iQSrq4cy+DrDqCQtxqHyfYKdBKI--nZsOY
    BBhyGi2+Nr0uCQWMiQYTf7Na7LmAA5fjG08zF7HkAQ7MjpXMGALSeGvWYiTV0h9fqwCIpoPD
    KgqHhWfK96IqOZIzi+-EGkA23++0++U+X6IV6hlGhr3T++++xU++++o+++-DQ4Ji62pjPawi
    MapkQz9xlU+-NI0g+QE0IAn6k+6KPq1+-FcUYUoB2+c2EI7+sg0-+o0Fzq12wDwzV+7-Y-0E
    a6YC7Y-AbAY7tYm+oFBa6hCQ2nWFuEYnsHF2yomcCUUB3C+2aQA7BFzNCU-EGk20AUgI++6+
    ***** END OF BLOCK 1 *****

    *XX3402-006403-230497--72--85-03713------TBBMPS.ZIP--2-OF--2
    0+17Ym2WvODGsZo+++1q++++2++++++++++++0++hc2+++++KaxjPIxpR0-BPqtj9a7hQ3-9
    +E6m0lE++U+6+8eH6G8BDjgXO++++DM++++I++++++++++++6+0qUMg+++-OPqxhHrJo62Fd
    Qq3WP4JY9a7hQ3-9+E6m0lE++U+6+6aH6G7T1n+YS++++DM++++H++++++++++++6+0qUGI-
    ++-OPqxhHrJo62BjP4xmNKEiMapkI2g-+X693++0++U+w76V6W7Ry93T++++xU++++w+++++
    +++++++U+9O-nU2++3djPqp7PW-BPqtj9a7hQ3-9+E6m0lE++U+6+BKG6G70kB3kNU+++DM+
    +++H++++++++++++6+0qUJc0++-OPqxhGKsUF4ZnMK7gNKEiMapkI2g-+X693++0++U+wd6V
    6jWm2Opi++++xU+++-6++++++++++++U+9O-wE6++3djPqp7PW-1PqljQaJY9a7hQ3-9+E6m
    0lE++U+6+5q86G8zx7aPK++++DM++++B++++++++++++6+0qUMw1++-HMLNZ62pjPawiMapk
    I2g-+X693++0++U+R6cV6W144VhM++++xU+++-2++++++++++++U+9O-2UE++3BVRaIUF4Zn
    MK7gNKEiMapkI2g-+X693++0++U+KccV6YModUhh++++xU+++-+++++++++++++U+9O-aEE+
    +3BVRaIUEqxgPr7ZN0tWPL-EGk20AUgI++6+0+1lX02W8ntDE4M+++1q++++1U++++++++++
    +0++hc2o-E++I57dPbEUHKxiPmtWPL-EGk20AUgI++6+0+1ZX02WqgobTqk+++1q++++2U++
    +++++++++0++hc54-E++I57dPbEUF4ZnMK7gNKEiMapkI2g-+X693++0++U+kckV6ig1waBt
    ++++xU+++-2++++++++++++U+9O-MUM++3-mOKto62BjP4xmNKEiMapkI2g-+X693++0++U+
    hcYV6VsLHHpg++++xU++++s++++++++++++U+9O-0UQ++3-VQrFZ62pjPawiMapkI2g-+X69
    3++0++U+eMYV6jS5vh3k++++xU+++-6++++++++++++U+9O-cUQ++3-VQrFZ62FdQq3WP4JY
    9a7hQ3-9+E6m0lE++U+6+6O76G8m8ryNYU+++DM++++F++++++++++++6+0qUI66++-EMLBo
    NG-1PqljQaJY9a7hQ3-9+E6m0lE++U+6++SD6G7YVhtqV++++DM++++E++++++++++++6+0q
    UEA7++-1Pr-t62BjP4xmNKEiMapkI2g-+X693++0++U+RcIV6hvV5OZW++++xU+++-2+++++
    +++++++U+9O-hEY++2xkNKsUF4ZnMK7gNKEiMapkI2g-+X693++0++U+z6EV6ZEMwCdp++++
    xU+++-+++++++++++++U+9O-FUc++2xkNKsUEqxgPr7ZN0tWPL-EGk20AUgI++6+0+0hKGUW
    8PSi2Z2+++1q++++1++++++++++++0++hc5d0U++HaJr62pjPawiMapkI2g-+X693++0++U+
    m4kh6Zd6h-BH++++xU+++-+++++++++++++U+9O-N+g++2tZRm-2OLBVMalZN0tWPL-EGk20
    AUgI++6+0+09KGUWDnFCVKA+++1q++++1k+++++++++++0++hc5Z0k++HaJr62BjP4xmNKEi
    MapkI2g-+X693++0++U+6ZtY6U6f9pVY++++xU++++o++++++++++++U+9O-REk++2VZP5+U
    HKxiPmtWPL-EGk20AUgI++6+0++lLaEWVXn97ag+++1q++++2E+++++++++++0++hc221E++
    G4JgQ0-2OLBVMalZN0tWPL-EGk20AUgI++6+0+-nLaEWkCd7xsU+++1q++++2+++++++++++
    +0++hc4S1E++G4JgQ0-1PqljQaJY9a7hQ3-9+E6m0lE++U+6+2W76G6AopwSMU+++DM++++A
    ++++++++++++6+0qUJEC++-1RLEUHKxiPmtWPL-EGk20AUgI++6+0++eWG2W1BBT5a6+++1q
    ++++2++++++++++++0++hc5U1U++ErJo62FdQq3WP4JY9a7hQ3-9+E6m0lE++U+6+-476G63
    I-4ZO++++DM++++D++++++++++++6+0qUL+D++-1RLEUEqxgPr7ZN0tWPL-EGk20AUgI++6+
    0++pXm2WfkEBYK++++1q++++1E+++++++++++0++hc232+++EqxkSG-BPqtj9a7hQ3-9+E6m
    0lE++U+6+0eD6G83VUnFNE+++DM++++F++++++++++++6+0qUN+E++-1Pr-t62FdQq3WP4JY
    9a7hQ3-9+E6m0lE++U+6+6m36G9QIfRlLk+++DM++++B++++++++++++6+0qUGEF++-DQ4Ji
    62pjPawiMapkI2g3-U+++++S+-s+DkQ++8sF++++++++
    ***** END OF BLOCK 2 *****

    { ---------------------------  CUT   --------------------------- }
    { the following contains addition files that should be included with this
      file.  To extract, you need XX3402 available with the SWAG distribution.

      1.     Cut the text below out, and save to a file  ..  filename.xx
      2.     Use XX3402  :   xx3402 d filename.xx
      3.     The decoded file should be created in the same directory.
      4.     If the file is a archive file, use the proper archive program to
             extract the members.

    { ------------------            CUT              ----------------------}

    *XX3402-000267-230497--72--85-31147-------TBRES.ZIP--1-OF--1
    I2g1--E++U+6+0Fs9G8avVUYXE+++Bk-+++C++++J4xjP27pR5FjPWtYMr7XM4-UI+1WzzwV
    4-poA16ka61ZaFV0UB+T05oMb-V0cHkze1c-+HsKa-sB67O+MYM4W9+06kACo+-41+oB2+c2
    EI7+sg0-+m0PkEXYC1+3Ua0rzaQk7UPMZoB-AN1R+EIMP+ukInXEqEoA5EoQ1FmMuXgO4Acf
    sCmCPWHq1j934TtXQlgGynwIT0P8uk-EGk20AUgI++6+0++YS0oWdisM76o+++1Q+E++1U++
    +++++++++0++hc2+++++J4xjP27pR5FjPWtYMr7EGkI4++++++2++E+w++++iE++++++
    ***** END OF BLOCK 1 *****

[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]