يخزِّن حقل مربّع الاختيار سلسلة كقيمتها وسلسلة كنص لها. من
هي إما 'TRUE'
أو 'FALSE'
، ونصها إما 'true'
أو
'false'
حقل مربّع اختيار
حقل مربّع اختيار على مربّع تم تصغيره
الإنشاء
JSON
{
"type": "example_checkbox",
"message0": "checkbox: %1",
"args0": [
{
"type": "field_checkbox",
"name": "FIELDNAME",
"checked": true
}
]
}
JavaScript
Blockly.Blocks['example_checkbox'] = {
init: function() {
this.appendDummyInput()
.appendField('checkbox:')
.appendField(new Blockly.FieldCheckbox(true), 'FIELDNAME');
}
};
تستخدم الدالة الإنشائية لمربع الاختيار قيمة اختيارية ودالة اختيارية
مدقق. يجب أن تكون القيمة الاختيارية إما
'TRUE'
أو 'FALSE'
أو قيمة منطقية، وإلا سيتم ضبطها تلقائيًا على false
.
التسلسل
JSON
يبدو رمز JSON لحقل مربّع الاختيار كما يلي:
{
"fields": {
"FIELDNAME": true
}
}
عندما تكون FIELDNAME
عبارة عن سلسلة تشير إلى حقل مربّع اختيار
تكون القيمة هي القيمة المراد تطبيقها على الحقل. يجب أن تكون القيمة منطقية.
XML
يبدو رمز XML لحقل مربّع الاختيار كما يلي:
<field name="FIELDNAME">TRUE</field>
أو
<field name="FIELDNAME">true</field>
عندما تحتوي السمة name
على سلسلة تشير إلى حقل مربّع اختيار،
والنص الداخلي هو القيمة المراد تطبيقها على الحقل. قيمة النص الداخلية
ويتبع نفس القواعد مثل قيمة الدالة الإنشائية.
لاحظ أنه بعد إلغاء تسلسله وإعادة ترتيب كل النص الداخلي
ستكون القيم بأحرف كبيرة ('TRUE'
أو 'FALSE'
). يعد هذا مهمًا في بعض الأحيان
عند اختلاف مساحات العمل.
التخصيص
حرف علامة الاختيار
يمكن استخدام السمة Blockly.FieldCheckbox.CHECK_CHAR
لتغيير نوع
علامة الاختيار. يجب أن تكون القيمة سلسلة تحتوي على يونيكود
الحرف.
يتم ضبط السمة CHECK_CHAR
تلقائيًا على "\u2713". أو ✓.
هذه سمة عمومية، لذا ستعدِّل جميع حقول مربّعات الاختيار عند ضبطها.
إنشاء مدقق مربّعات اختيار
ويجب أن تكون قيمة حقل مربّع الاختيار 'TRUE'
أو 'FALSE'
، لذا يجب على المدقق أن
قبول هذه القيم (أي سلسلة) وعرض 'TRUE'
أو 'FALSE'
أو null
أو
undefined
في ما يلي مثال على مدقّق يخفي حقل إدخال نص أو يعرضه استنادًا إلى ما إذا كان قد تم وضع علامة في مربّع الاختيار:
validate: function(newValue) {
var sourceBlock = this.getSourceBlock();
sourceBlock.showTextField_ = newValue == 'TRUE';
sourceBlock.updateTextField();
return newValue;
},
updateTextField: function() {
var input = this.getInput('DUMMY');
if (this.showTextField_ && !this.getField('TEXT')) {
input.appendField(new Blockly.FieldTextInput(), 'TEXT');
} else if (!this.showTextField_ && this.getField('TEXT')) {
input.removeField('TEXT');
}
}