IT NEWS PC REVUE PC FORUM FreeBSDInternet time: @980
Obsah fóra
Pravidlá  •  Kontakt  •  Prihlásenie  •  Registrácia

Dom na dedine blízko Trnavy

postavený svojpomocne. Dom som poznala z fotografií a architektova navigácia mojdom.zoznam.sk

Hotel Marlene 3*, 99 €/2 os.

2 noci v Oščadnici, využiteľné do 2.9. 99 eur/2 noci/2 osoby- polpenzia, welnes www.setriza3.sk

Jazz v Piešťanoch

Festival Doda Šošoku. Piešťany 1. - 10. 6. 2012. www.jazzpiestany.sk

SW pre domáce účtovníctvo

Majte dokonalý poriadok v osobných financiách a majetku! www.Stormware.sk

Zbavte sa plesne nôh

Vyskúšajte Canesten. Účinne a pohodlne vylieči kožnú mykózu. www.canesten.sk

Ako načítať z Edit-u do Timer-u

Zaslať odpoveď
AutorSpráva
petercvm
Užívateľ
Užívateľ

Založený: 29.05.2011
Príspevky: 6

PríspevokZaslal: Ne 29.05.11 12:09Odpovedať s citátomNávrat hore

Dobrý deň.
Prosím vás potreboval by som poradiť.
Robím program, ktorý zobrazuje obrázky.Využívam pri tom aj Timer. Chcem aby si užívateľ sám zadal, po kolkých sekundách sa majú obrázky zmeniť no neviem ako na to.
Zatial som napísal toto:

var
Form1: TForm1;

implementation
var tm: integer = 0;

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var
V:integer;
begin
Timer1.Enabled:=false;
tm:= tm+1;
V:=StrToInt(Edit1.Text);
if tm = 1 then image1.Picture.LoadFromFile('1.bmp');
if tm = (2*V+1) then image1.Picture.loadfromfile('2.bmp');
if tm = (3*V+1) then image1.Picture.loadfromfile('3.bmp');
if tm = (4*V+1) then image1.Picture.loadfromfile('4.bmp');
if tm = (5*V+1) then image1.Picture.loadfromfile('5.bmp');
if tm = (6*V+1) then image1.Picture.loadfromfile('6.bmp');
if tm = (7*V+1) then close;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
end;

end.




Možno že je to úplne zle, neviem, prosím vás pre to o radu ako to dosiahnuť.
Zobraziť informácie o autoroviOdoslať súkromnú správu
Fico
Skúsený užívateľ
Skúsený užívateľ

Založený: 11.01.2009
Príspevky: 1044

PríspevokZaslal: Ne 29.05.11 12:35Odpovedať s citátomNávrat hore

Ved uz len za riadok:
kód:
V:=StrToInt(Edit1.Text);

pridaj:
kód:
Timer1.Intervar := V * 1000;


Urcite by som ti to ale oporucil este supnut do bloku try/except ak by bolo zadane nespravne cislo.
Zobraziť informácie o autoroviOdoslať súkromnú správuICQ
petercvm
Užívateľ
Užívateľ

Založený: 29.05.2011
Príspevky: 6

PríspevokZaslal: Ne 29.05.11 14:11Odpovedať s citátomNávrat hore

Diki moc ale aj tak mi to nejde ked spustim program tak mi hned vyskoci chyba .... nevedel som ako to mam sem dat tak tu je link co mi vyskoci: http://imageshack.us/photo/my-images/807/chyba.jpg/
Vedel by si mi s tym pomoct?

...no a to co si mi odporucil tak nanestastie neviem ako sa to robi...
Zobraziť informácie o autoroviOdoslať súkromnú správu
Fico
Skúsený užívateľ
Skúsený užívateľ

Založený: 11.01.2009
Príspevky: 1044

PríspevokZaslal: Ne 29.05.11 14:30Odpovedať s citátomNávrat hore

Ved prave to je chyba, ktora vznikne pri konverzii, co si mal obalit do bloku try/except. Nemam po ruke Delphi a uz dlho som v nom nerobil, takze skusim iba tak naslepo:

kód:
var
Form1: TForm1;

implementation
var tm: integer = 0;

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var
V:integer;
begin

    tm:= tm+1;

    try
        V:= StrToInt(Edit1.Text);
    except
        on E:exception do begin
            ShowMessage( 'Neplatne cislo!' );
            Timer1.Enabled := false;
            exit;
        end;
    end;

    Timer1.Intervar := V * 1000;

    if tm = 1 then image1.Picture.LoadFromFile('1.bmp');
    if tm = (2*V+1) then image1.Picture.loadfromfile('2.bmp');
    if tm = (3*V+1) then image1.Picture.loadfromfile('3.bmp');
    if tm = (4*V+1) then image1.Picture.loadfromfile('4.bmp');
    if tm = (5*V+1) then image1.Picture.loadfromfile('5.bmp');
    if tm = (6*V+1) then image1.Picture.loadfromfile('6.bmp');
    if tm = (7*V+1) then close;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    Timer1.Enabled:=true;
