يمكنك ضبط (إعداد مسبق) حالة الحظر في صندوق أدوات. على سبيل المثال، يمكنك ضبط حقل على قيمة تلقائية أو ربط كتلتَين معًا. يمكنك أيضًا إنشاء حظر جزئي، وهو بمثابة الإعداد التلقائي لعمليات الحظر الفرعية.
أمثلة
في ما يلي بعض الأمثلة على الحظر المسبق:
الحظر باستخدام قيمة حقل مُعدّة مسبقًا
في ما يلي math_number كتلة يعرض حقلها الرقم 42 بدلاً من القيمة التلقائية 0:

في ما يلي مجموعة أدوات تضبط هذا الحقل:
JSON
{
"kind": "flyoutToolbox",
"contents": [
{
"kind": "block",
"type": "math_number",
"fields": {
"NUM": 42
}
},
]
}
XML
<xml id="toolbox" style="display: none">
<block type="math_number">
<field name="NUM">42</field>
</block>
</xml>
المربّعات المتصلة مُسبَقًا
في ما يلي controls_for كتلة مرتبطة بها ثلاث كتل math_number:

إليك صندوق أدوات يربط هذه الحِزم مسبقًا:
JSON
{
"kind": "flyoutToolbox",
"contents": [
{
"kind": "block",
"type": "controls_for",
"inputs": {
"FROM": {
"block": {
"type": "math_number",
"fields": {
"NUM": 1
}
}
},
"TO": {
"block": {
"type": "math_number",
"fields": {
"NUM": 10
}
}
},
"BY": {
"block": {
"type": "math_number",
"fields": {
"NUM": 1
}
}
},
}
},
]
}
XML
<xml id="toolbox" style="display: none">
<block type="controls_for">
<value name="FROM">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
<value name="TO">
<block type="math_number">
<field name="NUM">10</field>
</block>
</value>
<value name="BY">
<block type="math_number">
<field name="NUM">1</field>
</block>
</value>
</block>
</xml>
المربّعات غير المفعّلة
لا يمكن سحب البلوكات غير المفعّلة من صندوق الأدوات. يمكن إيقاف الحظر بشكل فردي باستخدام السمة الاختيارية disabled.

JSON
{
"kind": "flyoutToolbox",
"contents": [
{
"kind": "block",
"type":"math_number"
},
{
"kind": "block",
"type": "math_arithmetic"
},
{
"kind": "block",
"type": "math_single",
"disabled": "true"
}
]
}
XML
<xml id="toolbox" style="display: none">
<block type="math_number"></block>
<block type="math_arithmetic"></block>
<block type="math_single" disabled="true"></block>
</xml>
يمكنك أيضًا إيقاف الحظر أو تفعيله آليًا باستخدام
setDisabledReason.
ضبط عمليات الحظر
يمكنك ضبط أحد البلوكات في صندوق الأدوات بأي طريقة يمكنك ضبطه بها في مساحة العمل. على سبيل المثال، يمكنك ضبط قيم الحقول وربط اللبنات بمدخلات القيمة أو العبارة وإضافة تعليقات وتصغير اللبنات أو إيقافها. وهذا ممكن لأنّ صناديق الأدوات تستخدم الرمز نفسه لضبط المربّعات التي تستخدمها مساحات العمل لتسلسلها.
وهذا يعني أيضًا أنّه من السهل إنشاء إعدادات حظر. ما عليك سوى تحميل كتلتك في مساحة عمل، وضبطها بالطريقة التي تريدها، ثم تحويلها إلى سلسلة من خلال تشغيل الرمز التالي في وحدة التحكّم.
JSON
console.log(Blockly.serialization.workspaces.save(Blockly.getMainWorkspace()));
XML
console.log(Blockly.Xml.workspaceToDom(Blockly.getMainWorkspace()));
يمكنك بعد ذلك نسخ رمز الإعداد ولصقه في مجموعة الأدوات. احرص على إزالة السمات x وy وid التي تتجاهلها مجموعة الأدوات.
الحقول المتغيّرة
قد تحتاج الحقول المتغيرة إلى تحديدها بشكل مختلف عندما تكون في مجموعة أدوات مقارنةً بحالتها عند تسلسلها.
على وجه الخصوص، عندما يتم عادةً تحويل الحقول المتغيرة إلى تنسيق JSON، فإنّها لا تحتوي إلا على رقم تعريف المتغير الذي تمثله، لأنّه يتم تحويل اسم المتغير ونوعه إلى تنسيق آخر بشكل منفصل. ومع ذلك، لا تحتوي مربّعات الأدوات على هذه المعلومات، لذا يجب تضمينها في حقل المتغيّر مباشرةً.
{
"kind": "flyoutToolbox",
"content": [
{
"kind": "block",
"type": "controls_for",
"fields": {
"VAR": {
"name": "index",
"type": "Number"
}
}
}
]
}
مربّعات الظل
الكتل الظلية هي كتل عناصر نائبة تؤدي عدة وظائف:
- تشير هذه السمة إلى القيم التلقائية للكتلة الرئيسية.
- تتيح للمستخدمين كتابة القيم مباشرةً بدون الحاجة إلى استرداد رقم أو سلسلة.
- وعلى عكس الوحدة العادية، يتم استبدالها إذا أسقط المستخدم وحدة تصميم فوقها.
- تُعلم المستخدم بنوع القيمة المتوقّعة.
لإنشاء كتلة ظل، استخدِم السمة shadow (JSON) أو العلامة <shadow> (XML) بدلاً من السمة block أو العلامة <block>. على سبيل المثال، في ما يلي
كتلة math_arithmetic تتضمّن كتلتَي math_number ظل متصلتَين بها:

إليك مجموعة أدوات تستخدم عناصر التحكّم الوهمية هذه:
JSON
{
"kind": "flyoutToolbox",
"contents": [
{
"kind": "block",
"type": "math_arithmetic",
"fields": {
"OP": "ADD"
},
"inputs": {
"A": {
"shadow": {
"type": "math_number",
"fields": {
"NUM": 1
}
}
},
"B": {
"shadow": {
"type": "math_number",
"fields": {
"NUM": 1
}
}
}
}
},
]
}
XML
<xml id="toolbox" style="display: none">
<block type="math_arithmetic">
<field name="OP">ADD</field>
<value name="A">
<shadow type="math_number">
<field name="NUM">1</field>
</shadow>
</value>
<value name="B">
<shadow type="math_number">
<field name="NUM">1</field>
</shadow>
</value>
</block>
</xml>