Vai al contenuto principale
Una proprietà definita dall’utente è una variabile tipizzata associata a un elemento. Queste proprietà sono definite nella sezione External fields. Seguire il formato seguente:
Type1 Name1;
...
TypeN NameN;
dove Name è il nome della variabile e Type è il suo tipo. Quando i field vengono creati, vengono inizializzati come segue: i field numerici vengono inizializzati a zero, i Rectangle e le regioni vengono inizializzati come vuoti, ecc. I Field possono essere utilizzati nell’elemento a cui appartengono e in qualsiasi elemento situato al di sotto di esso. Il valore di un field può essere modificato solo nell’elemento a cui appartiene; negli altri elementi è disponibile in sola lettura. Il valore di un’espressione complessa che caratterizza l’ipotesi per un elemento può essere calcolato e scritto in questa proprietà. Questo valore può essere accessibile da qualsiasi elemento sottostante, senza ricalcolarlo ogni volta che serve. Ciò riduce il tempo necessario per il matching del FlexiLayout, elimina la necessità di copiare un’espressione ampia in ciascuno degli elementi e rende il codice più leggibile. Per accedere a un field di un elemento, si usa il nome completo del field nel seguente formato: ElementName.FieldName (ad es. SearchElements.StaticText1.x). All’interno di un elemento, il suo field è accessibile per nome: x. Nel caso di un elemento composto, i suoi sottoelementi (a qualsiasi livello di annidamento) possono anche accedere ai suoi elementi tramite i loro nomi brevi. All’interno di un elemento, i nomi dei field devono essere univoci. I nomi degli elementi di un elemento composto non possono coincidere con alcuno dei nomi dei field nei suoi sottoelementi (a qualsiasi livello di annidamento). Inoltre, i nomi dei field di un elemento composto non possono coincidere con alcuno dei nomi dei suoi sottoelementi.

Esempio

Questo esempio cerca due componenti dell’indirizzo: città (string City) e stazione della metropolitana (string Station). La stazione della metropolitana viene specificata solo se la città è Sydney. Per accelerare il matching di FlexiLayout, specifichiamo una proprietà fromSydney per l’elemento City. Questa proprietà è true se l’elemento City viene rilevato e ha il valore Sydney, e false in tutti gli altri casi. Codice per l’elemento City: External fields
logic fromSydney;
Valutazione delle ipotesi
if( not IsNull and Value.Find( "Sydney" ) >= 0 ) then fromSydney = true;
else fromSydney = false;
Successivamente, utilizziamo questa proprietà per cercare la stazione della metropolitana. Per accelerare il processo di confronto, cerchiamo la stazione solo se Sydney viene rilevata come elemento City. Codice per l’elemento Station: Condizioni di ricerca
if not City.fromSydney then dontfind;
Nota: A causa dei fields, gli elementi dello stesso tipo non sono considerati identici. Pertanto, sono vietate costruzioni del tipo seguente:
Let e = SearchElements.StaticText1;
e = SearchElements.StaticText2; // elemento dello stesso tipo