Zamykání polí na editačním dialogu

Top  Previous  Next

Seznam témat :

řešení

 

Řešení

Účel

Následující dvě procedury slouží administrátorům, kteří v rámci skriptu potřebují zamykat některé části dialogů.

Typickým příkladem je situace, kdy administrátor potřebuje zajistit, aby se po změně stavu určité agendy (například „smlouvy“ přejdou ze stavu „rozpracováno“ do stavu „schváleno“) znemožnila editace některých polí, nebo dokonce změny v browser detailech příslušného dialogu.  

 

Použití

Do unity browser.pas a do skriptovacího interpretru byly přidány procedury:
 
procedure DisableDialogFields(Dlg: TForm; const Fields: string);
procedure EnableDialogFields(Dlg: TForm; const Fields: string);
 
V parametru Fields se očekává seznam databázových polí oddělený čárkou. Jména polí musí odpovídat vlastnosti FieldName jednotlivých komponent na dialogu a jsou case-sensitive(!).

Pokud se mají zakázat/povolit také browser-detaily, tak se do seznamu uvede příslušné interní jméno browser-detailu ve tvaru name[x], kde x je celočíselná bitmapa určující dotčenou operaci (1=insert, 2=delete, 4=update).
 
 

Příklad

U browseru pro projekty se do skriptů pro přizpůsobení OnCreateDialog nebo OnSyncData uvede např.:
 
DisableDialogFields(BrowserDialog, 'nazev, cizi_nazev, typakce_id, BrDPlan[2+4]');