[ Príspevkov: 14 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 29.05.11
Prihlásený: 29.05.11
Príspevky: 6
Témy: 1 | 1
NapísalOffline : 29.05.2011 12:09 | Ako načítať z Edit-u do Timer-u

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ť.


Offline

Skúsený užívateľ
Skúsený užívateľ
Ako načítať z Edit-u do Timer-u

Registrovaný: 11.01.09
Prihlásený: 18.12.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 29.05.2011 12:35 | Ako načítať z Edit-u do Timer-u

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.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 29.05.11
Prihlásený: 29.05.11
Príspevky: 6
Témy: 1 | 1
Napísal autor témyOffline : 29.05.2011 14:11 | Ako načítať z Edit-u do Timer-u

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...


Offline

Skúsený užívateľ
Skúsený užívateľ
Ako načítať z Edit-u do Timer-u

Registrovaný: 11.01.09
Prihlásený: 18.12.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 29.05.2011 14:30 | Ako načítať z Edit-u do Timer-u

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.


Offline

Užívateľ
Užívateľ
Ako načítať z Edit-u do Timer-u

Registrovaný: 12.10.06
Prihlásený: 18.12.24
Príspevky: 20584
Témy: 79 | 79
Bydlisko: Banska Byst...
NapísalOffline : 29.05.2011 14:32 | Ako načítať z Edit-u do Timer-u

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.


_________________
Ryzen 7 3700X | SilentiumPC Fera 3 | Asrock X570M Pro4 | Kingston FURY 32GB DDR4 3600 MHz CL18 Beast Black | Gainward RTX4060 Ti Pegasus 8GB | Samsung 970evo Plus 250GB NVMe | Corsair MP510 1TB NVMe | Samsung 980 Pro 2TB NVMe | Corsair RM550x | 32" Samsung ViewFinity S60UA | 3x Noctua NF-S12B redux 1200 PWM
Xiaomi 14T 256GB
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 29.05.11
Prihlásený: 29.05.11
Príspevky: 6
Témy: 1 | 1
Napísal autor témyOffline : 29.05.2011 14:48 | Ako načítať z Edit-u do Timer-u

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?


Offline

Skúsený užívateľ
Skúsený užívateľ
Ako načítať z Edit-u do Timer-u

Registrovaný: 11.01.09
Prihlásený: 18.12.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 29.05.2011 14:54 | Ako načítať z Edit-u do Timer-u

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;


Offline

Skúsený užívateľ
Skúsený užívateľ
Ako načítať z Edit-u do Timer-u

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14572
Témy: 66 | 66
Bydlisko: Žilina
NapísalOffline : 29.05.2011 14:59 | Ako načítať z Edit-u do Timer-u

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?)


_________________
C#, PHP, ...
Offline

Skúsený užívateľ
Skúsený užívateľ
Ako načítať z Edit-u do Timer-u

Registrovaný: 11.01.09
Prihlásený: 18.12.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 29.05.2011 15:06 | Ako načítať z Edit-u do Timer-u

Fico píše:
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.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 29.05.11
Prihlásený: 29.05.11
Príspevky: 6
Témy: 1 | 1
Napísal autor témyOffline : 29.05.2011 15:46 | Ako načítať z Edit-u do Timer-u

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.


Offline

Skúsený užívateľ
Skúsený užívateľ
Ako načítať z Edit-u do Timer-u

Registrovaný: 11.01.09
Prihlásený: 18.12.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 29.05.2011 15:59 | Ako načítať z Edit-u do Timer-u

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.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 29.05.11
Prihlásený: 29.05.11
Príspevky: 6
Témy: 1 | 1
Napísal autor témyOffline : 29.05.2011 16:18 | Ako načítať z Edit-u do Timer-u

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 :D

...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


Offline

Skúsený užívateľ
Skúsený užívateľ
Ako načítať z Edit-u do Timer-u

Registrovaný: 11.01.09
Prihlásený: 18.12.24
Príspevky: 1395
Témy: 10 | 10
Bydlisko: Hrinova
NapísalOffline : 29.05.2011 16:25 | Ako načítať z Edit-u do Timer-u

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


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 29.05.11
Prihlásený: 29.05.11
Príspevky: 6
Témy: 1 | 1
Napísal autor témyOffline : 29.05.2011 17:27 | Ako načítať z Edit-u do Timer-u

Diki ide to. ... heh ale ved to je pochopitelne :-D


 [ Príspevkov: 14 ] 


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



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

píše ´u miesto ú...

v Operačné systémy Microsoft

2

490

09.04.2013 8:47

JTB

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie.

ako napisem ů

v Krčma

17

29416

09.05.2011 15:02

Daron

V tomto fóre nie sú ďalšie neprečítané témy.

Winamp, lišta ako u WMP

v Audio programy

2

752

18.10.2008 14:30

Zdravotnik

V tomto fóre nie sú ďalšie neprečítané témy.

ako zmenit zavadzac u ubuntu

v Operačné systémy Unix a Linux

4

836

19.10.2008 13:17

dadmtb

V tomto fóre nie sú ďalšie neprečítané témy.

ako sa zbavit tranformation pack-u

v Ostatné programy

3

423

24.07.2011 19:53

harry44

V tomto fóre nie sú ďalšie neprečítané témy.

Ako hromadne upravit tagy u MP3

v Audio programy

2

1353

16.07.2009 21:14

Horalka

V tomto fóre nie sú ďalšie neprečítané témy.

Ako na zakladne nastavenie BIOS-u

v Intel čipové sady

5

1033

21.12.2011 9:25

KocuR

V tomto fóre nie sú ďalšie neprečítané témy.

Ako sa zbaviť problémových dvojklikov u myší

v Externé zariadenia

9

2070

28.05.2013 18:17

KocuR

V tomto fóre nie sú ďalšie neprečítané témy.

Ako je riešeny zvuk u TV karty ?

v Rozširujúce karty

8

992

26.10.2008 18:40

jutes

V tomto fóre nie sú ďalšie neprečítané témy.

WAN - ako to vlastne u mňa funguje?

v Poskytovatelia internetu

7

442

14.07.2015 12:49

shiro

V tomto fóre nie sú ďalšie neprečítané témy.

Ako naimportovať adresáre /kontakty/ do Gmail-u

v Sieťové a internetové programy

0

532

13.08.2008 20:38

hornet

V tomto fóre nie sú ďalšie neprečítané témy.

Ako preinštalovať Windows, ktorý je v notebook-u

v Notebooky a netbooky

10

3303

16.06.2013 0:19

mesiah

V tomto fóre nie sú ďalšie neprečítané témy.

Ako na win 7 u notebooku Asus M51Ta

v Články

7

2906

27.11.2011 16:15

Qpkqkma

V tomto fóre nie sú ďalšie neprečítané témy.

Ako je to s ovladacmi u SATAII HDD?

v Pevné disky a radiče

10

661

06.09.2007 17:50

Jaro

V tomto fóre nie sú ďalšie neprečítané témy.

V com nahrat k mpg-u mp3 ako podmas?

v Video programy

1

667

07.01.2008 18:56

mimkork

V tomto fóre nie sú ďalšie neprečítané témy.

Ako nastavit velkost pisma vo volbach <select>u

v HTML, XHTML, XML, CSS

2

816

03.03.2011 21:12

johnny04501



© 2005 - 2024 PCforum, edited by JanoF