Lazarus-l írt programban hogyan kell megcsinálni, hogy enter lenyomására folytatódjon a program -ne kelljen mindig egy start nyomógombot használni?
Erről a programról van szó:
*****
A programban ha az Intit gombra kattintva ad egy idegenszót és azt kell megválaszolni(v forditva)....
Ne keljen mindig egyet kattintani a z Indít nyomógombra (BtnStart.TButton)egy válasz után,hanem elég lenne csak enterezni és egy új szavat dobna a válasz után.
* Automatikusan eltávolított tartalom.
Például így:
Néhány sort hozzáírtam a TForm1.EValaszKeyPress elejéhez
Volt hasonló kérdésed arra is én válaszoltam, miért nem reagáltál semmit? Értettem vagy nem értem, hogy ... vagy ...
Nem rosszindulatból írtam egy szót sem.
Az előzőre visszatérve:
nem én írtam a programot.Volt valaki annyira rendes,hogy írt egyet pascalban.
Aztán valaki megírta Lazarussal is.
Viszont próbálkoztam rájönni erre az indító gombra és amit műveltem ott az el lett mentve és felül írta a többit is (biztonsági másolatot talán amit másoltam).
letöltöttem újból,de nincs benne exe fájlt. Lefuttattam a zöld play gombot,de nem csak üres ablakot ad az exe fájl ha lefuttatom. (tökre szét van rontva a programom már )
Próbálkoztam azzal is,ha rossz választ adok meg akkor a helytelen válasz mellett egy új címke mutassa a jó megoldást és ha helyesen feleltem akkor kitörlődött az előző feladatból a megoldás (egy üres caption használtam oda). Ez működött is,de csak ha sorban haladva módba működött a helyesen. Ha randomban már random szót adott meg megoldásnak. Próbáltam hogy egy longint felveszi a random értékét és azt megjeleníteni helytelen válasz esetén,de nem sikerült. De több fajta képen is próbáltam,hogy jól működjön de nem sikerült.
Sajnos nem tudom most kipróbálni amit belinkeltél,mert tisztára elromlott a program. Ha még meg van neked amit írtál feltudnád tölteni létszíves?
(Mentek a zöld mancsok (Y))
Átírtam enterKovAllapot boolean változó bevezetésével, elegánsabb.
Ide feltöltöttem: *****
* Automatikusan eltávolított tartalom.
* Automatikusan eltávolított tartalom.
"próbálkoztam azzal is,ha rossz választ adok meg akkor a helytelen válasz mellett egy új címke mutassa a jó megoldást és ha helyesen feleltem akkor kitörlődött az előző feladatból a megoldás (egy üres caption használtam oda). Ez működött is,de csak ha sorban haladva módba működött a helyesen.
Ha randomban már random szót adott meg megoldásnak. Próbáltam hogy egy longint felveszi a random értékét és azt megjeleníteni helytelen válasz esetén,de nem sikerült. De több fajta képen is próbáltam,hogy jól működjön de nem sikerült. "
Valahogy így próbáltam megoldani:
" TRUE: if Adatbazis.Names[rnd] <> EValasz.Text then "
deklaráltam egy pl. sam:longint;
sam:=Adatbazis.Names[rnd];
if sam<>EValasz.Text then
Jó helyen keresgetek...valahogy így kéne? (nem akarom szétrontani ezt a programot is,azért inkább nem probalom elmenteni aztan lefutatni)
megj.:
A program jól megy,nagyon szépen köszönöm!!
Megj.:
Próbálkoztam át írni,megpróbálni a randomban is működjön,hogy kiírja rossz válasz esetén a jó választ.
Valamint azt,ha egy szóra helyesen válaszolok akkor a programban egy skálázó felugrik egyet(Common Controls nál lehet berakni ilyen loading ábra TProggresBar vagy TTrackBar). Ezt az előzökben megtudtam csinálni,de csak az összes szóra vonatkozóan,úgy ha helyes válasznál +1 adok a pedig -1-t a skálához.
Ezt is szeretném,hogy ha arra a bizonyos szóra ha helyesen válaszolok akkor annál menjen fel a skála...új szót dob ki a program nullázodik a skála ...szóval minden egyes szónak lenne egy skálája amit megjegyez a program. Három alkalommal kéne jól válaszolnom a szóra és többet nem adná ki azt a szót,hanem csak olyanokat adna amire még nem válaszoltam háromszor.
Ezt hogyan lehetne megoldani? Ezt a txt fileban kéne a szavak elé egy számot beírni,hogy tudja melyik szónál hányszor válaszoltam jól?
De ez tényleg már csak a legutolsó helyen áll....ennél fontosabb nekem most,hogy ha randomban adok rossz választ akkor is kitegye a jó megoldást-mivel így könnyebben eszembe megy a szó,ha látom mi lett volna a helyes.
"deklaráltam egy pl. sam:longint;
sam:=Adatbazis.Names[rnd];
if sam<>EValasz.Text then
Jó helyen keresgetek...valahogy így kéne?"
NEM. Értékül akarsz adni egy longint változónak egy stringet? Pascal-ba/lazarus-ba nem lehet össze sem hasonlítani hogy egyenlő egy string egy longint-al. Ha lehetne is akkor is józan paraszti ésszel sosem lehet egyenlő, más halmazból vehetnek fel értékeket.
"Ezt is szeretném,hogy ha arra a bizonyos szóra ha helyesen válaszolok akkor annál menjen fel a skála...új szót dob ki a program nullázodik a skála ...szóval minden egyes szónak lenne egy skálája amit megjegyez a program. Három alkalommal kéne jól válaszolnom a szóra és többet nem adná ki azt a szót,hanem csak olyanokat adna amire még nem válaszoltam háromszor.
Ezt hogyan lehetne megoldani? Ezt a txt fileban kéne a szavak elé egy számot beírni,hogy tudja melyik szónál hányszor válaszoltam jól? "
Szoktam volt mondani, ha kerti budi programot csinálsz akkor neki lehet esni megcsinálni majd csak jó lesz. Mint ahogy csak egy kerti budit építesz ahhoz nem kell alaprajz, mérnöki statikai számítások, de ha egy nagy épületet ahhoz kell, nem lehet az hogy Józsi itt ássál sac per kábé ... összeomlik az épület. Ennek analógiájára van a szoftverfejlesztés is.
El kéne dönteni hogy mit kéne tudnia a programnak,ezt átgondolni,megtervezni, ennek megfelelően megfelelő módon ábrázolni, elmenteni az adatokat, későbbi fejlesztésekre előre gondolni. Megfelelő kompromisszumokkal karbantartható kód kell. Absztrakt adattípusok bevezetése, egyéb absztrakciós szintek (egységbezárás ,öröklődés ...). Szoftverfejlesztési modell(ek)t kéne alkalmazni.
Ez a program "neki lehet esni megcsinálni" típusú módszerrel van fejlesztve vagyis egyszerűbb előről kezdeni mint komolyabb funkciókat belerakni.
"De ez tényleg már csak a legutolsó helyen áll....ennél fontosabb nekem most,hogy ha randomban adok rossz választ akkor is kitegye a jó megoldást-mivel így könnyebben eszembe megy a szó,ha látom mi lett volna a helyes."
Azt hogy kiírja, a rossz válasz esetén a jó választ rakj be egy új JovalaszLabel nevű TLabelt-t amire írod a jó választ ha kell:
Az első helyen ahol "Label2.Caption:='Helytelen válasz!'" van alá JovalaszLabel.Caption:=Adatbazis.Names[rnd]
meg az összes többi helyen értelem szerűen. BtnStartClick-hez meg Label2.Caption:='' (Tiszta gányolás, de nincs elegáns megoldás.)
Örülj neki ami eddig meg van, még összekevered a longint-ot a string-el, komoly hiányosságaid vannak. Egyszerűbb feladatokat próbálj megoldani!
Azt esetleg megtudnád mondani,ha mentek valmit a programban és megynitok egy újat akkor abban az a mentés megmarad. Pedig egy zip fájból csomagoltam ki az újat és a programban az open -l kerestem ki az elérési útját ?!
Lehet rosszul mentek:
1. save all
2. ramegyek a zold play gombra
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!