// verzia 201101 unit VelaKorUnit2; interface uses Graphics, KorUnit2; type TVelaKor = class private Fk:array of TKor; Fpk:integer; function dajKor(i:integer):TKor; public constructor Create; destructor Destroy; override; procedure UrobKor; overload; procedure UrobKor(x,y:real; u:real = 0); overload; procedure UrobKor(nk:TKor); overload; procedure ZrusKor(i:integer); overload; procedure ZrusKor(nk:TKor); overload; procedure Uprac; procedure Dopredu(d:real); procedure Vpravo(u:real); procedure Vlavo(u:real); procedure ZmenSmer(u:real); procedure ZmenXY(x,y:real); procedure PresunXY(x,y:real); procedure PH; procedure PD; procedure ZmenPero(nd:boolean); procedure ZmenFP(nfp:TColor); procedure ZmenHP(nhp:integer); procedure Ukaz; procedure Skry; procedure ZmenTvar(const obrys:array of real); overload; procedure ZmenTvar(t:TBitmap); overload; procedure ZmenFarbuTvaru(f:TColor); procedure ZmenHrubkuTvaru(h:integer); procedure Pis(const s:string); procedure Vypln(fv:TColor); function Blizko(x,y:real):TKor; property k[i:integer]:TKor read dajKor; property pk:integer read Fpk; end; implementation constructor TVelaKor.Create; begin Fpk:=0; end; destructor TVelaKor.Destroy; var i:integer; begin for i:=0 to Fpk-1 do Fk[i].Free; inherited; end; function TVelaKor.dajKor(i:integer):TKor; begin if (i<0) or (i>=Fpk) then Result:=nil else Result:=Fk[i]; end; procedure TVelaKor.UrobKor; begin UrobKor(TKor.Create); end; procedure TVelaKor.UrobKor(x,y,u:real); begin UrobKor(TKor.Create(x,y,u)); end; procedure TVelaKor.UrobKor(nk:TKor); begin if Fpk>high(Fk) then SetLength(Fk,Length(Fk)+10); Fk[Fpk]:=nk; inc(Fpk); end; procedure TVelaKor.ZrusKor(i:integer); begin if (i>=0) and (ink) do inc(i); ZrusKor(i); end; procedure TVelaKor.Uprac; var i,j:integer; begin j:=0; for i:=0 to Fpk-1 do if Fk[i]<>nil then begin Fk[j]:=Fk[i]; inc(j); end; Fpk:=j; end; //////////////////////////////////////////////////////// procedure TVelaKor.Dopredu(d:real); var i:integer; b:boolean; begin b:=Naraz(true); for i:=0 to Fpk-1 do if Fk[i]<>nil then Fk[i].Dopredu(d); Naraz(b); end; procedure TVelaKor.Vpravo(u:real); var i:integer; b:boolean; begin b:=Naraz(true); for i:=0 to Fpk-1 do if Fk[i]<>nil then Fk[i].Vpravo(u); Naraz(b); end; procedure TVelaKor.Vlavo(u:real); var i:integer; b:boolean; begin b:=Naraz(true); for i:=0 to Fpk-1 do if Fk[i]<>nil then Fk[i].Vlavo(u); Naraz(b); end; procedure TVelaKor.ZmenSmer(u:real); var i:integer; b:boolean; begin b:=Naraz(true); for i:=0 to Fpk-1 do if Fk[i]<>nil then Fk[i].ZmenSmer(u); Naraz(b); end; procedure TVelaKor.ZmenXY(x,y:real); var i:integer; b:boolean; begin b:=Naraz(true); for i:=0 to Fpk-1 do if Fk[i]<>nil then Fk[i].ZmenXY(x,y); Naraz(b); end; procedure TVelaKor.PresunXY(x,y:real); var i:integer; b:boolean; begin b:=Naraz(true); for i:=0 to Fpk-1 do if Fk[i]<>nil then Fk[i].PresunXY(x,y); Naraz(b); end; procedure TVelaKor.PH; var i:integer; b:boolean; begin b:=Naraz(true); for i:=0 to Fpk-1 do if Fk[i]<>nil then Fk[i].PH; Naraz(b); end; procedure TVelaKor.PD; var i:integer; b:boolean; begin b:=Naraz(true); for i:=0 to Fpk-1 do if Fk[i]<>nil then Fk[i].PD; Naraz(b); end; procedure TVelaKor.ZmenPero(nd:boolean); var i:integer; b:boolean; begin b:=Naraz(true); for i:=0 to Fpk-1 do if Fk[i]<>nil then Fk[i].ZmenPero(nd); Naraz(b); end; procedure TVelaKor.ZmenFP(nfp:TColor); var i:integer; b:boolean; begin b:=Naraz(true); for i:=0 to Fpk-1 do if Fk[i]<>nil then Fk[i].ZmenFP(nfp); Naraz(b); end; procedure TVelaKor.ZmenHP(nhp:integer); var i:integer; b:boolean; begin b:=Naraz(true); for i:=0 to Fpk-1 do if Fk[i]<>nil then Fk[i].ZmenHP(nhp); Naraz(b); end; procedure TVelaKor.Ukaz; var i:integer; b:boolean; begin b:=Naraz(true); for i:=0 to Fpk-1 do if Fk[i]<>nil then Fk[i].Ukaz; Naraz(b); end; procedure TVelaKor.Skry; var i:integer; b:boolean; begin b:=Naraz(true); for i:=0 to Fpk-1 do if Fk[i]<>nil then Fk[i].Skry; Naraz(b); end; procedure TVelaKor.ZmenTvar(const obrys:array of real); var i:integer; b:boolean; begin b:=Naraz(true); for i:=0 to Fpk-1 do if Fk[i]<>nil then Fk[i].ZmenTvar(obrys); Naraz(b); end; procedure TVelaKor.ZmenTvar(t:TBitmap); var i:integer; b:boolean; begin b:=Naraz(true); for i:=0 to Fpk-1 do if Fk[i]<>nil then Fk[i].ZmenTvar(t); Naraz(b); end; procedure TVelaKor.ZmenFarbuTvaru(f:TColor); var i:integer; b:boolean; begin b:=Naraz(true); for i:=0 to Fpk-1 do if Fk[i]<>nil then Fk[i].ZmenFarbuTvaru(f); Naraz(b); end; procedure TVelaKor.ZmenHrubkuTvaru(h:integer); var i:integer; b:boolean; begin b:=Naraz(true); for i:=0 to Fpk-1 do if Fk[i]<>nil then Fk[i].ZmenHrubkuTvaru(h); Naraz(b); end; procedure TVelaKor.Pis(const s:string); var i:integer; b:boolean; begin b:=Naraz(true); for i:=0 to Fpk-1 do if Fk[i]<>nil then Fk[i].Pis(s); Naraz(b); end; procedure TVelaKor.Vypln(fv:TColor); var i:integer; b:boolean; begin b:=Naraz(true); for i:=0 to Fpk-1 do if Fk[i]<>nil then Fk[i].Vypln(fv); Naraz(b); end; function TVelaKor.Blizko(x,y:real):TKor; var i:integer; begin i:=Fpk-1; while (i>=0) and ((Fk[i]=nil) or not Fk[i].Blizko(x,y)) do dec(i); if i<0 then Result:=nil else Result:=Fk[i]; end; end.