'A bit different custom form in RapidQ with flat close button
'by Jernej Simoncic

$INCLUDE "RAPIDq.INC"
$RESOURCE Background AS "C.BMP"
$RESOURCE CloseUp AS "CLOSE_UP.BMP"
$RESOURCE CloseDn AS "CLOSE_DN.BMP"
$RESOURCE CloseFl AS "CLOSE_FLAT.BMP"

DECLARE SUB StartMoveForm (BTN AS INTEGER, X AS INTEGER, Y AS INTEGER)
DECLARE SUB MoveForm (X AS INTEGER, Y AS INTEGER)
DECLARE SUB EndMoveForm (BTN AS INTEGER, X AS INTEGER, Y AS INTEGER)
DECLARE SUB CloseClick
DECLARE SUB CloseDown(BTN AS INTEGER, X AS INTEGER, Y AS INTEGER)
DECLARE SUB CloseMove(x%, y%)
DECLARE SUB CloseLift
DECLARE SUB CloseDraw

DIM x1% AS INTEGER,x2% AS INTEGER,y1% AS INTEGER,y2% AS INTEGER, Moving as integer, Clse AS INTEGER, Min AS INTEGER
DIM CDown(1) AS INTEGER, MDown(1) AS INTEGER, UpOrDown AS INTEGER, i% AS INTEGER

CREATE Form AS QForm
  Width=400
  Height=299
  Center
  BorderStyle=0
  CREATE DragImg AS QImage
    Left=0
    Top=0
    Width=400
    Height=300
    BMPhandle=Background
    OnMouseDown = StartMoveForm
    OnMouseMove = MoveForm
    OnMouseUp = EndMoveForm
  END CREATE
  CREATE btnExit AS QImage
    Top = 3
    Left = Form.ClientWidth - 18
    Height = 14
    Width = 15
    BMPhandle = CloseFl
    OnMouseDown = CloseDown
    OnMouseMove = CloseMove
    OnMouseUp = CloseLift
    OnClick=CloseClick
  END CREATE
END CREATE

Form.ShowModal

SUB StartMoveForm (BTN AS INTEGER, X AS INTEGER, Y AS INTEGER)
  If Btn=0 AND Y<20 then
    Moving = TRUE
    x1% = X
    y1% = Y
    x2% = Form.Left
    y2% = Form.Top
  End If
END SUB
SUB MoveForm (X AS INTEGER, Y AS INTEGER)
  IF Moving = TRUE THEN
    Form.Left = x2% + (X - x1%)
    Form.Top = y2% + (Y - y1%)
    x2% = Form.Left
    y2% = Form.Top
  ELSE
    CDown(0)=0
    CloseDraw
  END IF
END SUB
SUB EndMoveForm (BTN AS INTEGER, X AS INTEGER, Y AS INTEGER)
  Moving = FALSE
END SUB

SUB CloseDown (BTN AS INTEGER, X AS INTEGER, Y AS INTEGER)
  If BTN = 0 then
    btnExit.BMPhandle=CloseDn
    Clse = True
    CDown(0)=-1
  END IF
ENd SUB
SUB CloseMove (x%, y%)
  If Clse = True then
    if x%>0 and x%<15 then
      if y%>0 and y%<14 then
        CDown(0)=-1
      else
        CDown(0)=0
      end if
    else
      CDown(0)=0
    end if
  else
    CDown(0)=1
  end if
  CloseDraw
ENd SUB
SUB CloseLift
  btnExit.BMPhandle=CloseFl
  Clse=0
  CDown(0)=False
ENd SUB
SUB CloseDraw
  If Cdown(0)<>CDown(1) Then
    if CDown(0)=-1 then
      btnExit.BMPhandle=CloseDn
    ElseIf CDown(0)=1 then
      btnExit.BMPhandle=CloseUp
    else
      btnExit.BMPhandle=CloseFl
    end if
    CDown(1)=CDown(0)
  End If
end sub
SUB CloseClick
  Form.Close
END SUB