end;

end.


Na zaciatku nastav v Object Inspectore Timer1.Enabled na false, ak nemas. Potom po kliknuti na Button1 sa spusti Timer1. Tie if-y si mozes zmenit na prepinac case, bolo by to prehladnejsie a tomu prepinaniu obrazkov som trocha nepochopil ako to riesis, takze som ti do toho nic nemenil.
Zobraziť informácie o autoroviOdoslať súkromnú správuICQ
shiro
Skúsený užívateľ
Skúsený užívateľ

Založený: 12.10.2006
Príspevky: 9625

PríspevokZaslal: Ne 29.05.11 14:32Odpovedať s citátomNávrat hore

taka chyba hodne casto skace, ked program spustis napr. s prazdnym polom na zadavanie a nemas osetrenu vynimku.

A k tomu try/except...delphi ma tak fasa spravenu napovedu aj s prikladmi, ze to musi chapat kazdy.

_________________
AMD Phenom II 955 BE 3.2GHz, 4GB RAM DDR3-1333 A-Data, MB Gigabyte MA-770T-UD3P, Kingston SSDNow V 64GB 2.Gen., WD 640GB + WD 1TB, Gigabyte GeForce GTX275 896MB, 2xDVD+-RW NEC 7173, LCD BenQ G2400Wa 24", MS Wireless optical mouse 2.0A, Keyboard Prestigio, Creative SBS 380 2.1
Zobraziť informácie o autoroviOdoslať súkromnú správu
petercvm
Užívateľ
Užívateľ

Založený: 29.05.2011
Príspevky: 6

PríspevokZaslal: Ne 29.05.11 14:48Odpovedať s citátomNávrat hore

diki moc ... pomohlo to ... a hlavne to, ze som v Object Inspectore nastavil Timer na false ..... ale aj tak mi to nejde dobre - obrazky nehadze

Chcem to proste tak, ze ked si zadam do editu napr 2, tak kazde dve sekundy sa mi zobrazi iny obrazok, a ked prejdu vsetky tak sa program sam ukonci --- pomozete este?
Zobraziť informácie o autoroviOdoslať súkromnú správu
Fico
Skúsený užívateľ
Skúsený užívateľ

Založený: 11.01.2009
Príspevky: 1044

PríspevokZaslal: Ne 29.05.11 14:54Odpovedať s citátomNávrat hore

Jasne, ze pomozeme. To som ti pisal, ze nechapem tomu postupu, ako ich menis. Uprav toto:
kód:
    if tm = 1 then image1.Picture.LoadFromFile('1.bmp');
    if tm = (2*V+1) then image1.Picture.loadfromfile('2.bmp');
    if tm = (3*V+1) then image1.Picture.loadfromfile('3.bmp');
    if tm = (4*V+1) then image1.Picture.loadfromfile('4.bmp');
    if tm = (5*V+1) then image1.Picture.loadfromfile('5.bmp');
    if tm = (6*V+1) then image1.Picture.loadfromfile('6.bmp');
    if tm = (7*V+1) then close;

na toto:
kód:
    if tm = 1 then image1.Picture.LoadFromFile('1.bmp');
    if tm = 2 then image1.Picture.loadfromfile('2.bmp');
    if tm = 3 then image1.Picture.loadfromfile('3.bmp');
    if tm = 4 then image1.Picture.loadfromfile('4.bmp');
    if tm = 5 then image1.Picture.loadfromfile('5.bmp');
    if tm = 6 then image1.Picture.loadfromfile('6.bmp');
    if tm = 7 then begin
        Timer1.Enabled := false;
        tm := 0;
        exit;
    end;
Zobraziť informácie o autoroviOdoslať súkromnú správuICQ
walther
Užívateľ
Užívateľ

Založený: 24.01.2008
Príspevky: 10194
Bydlisko: Bratislava
Vek: 24

PríspevokZaslal: Ne 29.05.11 14:59Odpovedať s citátomNávrat hore

s delphi nerobím, ale jedna vec mi nedá pokoj - prečo Fico neodporúčaš použiť "else if"? Alebo ešte lepšie "switch", keďže tento príklad si o to priam žiada...? V teórii by mali byť oba prípady rýchlejšie ako toto.. (jasné, možno v tomto konkrétnom prípade by to bolo zanedbateľný zisk, ale nie je lepšie sa to naučiť raz a poriadne?)
Zobraziť informácie o autoroviOdoslať súkromnú správu
Fico
Skúsený užívateľ
Skúsený užívateľ

Založený: 11.01.2009
Príspevky: 1044

PríspevokZaslal: Ne 29.05.11 15:06Odpovedať s citátomNávrat hore

Fico napísal:
Tie if-y si mozes zmenit na prepinac case, bolo by to prehladnejsie a tomu prepinaniu obrazkov som trocha nepochopil ako to riesis, takze som ti do toho nic nemenil.


Nenapisal som mu presnu syntax, lebo som si nebol isty, aka je - som "preuceny" na C syntax.
Zobraziť informácie o autoroviOdoslať súkromnú správuICQ
petercvm
Užívateľ
Užívateľ

