Informaticasite van het Lauwers College te Buitenpost                 © R.J. van der Beek
 
  Opgaven Delphi   


1.Bij deze opgave gaan we ervan uit dat je het programma, dat besproken wordt in hoofdstuk 1 van Delphi, gemaakt hebt. Dat is het programma waarbij er twee getallen moeten worden ingevoerd. En als er dan op de knop met "Reken uit" wordt geklikt dan wordt de som, het verschil, het product en het quotiënt van die getallen berekend en afgedrukt.
a. Verander het programma zo, dat er op de knop "Geef het antwoord" staat i.p.v. "Reken uit! "
b. Verander de achtergrondkleur van het totale venster in zwart.
Aanwijzing: Je kunt dat invoeren in het propertiesvenster van het hele formulier.
c. Verander het programma zo, dat als g2 nul is, en er wordt op de knop "Reken uit!" geklikt, dat er in de laatste editbox verschijnt: Sukkel, delen door nul is flauwe kul !
d. Verander het programma zo, dat er een knop met "Reset" bij staat, en wel zo dat als je op die knop klikt de tekst uit de editboxen wordt verwijderd.
(aanwijzing : als je tekst uit editbox 1 wilt verwijderen, dan moet je als programmaregel invoeren Edit1.text='';
e. Verander het programma zo dat er in plaats van het label met "quotient" een label met "kleinste" op het scherm komt, en dat er in de textbox daarachter het kleinste van de twee getallen wordt afgedrukt.


2.Een som op het scherm, waarbij het antwoord gecontroleerd wordt
a. Maak een programma waarbij bij het starten een keer-som verschijnt met getallen tussen 5 en 10 (zoiets als 7 x 8 =). En als het antwoord is ingetypt, en er is op enter gedrukt, verschijnt er op een label "Goed zo" als het goed is. En als het fout is, verschijnt er op het label: "Fout, het goede antwoord is ..." met op de stippeltjes natuurlijk het goede antwoord.
b. Maak een programma waarbij bij het starten alleen maar een knop zichtbaar is, waarop staat "Geef een som".
Als je daarop klikt verschijnt er een optelsom met getallen tussen 20 en 30 (zoiets als 27 + 21 =). En als het antwoord is ingetypt, en er is op enter gedrukt, verschijnt er op een label "Goed zo" als het goed is. En de som verdwijnt.
En als het fout is, verschijnt er op het label: "Fout, nog eens", en het antwoord wordt gewist (maar de som blijft staan).
En dan kan er een nieuw antwoord worden ingevoerd.
c. Maak een programma waarbij bij het starten een label staat met "Vertaal in het engels", en daar achter een tekstbox met het woord "tafel".
Daar onder staat een label met "Vertaling:", en daar achter een editbox waarin het antwoord kan worden ingevoerd.
En als het antwoord is ingetypt, en er is op enter gedrukt, verschijnt er op een label "Goed zo" als het goed is. En als het fout is, verschijnt er op het label: "Fout, het goede antwoord is ..." met op de stippeltjes natuurlijk het goede antwoord.
d. Maak een programma waarbij bij het starten een keer-som verschijnt met getallen tussen 5 en 10 (zoiets als 7 x 8 =). En als het antwoord is ingetypt, en er is op enter gedrukt, verschijnt er op een label "Goed zo, je tijd was ..." als het goed is.
Op de stippeltjes verschijnt de tijd (in seconden) die het maken geduurd heeft.
En als het fout is, verschijnt er op het label: "Fout, nog eens", het antwoord wordt gewist en er kan een nieuw antwoord worden ingevoerd.
Aanwijzing:
Als je de volgende opdrachten geeft:
t := TimeToStr(Time); u := StrToInt(copy(t,1,2)); m := StrToInt(copy(t,4,2)); s := StrToInt(copy(t,7,2));
en het is 15:30:04 uur precies, dan heeft u de waarde 15, m de waarde 30 en s de waarde 4.
Als je dan de opdracht: t_in_sec := u*3600 + m*60 + s; geeft dan bevat de variabele t_in_sec het aantal seconden na middernacht.
Je moet de tijd twee keer opnemen : vlak voor er met de som wordt begonnen, en vlak nadat hij af is.
Het verschil is de tijd die er over gedaan is.


3. Werken met een listbox
a. Je gaat in deze opgave een programma maken waarmee je een lijst van namen kunt bijwerken.
Je maakt eerst de interface op de volgende manier:
Zet op het formulier een listbox, een editbox, en daaronder een knop met als opschrift Voegtoe onder de geselecteerde
En zet er nog een knop onder met als opschrift Wijzig de geselecteerde
En nog een knop met als opschrift Verwijder de geselecteerde
Zet in de lijst via het Propertiesvenster van de listbox de namen Jeanet, Tim en Marian



b. Maak het programma uit opdracht 3a zo, dat als je op een naam in de listbox klikt, deze naam ook in de editbox ernaast verschijnt.
c. Maak het programma uit opdracht 3b zo dat als je de naam in de editbox verandert, en je klikt op de voegtoe-onder-geselecteerde-knop, de naam aan de lijst wordt toegevoegd en wel onder de geselecteerde.
d. Maak het programma uit opdracht 3c zo dat als je de naam in de editbox verandert, en je klikt op de wijzig-geselecteerde-knop, de geselecteerde naam in de lijst wordt gewijzigd.
Aanwijzing:
In de listbox kun je een naam niet rechtstreeks wijzigen.
Verwijder daarom de geselecteerde en voeg de gewijzigde naam op die zelfde plaats toe.
e. Maak het programma uit opdracht 3d zo, dat als je een naam aanklikt in de listbox, en je klikt op de verwijder-knop, de naam uit de lijst verwijderd wordt.
f. Maak het programma uit opdracht 3e zo dat als je de naam in de editbox verandert (of een naam invoert), en je drukt op de entertoets, de naam aan de lijst wordt toegevoegd en wel onderaan.


4. Een bestand inlezen, tekst afdrukken in een memobox, listbox of imagebox
a. Maak eerst m.b.v. Kladblok een tekstbestand met minstens vijf regels tekst, sla het op onder de naam PROEF.TXT
Maak dan een programma, waarbij er drie editboxen op het scherm staan, en een knop met "Lees".
Als je op die knop klikt dan wordt de tekst ingelezen, en in de eerste editbox verschijnt dan de eerste regel van het bestand, in de tweede editbox verschijnt de tweede regel van het bestand , en in de derde editbox verschijnt de derde regel van het bestand; de rest van de regels wordt niet ingelezen.
b. Verander het vorige programma zo, dat er in plaats van drie editboxen een Listbox op het formulier staat, en zorg er voor dat de regels in die Listbox getoond worden.
c. Verander het vorige programma zo, dat de naam van het bestand niet moet worden ingevoerd in een editbox, maar zorg er voor dat er een OpenDialoogvenster op het formulier staat en dat het tekstbestand op die manier kan worden uitgekozen.
d. Verander het vorige programma zo, dat er alleen wordt afgedrukt (in de eerste editbox) uit hoeveel regels het bestand bestaat. De inhoud van het bestand wordt dus niet afgedrukt.
e. Maak een programma waarin een label staat met "Tafel van:" en daarachter een editbox waarin een getal getypt moet worden.
Daaronder een imagebox, waarin de tafel van het getal komt dat is ingevoerd in de editbox. Dus als het getal 7 is ingevoerd, dan verschijnt er 1 x 7 = 7 , 2 x 7 = 14 enz. Zet er ook nog een memobox bij, waarin die tafel ook komt.
f. Maak een programma waarin een label staat met "Tafel van:" en daarachter een editbox waarin een getal getypt moet worden.
Daaronder een memobox, waarin de tafel van het getal komt dat is ingevoerd. Dus als het getal 7 is ingevoerd, dan verschijnt er 1 x 7 = 7 , 2 x 7 = 14 enz.
g. Je kunt een tekst laten zien in een imagebox, je kunt er tekst in laten zien maar je kunt ook tekenen in een imagebox.
Maak een programma, waarop een imagebox staat met de naam imgAfdruk
Zet in de TForm1.FormCreate procedure:
imgAfdruk.canvas.lineto(100,200);
imgAfdruk.canvas.ellipse(0,0,100,100);
Je kunt ook de kleuren, de dikte, de opvulkeur enz. bepalen.
Als je dat wilt weten kun je dat opzoeken bij het overzicht van Delphi


5. Beweging
a. Maak een programma waarbij er twee gekleurde labels (in het begin) onder elkaar staan. Ze bewegen beide naar rechts, maar de onderste beweegt twee keer zo snel als de bovenste.
b. Maak een programma waarbij een gekleurd label heel langzaam omlaag beweegt.
c. Maak een programma waarbij een gekleurd label flikkert.
Telkens is het label een halve seconde wel te zien, dan een halve sec. niet, dan weer een halve sec. wel, enz.
Aanwijzing : om en om moet de computer de opdrachten label1.visible := true; en label1.visible := false; uitvoeren.
d. Maak een programma waarbij een gekleurd label in een cirkel beweegt.
Aanwijzing:
Als je een cirkel met middelpunt (200,200) en straal 100 hebt, dan geldt :
x = 200 + 100 * cos(h)
en y = 200 + 100 * sin(h)
waarbij h de draaihoek is.
Neem de hoek h als globale variabele (noem die dus h), en geef h als beginwaarde 0
Die moet je ook nog declareren, en wel als single !
(want een hoek wordt in Delphi in radialen gerekend, in komma-getallen)
Elke keer als de timer afloopt verhoog je de draaihoek een beetje, bijvoorbeeld h :=h + 0.1;
Verder moet de plaats van de linkerrand en de bovenrand van het label berekend worden met de formules hierboven, en worden afgerond op helen.
Dus label1.left := round(200 + 100 * cos(h));
en label1.top := round(200 + 100 * sin(h));
Dat zet je ook in de eventhandler van de timer
e. Maak een programma waarop twee knoppen en een editbox staan.
Op de eerste knop staat: Geef na 1 seconde de datum.
En als je daar op klikt verschijnt na 1 seconde de datum in de editbox, die datum blijft 2 seconden staan en dan wordt hij weer verwijderd.
Op de tweede knop staat: Geef na 2 seconden de tijd.
En als je daar op klikt verschijnt na 2 seconden de tijd in de editbox, die tijd blijft 3 seconden staan en dan wordt hij weer verwijderd.


6. Een bestand wegschrijven.
a. Verander het programma uit opgave 3a zo, dat er een knop op het formulier bij geplaatst wordt waarop "Save" staat.
En wel zo dat als je op die knop klikt de namen uit de listbox in een tekstbestand worden opgeslagen. Zodat je na afloop m.b.v. Kladblok het bestand kunt bekijken.


7. Theorie
a. Je hebt twee editboxen: Edit1 en Edit2, en een opdrachtknop waarop Reset staat.
Als je op die reset-knop klikt dan wordt de tekst uit de beide editboxen verwijderd.
Hoe programmeer je dat in de procedure die hoort bij die reset-knop?
En hoe noem je die programmaregels ook wel?
b. Je hebt drie editboxen: txtGetal1, en txtGetal2 en txtGrootste, en een opdrachtknop waarop Grootste staat.
Als je op die knop klikt dan wordt het grootste van de getallen, die in de beide editboxen txtGetal1 en txtGetal2 staan, afgedrukt in de editbox txtGrootste.
Hoe programmeer je dat in de procedure die hoort bij de grootste-knop?
c. Er staat een label met de naam lblHallo op het scherm, en een knop waarop staat: Verdwijn.
Als je op die knop klikt dan verdwijnt het label.
Hoe programmeer je dat in de procedure die hoort bij die verdwijn-knop?
d. Er staat een editbox met de naam Edit1 op het scherm, en een knop waarop staat: Verbied.
Als je op die knop klikt dan kun je daarna niets meer in de editbox typen.
Hoe programmeer je dat in de procedure die hoort bij die verbied-knop?
e. Je hebt drie editboxen: txtGetal1, txtGetal2 en txtAntwoord, en een opdrachtknop waarop Controleer staat.
In de eerste twee editboxen komen automatisch getallen te staan (dat hoef je nu niet te programmeren). In de derde editbox moet de som van die eerste twee getallen worden ingevuld.
Als je op de controleer-knop klikt dan controleert de computer of het goede antwoord is ingevuld. Als het goed is verschijnt er een messagebox waarin staat: Goed zo, en anders verschijnt er een messagebox waarin staat: Fout!.
Hoe programmeer je dat in de procedure die hoort bij de controleer-knop?
f. Er staat een listbox met de naam lstGetallen op het formulier, en een knop met het opschrift Vul!.
Als je op de vul-knop klikt dan verschijnen de getallen 1 t/m 100 in de listbox.
Hoe programmeer je dat in de procedure die hoort bij de vul-knop?
g. Er staat een listbox met de naam lstLetters op het formulier, en een knop met het opschrift Vul!.
Als je op de vul-knop klikt dan verschijnen de letters a t/m z in de listbox.
Hoe programmeer je dat in de procedure die hoort bij de vul-knop?
h. Er staat een label met de naam lblHallo op het scherm. Hoe kun je er voor zorgen dat dat label langzaam naar rechts opschuift?
Welk object moet je daarvoor gebruiken, en hoe programmeer je dat in de procedure die hoort bij dat object?
i. Je hebt een editbox met de naam Edit1 en een opdrachtknop waarop Save staat. Als je op de Save-knop klikt dan wordt de tekst uit de editbox in het bestand TEST.TXT opgeslagen.
Hoe programmeer je dat in de procedure die hoort bij die save-knop?
j. Er staat een editbox met de naam txtGetal1 op het scherm, en een knop waarop staat: Volgende, en een editbox met de naam txtSom, en een editbox met de naam txtAantal.
Het is de bedoeling dat er een getal in de editbox txtGetal1 wordt getypt. En als je dan op de volgende-knop klikt dan verschijnt de som van de getallen, die tot dan toe zijn ingevoerd, in de editbox txtSom, en het aantal tot dan toe ingevulde getallen in de editbox txtAantal.
Hoe programmeer je dat in de procedure die hoort bij de verder-knop?
k. Wanneer gebruik je een globale variabele. Hoe en waar moet je die declareren?