uses VenomGFX,Wokna32,Nadwokna,fnfont3,Tedradky,Vaznik,woknadef,lacrt,disk,dos,rezklav,clanky;
{$include DEFINES.INC}

var oldexitproc:pointer;

Procedure MyExitProc;
begin
if ErrorAddr<>nil then
   begin
   Kill_Graph;
   ExitProc:=@OldExitProc;
   end else ExitProc:=OldExitProc;
end;


const pole:array[1..28] of string = ('skoda',
                                   'ford',
                                   'honda',
                                   'hyunday',
                                   'opel',
                                   'peugeot',
                                   'alfa romeo',
                                   'renault',
                                   'porsche',
                                   'lada',
                                   'citroen',
                                   'bmw',
                                   'mercedes',
                                   'kia',
                                   'toyota',
                                   'mitsubishi',
                                   'ferrari',
                                   'fiat',
                                   'dacia',
                                   'trabant',
                                   'wartburg',
                                   'moskvic',
                                   'subaru',
                                   'seat',
                                   'mazda',
                                   'chevrolet',
                                   'volvo',
                                   'audi');


      zvirata:array[1..9] of string = ('vazka',
                                      'medved',
                                      'üejnok',
                                      '<BARVA=*;KLAVESY=h;>h<SB>lemyzd',
                                      'vlastovka',
                                      '<POZADI_OKOLI=2222>pes',
                                      'koza',
                                      'ropucha',
                                      'zelva');

type tmojeokno_s_tlacitky = object(tokno_s_tlacitky)
     Constructor Init(ix,iy:longint;titulek:string;tlacitka:string);
     Procedure Akce(var i:longint);virtual;
     Procedure DoplnListu;virtual;
     Procedure UmazListu;virtual;
     Procedure UkazStatus;virtual;
     Procedure ObnovText;virtual;
     Destructor Done;virtual;
     end;


Constructor tmojeokno_s_tlacitky.Init(ix,iy:longint;titulek:string;tlacitka:string);
begin
inherited init(ix,iy,titulek,tlacitka);
end;

Destructor tmojeokno_s_tlacitky.Done;
begin
inherited done;
end;

Procedure tmojeokno_s_tlacitky.DoplnListu;
var s:string;
    t:^string;
    l:PLista;
    z:PTExtovepole_a_Seznam;
begin
l:=Retez^.uzel_s_vyznamem(101)^.vazba;
z:=Retez^.uzel_s_vyznamem(100)^.vazba;
s:=z^.VratTextovouHodnotu;
t:=@s;
l^.PridejPrvek(t,l^.prvky^.pocet+1,true,true);
l^.zobraz;
end;

Procedure tmojeokno_s_tlacitky.UmazListu;
var l:PLista;
    t:TTlacitko;
    i:longint;
begin
l:=Retez^.uzel_s_vyznamem(101)^.vazba;


i:=l^.prvky^.Kolikaty_ve_vazniku(l^.hodnota);
l^.UberPrvek(i,i-1);
l^.Zobraz;
end;

Procedure tmojeokno_s_tlacitky.obnovtext;
var s:PPasivniTextovePole;
    l:PLista;
begin
l:=Retez^.uzel_s_vyznamem(101)^.vazba;
s:=Retez^.uzel_s_vyznamem(103)^.vazba;
s^.VlozHodnotu(l^.VratHodnotu_string);
s^.Zobraz;
end;

Procedure tmojeokno_s_tlacitky.UkazStatus;
var h:PPrepinace;
begin
h:=Retez^.uzel_s_vyznamem(105)^.vazba;
OKokno('Hodnota zatrzitek',h^.VratHodnotu);
end;

Procedure tmojeokno_s_tlacitky.Akce(var i:longint);
begin
if i=100 then DoplnListu else
if i=101 then ObnovText else
if i=102 then UmazListu else
if i=108 then UkazStatus;
end;

Procedure UkazSeznam;
var t:tmojeokno_s_tlacitky;
    z:PTExtovepole_a_Seznam;
    l:PLista;
    p:PVaznik;
    r:PVaznik;
    q:PTlacitko;
    s:PPasivniTextovePole;
    h:PPrepinace;

