TEditVar = class
    Constructor Create;
	// prije uništavanje objekt treba maknuti iz parenta
	// TEditableVarList.remove();
    Destructor Destroy;override;
	// kopira source u samog sebe
    Procedure Kopiraj(source:TEditVar);
	// postavlja vrijednost varijable
	// koristi se samo kad je tip dtvCombo
	// index je index u ValuesList
    Procedure PostaviVrijednost(Index:integer);
	// Naziv
    Property VarName:String;
	// Vrijednost
    Property VarValue:String;
	// boja texta kod edita
    Property Color : integer read Fcolor write Fcolor;
	// text koji se vidi kod edita
    Property Caption:string;
	// ne koristi se za sad		   
	// rezervirano za buduču upotrebu
    Property Tip:integer;
	// Varijabla je vidljiva al se nemože editirati u editoru
    Property ReadOnly:boolean;
	// kategorija
    Property Category:string;
	// tip vrijednosti, vidi gore
	// Promjena tipa vrijednosti mjenja vrijednost varijable
	// i mjenja stanje ValuesList
	// najbolje postaviti odmah nakon kreiranja i više ne ditati.
    Property VarDataType:TVarDataType;
	// varijabla vidljiva ili ne u editoru
    Property Visible:boolean;
	// hint za varijablu u editoru
    Property Hint:string;
	// Granične vrijednosti koje je moguče upisati
	// u editoru ako je VarDataType dtvinteger ili dtvextended
    Property MinValue:extended;
    Property MaxValue:extended;
	// Lista vrijednosti za odabir kad je VarDataType dtvCombo ili dtvCheck
	// dtvCheck ima samo dvije vrijednosti
	// ValuesList[0] za false i ValuesList[1] za true
    Property ValuesList:tstringlist;
	// corpus ne koristi ovaj property, slobodan je za 
	// korištenje u skriptama
	// sprema se kod sejvanja
    Property Tag:integer;
	// Vrijednost mora biti upisana
	// ima smisla samo kod dtvString
	// svi ostali tipovi imaju defaultnu vrijednost
	// Editor traži da korisnik upiše vrijednost ako je TRUE
    Property Required:Boolean;
	// VarValue nije uvjek očekivane vrijednosti
	// naročito kod dtvCombo i dtvCheck
	// VarValue je ValuesList.ValuesFromIndex[index]... Text vrača ValuesList.Names[index]
	// ovaj property je readonly
    Property Text:string;
end;

	// moguči tipovi vrijednosti novih varijabli (TEditVar)
	// dtvNone i dtvButton se ne koriste
	// dtvInteger = cijeli broj
	// dtvString = text
	// dtvCombo = odabir iz liste vrijednosti
	// dtvColor = boja
	// dtvExtended = decimalni broj 
	// dtvDate = datum
	// dtvCheck = checkBox (Da/Ne)
	
	TVarDataType = ( dtvNone, dtvInteger, dtvString, dtvCombo, dtvColor, dtvExtended, dtvButton,dtvDate,dtvCheck );