Založený: 29.05.2011
Príspevky: 6

PríspevokZaslal: Ne 29.05.11 15:46Odpovedať s citátomNávrat hore

Obrazky vsak stale nejdu same od sema .... ked vsak klikam na tlacidlo po hodne dlhej chvili sa zmenia ... ale naozaj musim dost dlho klikat .... neviete co by s tym mohlo byt ?

Tu je cely zdrojovy ako ho mam:

var
Form1: TForm1;

implementation
var tm: integer = 0;

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var
V:integer;
begin
Timer1.Enabled:=false;
tm:= tm+1;
try
V:= StrToInt(Edit1.Text);
except
on E:exception do begin
ShowMessage( 'Neplatne cislo!' );
Timer1.Enabled := false;
exit;
end;
end;
Timer1.Interval := V * 1000;
if tm = 1 then image1.Picture.LoadFromFile('1.bmp');
if tm = 2 then image1.Picture.loadfromfile('2.bmp');
if tm = 3 then image1.Picture.loadfromfile('3.bmp');
if tm = 4 then image1.Picture.loadfromfile('4.bmp');
if tm = 5 then image1.Picture.loadfromfile('5.bmp');
if tm = 6 then image1.Picture.loadfromfile('6.bmp');
if tm = 7 then begin
Timer1.Enabled := false;
tm := 0;
exit;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=true;
end;

end.
Zobraziť informácie o autoroviOdoslať súkromnú správu
Fico
Skúsený užívateľ
Skúsený užívateľ

Založený: 11.01.2009
Príspevky: 1044

PríspevokZaslal: Ne 29.05.11 15:59Odpovedať s citátomNávrat hore

1.) Videl si niekde v mojom kode, aby som ti tam dal do tela timer-u, aby sa ti hned po starte vypol?
kód:
procedure TForm1.Timer1Timer(Sender: TObject);
var
    V:integer;
begin
    Timer1.Enabled:=false;

Cize odstran riadok Timer1.Enabled:=false; a pozri si este raz pozornejsie, ako som ti to napisal predtym.

2.) Ked vkladas nejaky kod tu na forum, tak ho cely oznac a hore na paneli mas znacku "code", klikni na nu aby bol kod lepsie citatelny.
Zobraziť informácie o autoroviOdoslať súkromnú správuICQ
petercvm
Užívateľ
Užívateľ

Založený: 29.05.2011
Príspevky: 6

PríspevokZaslal: Ne 29.05.11 16:18Odpovedať s citátomNávrat hore

Aha dakujem skusim to .... to som mal ja najprv tak spravene no potom som to musel v objectinpexctore vypat a zabudol som to dat prec ... vdaka za radu budem to tak robit

// pridané po 16 minútach od posledného príspevku

diki moc uz to slape jak hodinky

...este by som mal jednu otazku ... mam jeden Form na nom edit a tlacitko. do editu si zadam nejaku hodnotu. Ked kliknem na tlacitko tak sa mi vyvola druhy Form. na nom mam dalsie tlacitko, pod ktorym mam uz program. ako mam urobit aby si program zobral hodnotu z editu, ktory je na prvom Form-e?? Da sa to vobec nejako? alebo ten edit musim mat len na tom forme kde mam aj tlacitko s programom
Zobraziť informácie o autoroviOdoslať súkromnú správu
Fico
Skúsený užívateľ
Skúsený užívateľ

Založený: 11.01.2009
Príspevky: 1044

PríspevokZaslal: Ne 29.05.11 16:25Odpovedať s citátomNávrat hore

Jasne, da sa to. Do uses jednoducho pridaj unit s druhym formularom, teda napr sme v Unit2:
kód:
uses Form1;

a potom snim pracuj napr takto:
kód:
procedure TForm2.Button1Click(Sender: TObject);
var
   nejake_data: string;
begin
    nejake_data := Form1.Edit1.Text;
end;


Nieco podobne sa riesilo tu, mrkni na to:
http://www.pcforum.sk/post-vp1035469.html#1035469
Zobraziť informácie o autoroviOdoslať súkromnú správuICQ
petercvm
Užívateľ
Užívateľ

Založený: 29.05.2011
Príspevky: 6

PríspevokZaslal: Ne 29.05.11 17:27Odpovedať s citátomNávrat hore

Diki ide to. ... heh ale ved to je pochopitelne
Zobraziť informácie o autoroviOdoslať súkromnú správu
Zobraziť príspevky z predchádzajúcich:    
Zaslať odpoveď
Nemôžete pridávať nové témy do tohto fóra.
Nemôžete odpovedať na témy v tomto fóre.
Nemôžete upravovať svoje príspevky v tomto fóre.
Nemôžete mazať svoje príspevky v tomto fóre.
Nemôžete hlasovať v tomto fóre.

Powered by phpBB 2.x.x © 2005 - 2012 PCforum, webhosting by WebSupport, edited by JanoF

SEO - optimalizácia pre vyhľadávače

Freebsd