begin
p:=PoleNaVaznik(pole);
r:=PoleNaVaznik(zvirata);

t.Init(NA_STRED,NA_STRED,'Seznam',' <BARVA=*;KLAVESY=o$;VYZNAM=-1>O<SB>K ');
t.Roztahni(300,300);

t.Pridej(New(PTextovepole_a_Seznam,Init(t.x+10,t.y+100,140,200,p,p^.Uzel(4),100)));
t.Pridej(New(PTlacitko,Init(t.x+170,t.y+100,'smaz',0,0,102)));
t.Pridej(New(PTlacitko,Init(t.x+210,t.y+100,'ukaz',0,0,108)));
t.Pridej(New(PLista,Init(t.x+3,t.y+30,t.sirka-6,50,r,101)));

l:=t.Retez^.uzel_s_vyznamem(101)^.vazba;

t.Pridej(New(PPasivniTextovePole,Init(t.x+170,t.y+130,100,l^.VratHodnotu_string,103)));

h:=New(PPrepinace,Init(t.x+15,t.y+150,
         '<POZADI_OKOLI=5435>prva'#13#10'druha'#13#10'treti'+#9+
         'ctvrta'#13#10'pata'+#9+
         'sesta', 4,105));
h^.BB_zat_v:=544;
t.Pridej(h);

t.Zobraz;
t.Run;
t.Done;
end;



Function MojeTlacitkoveOkno(titulek:string;s,t:string):byte;
var o:PHyperOkno;
    zdroj:PDpole;
begin
zdroj:=Nacti_Data(s);
o:=New(PHyperOkno,Init(NA_STRED,NA_STRED,cil^.breite-140,cil^.hoehe-20,
                       titulek,zdroj,t,0));


o^.Zobraz;
o^.Run;
Dispose(o,Done);
end;


Procedure DebugOkno(s:string);
begin
Okokno('Debug',s);
end;

var f:Pfont;
    s,s2:string;
    t:string;
    i,j:longint;
    p,p2:PVaznik;
    q,q2:PItRadek;
    d:TVyrez;
    v:virtualwindow;
    k:TOkno_s_tlacitky;
    h:TProstyText;
    tl:ttlacitko;

begin
OldExitProc:=ExitProc;
ExitProc:=@MyExitProc;





FN_color:=65535;
ObvyklyStart;
Dego:=@DebugOkno;


i:=load_BMP('d:\tp\projekty\wokna32\vwdemo.bmp',v);

vwokno(350,350,'pokus',@v);


{init_graph(find_mode(640,480));
FontAdr('.\fonty\');      }



FN_color:=0;


{i:=NamixujBarvu('pokus',4000);}


{debug;}

{Listbox_retezcovy(350,350,'pokus',DvojListBox('pokus',500,400,p,p2,1),false);}

{UkazSeznam;}


{s:='rezklav.pas';
s:='copying';}



{infokno(NA_STRED,NA_STRED,'Tak podle nasi miry'#13#10'vypili jsme malo');}

{anoneokno('Tak podle nasi miry'#13#10'vypili jsme malo');}

{VlozTextOkno('pokus',300,'default');}

{VyberSouborOkno('pokus','*.*','',400,0);}

(*MojeTlacitkoveOkno('pokus','text2.txt','uvod'{'popis_stavby2'});*)

{s:=VyberSouborOkno('Nacti soubor','*.*','',400,0);}


s:='Tak podle nasi miry vypilo se malo.';


{OKokno('!',s);}

{Listbox_retezcovy(400,300,'pokus',p,false);}

{VyberSouborOkno('Vyber soubor','*.*','',400,2);}

(*
s:='admin';
s2:='heslo';
JmenoHesloOkno(200,'pokus','Uzivatelske jmeno','Heslo',{'admin'}s,{'heslo'}s2);
okokno('jmeno a heslo','jmeno: '+s+#13#10+'heslo: '+s2);
*)

{Load_PCX('hermanek.pcx',v);

VWOkno(400,400,'pokus',@v);}


kill_graph;
ObvyklyKonec;
end.
