10.10 Codice sorgente di QDiamondBox $APPTYPE GUI
$TYPECHECK ON
TYPE QDiamondBox EXTENDS QCanvas '' È possibile estendere qualsiasi QObject
'-- Nuove proprietà, si possono anche aggiungere componenti
Caption AS STRING
Checked AS INTEGER
HiLightColor AS INTEGER
'-- Non esistono metodi protetti, ma è meglio informare l'utente
'-- PROTECTED (nel senso che è meglio non chiamarlo direttamente nel vostro programma).
SUB DrawComponent
IF QDiamondBox.Checked THEN
QDiamondBox.Line(QDiamondBox.Height/2,0,0,QDiamondBox.Height/2,0)
QDiamondBox.Line(0,QDiamondBox.Height/2,QDiamondBox.Height/2,QDiamondBox.Height,0)
QDiamondBox.Line(QDiamondBox.Height/2,0,QDiamondBox.Height,QDiamondBox.Height/2,0)
QDiamondBox.Line(QDiamondBox.Height,QDiamondBox.Height/2,QDiamondBox.Height/2,QDiamondBox.Height,0)
QDiamondBox.Paint(QDiamondBox.Height/2, QDiamondBox.Height/2, QDiamondBox.HiLightColor, 0)
QDiamondBox.Line(QDiamondBox.Height/2,0,QDiamondBox.Height,QDiamondBox.Height/2,&HFFFFFF)
QDiamondBox.Line(QDiamondBox.Height,QDiamondBox.Height/2,QDiamondBox.Height/2,QDiamondBox.Height,&HFFFFFF)
ELSE
QDiamondBox.Line(QDiamondBox.Height/2,0,0,QDiamondBox.Height/2,0)
QDiamondBox.Line(0,QDiamondBox.Height/2,QDiamondBox.Height/2,QDiamondBox.Height,0)
QDiamondBox.Line(QDiamondBox.Height/2,0,QDiamondBox.Height,QDiamondBox.Height/2,0)
QDiamondBox.Line(QDiamondBox.Height,QDiamondBox.Height/2,QDiamondBox.Height/2,QDiamondBox.Height,0)
QDiamondBox.Paint(QDiamondBox.Height/2, QDiamondBox.Height/2, &HBBBBBB, 0)
QDiamondBox.Line(QDiamondBox.Height/2,0,0,QDiamondBox.Height/2,&HFFFFFF)
QDiamondBox.Line(0,QDiamondBox.Height/2,QDiamondBox.Height/2,QDiamondBox.Height,&HFFFFFF)
END IF
QDiamondBox.TextOut(QDiamondBox.Height + 5, QDiamondBox.Height/2-QDiamondBox.Height/4, QDiamondBox.Caption, 0, -1)
END SUB
'-- Eventi ereditati (spiacente, non è possibile creare nuovi eventi)
'-- L'utente può comunque superare questi eventi, ma non è una buona idea.
EVENT OnClick
IF QDiamondBox.Checked THEN
QDiamondBox.Checked = 0
ELSE
QDiamondBox.Checked = 1
END IF
QDiamondBox.DrawComponent
END EVENT
EVENT OnPaint
QDiamondBox.DrawComponent
END EVENT
'-- Valori di default
CONSTRUCTOR
Height = 30
Width = 100
HiLightColor = &H00FF00
Caption = 'DiamondBox'
Checked = 0
END CONSTRUCTOR
END TYPE
'----- Collaudiamo il nostro nuovo componente
DECLARE SUB DBox2Click
DIM Font AS QFont
Font.Name = 'Arial'
Font.Size = 10
CREATE Form AS QForm
Center
Height = 120
Caption = 'Custom Check Boxes'
CREATE DBox1 AS QDiamondBox
Caption = 'Diamond Box 1'
Left = 100
Height = 20
END CREATE
CREATE DBox2 AS QDiamondBox
Caption = 'Diamond Box 2'
Top = 30
Left = 100
Height = 20
Width = 140
HiLightColor = &H0000FF
Font = Font
ShowHint = 1 ' True
Hint = 'Click me'
OnClick = DBox2Click
END CREATE
CREATE DBox3 AS QDiamondBox
Caption = 'Diamond Box 3'
Top = 60
Left = 100
Height = 20
END CREATE
ShowModal
END CREATE
SUB DBox2Click
DBox2.InheritOnClick '' Inherit event
ShowMessage('Diamond Box 2 clicked')
END SUB