mijn eerste GUI kan iemand helpen?

Nieuwe Liberty BASIC programmeurs kunnen hier om hulp vragen.

Moderators: anthonio, Abcott

mijn eerste GUI kan iemand helpen?

Berichtdoor pinda_kaas » zo feb 27, 2011 2:21 pm

Hallo iedereen,

Ik (ja staat on beleeft sorry) wil voor het eerst een programmaa met een GUI maken (gebruikersinterface) ik heb een paar dingen nodig.

vraag 1:

Hoe maak je een invoer vak

vraag 2:

hoe maak je een button en er voor zorgt dat die button de gegevens van het invoervak opvraag? (kan de tekst op een button varieel zijn)

vraag 3:

hoe laat je iets op het scherm printen?
dus wat in het mainwin met print ging hoe doe je dat?

wat ik nu heb:

Code: Selecteer alles
nomainwin
MENU #1, "&Bestand", "&Sluiten", [sluit]
 open "Reken progamma" for Window AS #1
 print #1, "trapclose [sluit]"
wait


[sluit]
close #1


pinda_kaas
 
Berichten: 19
Geregistreerd: di mei 25, 2010 8:45 am

Re: mijn eerste GUI kan iemand helpen?

Berichtdoor Gordon » zo feb 27, 2011 3:52 pm

Hallo Pinda_kaas,

Run het programma Freeform.bas
Dat programma is meegeleverd met LB. Met dat programma kun je met de
muis en wat knippen en plakken je GUI inrichten.
Natuurlijk kun je gewoon je GUI programmeren.

Plaats een invoer-knop (button) en een invoer-veld (textbox) voor het
te openen venster. Jouw venster heeft als handle (naam) #1

Een voorbeeld:
Code: Selecteer alles
nomainwin

MENU #1, "&Bestand", "&Sluiten", [sluit]
textbox #1.t, 20,20, 100,25
button #1.b, "invoer", [invoer], ul, 20,120
open "Reken progamma" for Window AS #1
print #1, "trapclose [sluit]"
wait

[sluit]
close #1
end

[invoer]
#1.t "!contents? a$"
notice a$
wait


Gordon

p.s. Let op, ik heb ook een
commando end
onder het label [sluit] geplaatst.
Avatar gebruiker
Gordon
Site Admin
 
Berichten: 684
Geregistreerd: zo mei 22, 2005 12:50 am

Re: mijn eerste GUI kan iemand helpen?

Berichtdoor pinda_kaas » ma feb 28, 2011 7:48 pm

Gordon bedankt,

Ik heb je code gebruikt en heb nu dit:
maar ik heb nu 2 texboxen waar je iets in kan tikken maar daar tussen wil ik een plus (+) teken hebben hoe kan je dat laten zien?
Code: Selecteer alles
nomainwin

MENU #1, "&Bestand", "&Sluiten", [sluit]

textbox #1.t, 20,20, 100,25
textbox #1.r, 200,20, 100,25
button #1.b, "invoer", [invoer], ul, 20,120
open "Reken progamma" for Window AS #1
print #1, "trapclose [sluit]"
wait

[sluit]
close #1
end

[invoer]
#1.t "!contents? a$"
#1.r "!contents? b$"
som1 = val(a$)
som2 = val(b$)
notice som1 + som2
wait

pinda_kaas
 
Berichten: 19
Geregistreerd: di mei 25, 2010 8:45 am

Re: mijn eerste GUI kan iemand helpen?

Berichtdoor Gordon » ma feb 28, 2011 10:15 pm

Code: Selecteer alles
nomainwin

MENU #1, "&Bestand", "&Sluiten", [sluit]

textbox #1.t, 20,20, 100,25
textbox #1.r, 200,20, 100,25
button #1.b, "invoer", [invoer], ul, 20,120

statictext #1.st,"+", 150,20, 30,30
textbox #1.antw, 120, 200, 100,25

open "Reken progamma" for Window AS #1
print #1, "trapclose [sluit]"
#1.antw "!hide"
wait

[sluit]
close #1
end

[invoer]
#1.t "!contents? a$"
#1.r "!contents? b$"
som1 = val(a$)
som2 = val(b$)
notice som1 + som2
#1.antw "!show"
#1.antw val(a$)+val(b$)
wait




Ik heb een STATICTEXT geplaatst en
een extra TEXTBOX geplaatst. Die heb ik in eerste instantie
verborgen met de functie !hide

Gordon
Avatar gebruiker
Gordon
Site Admin
 
Berichten: 684
Geregistreerd: zo mei 22, 2005 12:50 am

Re: mijn eerste GUI kan iemand helpen?

Berichtdoor pinda_kaas » di maart 01, 2011 3:06 pm

Gordon bedankt,

Ik ben nu bezig een keer stadum te maken met #2 en dan moet #1 afsluiten maar het werkt niet:


Code: Selecteer alles
nomainwin

[plus]
MENU #1, "&Bestand", "&Info", [extra], "&Sluiten", [sluit]
MENU #1, "&Reken", "&Keer", [keer], "&Min", [min]
textbox #1.t, 20,20, 100,25
textbox #1.r, 200,20, 100,25

statictext #1.st,"+", 150,20, 30,30
statictext #1.st2,"=", 150,50, 30,30
button #1.b, "invoer", [invoerplus], ul, 20,120
open "Reken progamma" for Window AS #1
print #1, "trapclose [sluit]"
wait

[sluit]
close #1
end

[invoerplus]
#1.t "!contents? a$"
#1.r "!contents? b$"
som1 = val(a$)
som2 = val(b$)
uitkomst$ = str$(som1 + som2)
'statictext #1.st3,uitkomst$, 150,70, 30,30
notice uitkomst$

wait

[extra]

notice "Copyright 2011 Koen Keijzer"
wait

[keer]
close #1
MENU #2, "&Bestand", "&Info", [extra], "&Sluiten", [sluit]
MENU #2, "&Reken", "&Keer", [keer], "&Min", [min]
textbox #2.t, 20,20, 100,25
textbox #2.r, 200,20, 100,25

statictext #2.st,"x", 150,20, 30,30
statictext #2.st2,"=", 150,50, 30,30
button #2.b, "invoer", [invoerkeer], ul, 20,120
open "Reken progamma" for Window AS #1
print #2, "trapclose [sluit]"
wait


[invoerkeer]
#2.t "!contents? c$"
#2.r "!contents? d$"
som1 = val(c$)
som2 = val(d$)
uitkomst$ = str$(som1 + som2)
'statictext #1.st3,uitkomst$, 150,70, 30,30
notice uitkomst$

wait

[min]
wait
pinda_kaas
 
Berichten: 19
Geregistreerd: di mei 25, 2010 8:45 am

Re: mijn eerste GUI kan iemand helpen?

Berichtdoor Gordon » di maart 01, 2011 9:57 pm

Hallo Koen,

Er is een bug in jouw programma.
Tot en met het label
[keer]
gaat alles goed.
close #1 'hiermee sluit het eerstye venster is ook goed.

Dan open je helaas weer een nieuw venster #1 in plaats van #2.
Terwijl je alle controls #2 enz. noemt.

Ik zou gewoon één venster gebruiken.
Maar misschien programmeer je telkens een
onderwerp in een venster.

Gordon
Avatar gebruiker
Gordon
Site Admin
 
Berichten: 684
Geregistreerd: zo mei 22, 2005 12:50 am

Re: mijn eerste GUI kan iemand helpen?

Berichtdoor pinda_kaas » wo maart 02, 2011 7:38 pm

Gordon schreef:Hallo Koen,

Er is een bug in jouw programma.
Tot en met het label
[keer]
gaat alles goed.
close #1 'hiermee sluit het eerstye venster is ook goed.

Dan open je helaas weer een nieuw venster #1 in plaats van #2.
Terwijl je alle controls #2 enz. noemt.

Ik zou gewoon één venster gebruiken.
Maar misschien programmeer je telkens een
onderwerp in een venster.

Gordon


in het progje is het venster plus daar start je ook mee dan kan je naar keer gaan en dan sluit plus af (dat zou moeten) en in keer maak je keer sommen en in plus plus sommen
pinda_kaas
 
Berichten: 19
Geregistreerd: di mei 25, 2010 8:45 am

Re: mijn eerste GUI kan iemand helpen?

Berichtdoor pinda_kaas » wo maart 02, 2011 8:17 pm

Kan je ook een de uitkomst niet in een notice maar op het scherm laten weergenven als de x en de =
pinda_kaas
 
Berichten: 19
Geregistreerd: di mei 25, 2010 8:45 am

Re: mijn eerste GUI kan iemand helpen?

Berichtdoor Gordon » do maart 03, 2011 5:43 pm

pinda_kaas schreef:Kan je ook een de uitkomst niet in een notice maar op het scherm laten weergenven als de x en de =


Natuurlijk.

Maak vooraf een statictext box. Dus voor dat je het venster opent

Code: Selecteer alles
statictext #2.st3,"", 120,200, 100,30


en dan natuurlijk de regels:
notice uitkomst$

en

textbox #1.antw, 120, 200, 100,25
weglaten of rem statement ervoor plaatsen.

In het stuk waar het antwoord op het scherm moet komen
dan nog even
#2.st3 uitkomst$

Gordon.
Avatar gebruiker
Gordon
Site Admin
 
Berichten: 684
Geregistreerd: zo mei 22, 2005 12:50 am

Re: mijn eerste GUI kan iemand helpen?

Berichtdoor pinda_kaas » do maart 03, 2011 8:31 pm

Ik ben bezig met de min maar daar komen ook weer veel bugs


Code: Selecteer alles
    nomainwin

    [plus]
    p = 1
    k = 0
    d = 0
    m = 0
    MENU #1, "&Bestand", "&Info", [extra], "&Sluiten", [sluit]
    MENU #1, "&Reken", "&Keer", [keer], "&Min", [min]
    textbox #1.t, 20,20, 100,25
    textbox #1.r, 200,20, 100,25
statictext #1.st3,"", 120,200, 100,30
    statictext #1.st,"+", 150,20, 30,30
    statictext #1.st2,"=", 150,50, 30,30
    button #1.b, "invoer", [invoerplus], ul, 20,120
    open "Reken progamma" for Window AS #1
    print #1, "trapclose [sluit1]"
    wait

    [sluit1]
    close #1
    end

    [invoerplus]
    #1.t "!contents? a$"
    #1.r "!contents? b$"
    som1 = val(a$)
    som2 = val(b$)
    uitkomst$ = str$(som1 + som2)
    'statictext #1.st3,uitkomst$, 150,70, 30,30
   ' notice uitkomst$
    #1.st3 uitkomst$
    wait

    [extra]

    notice "Copyright 2011 Koen Keijzer"
    wait

    [keer]
    p = 0
    k = 1
    d = 0
    m = 0
    close #1
    MENU #2, "&Bestand", "&Info", [extra], "&Sluiten", [sluit]
    MENU #2, "&Reken", "&Keer", [keer], "&Min", [min]
    textbox #2.t, 20,20, 100,25
    textbox #2.r, 200,20, 100,25
statictext #2.st3,"", 120,200, 100,30
    statictext #2.st,"x", 150,20, 30,30
    statictext #2.st2,"=", 150,50, 30,30
    button #2.b, "invoer", [invoerkeer], ul, 20,120
    open "Reken progamma" for Window AS #2
    print #2, "trapclose [sluit2]"
    wait
[sluit2]
close #2
end

    [invoerkeer]
    #2.t "!contents? c$"
    #2.r "!contents? d$"
    som1 = val(c$)
    som2 = val(d$)
    uitkomst$ = str$(som1 * som2)
    'statictext #1.st3,uitkomst$, 150,70, 30,30
 '   notice uitkomst$
    #2.st3 uitkomst$

    wait

    [min]

    if (k = 1) then
    close #2
    end if
if (p=1) then
close #1
end if


    p = 0
    k = 0
    d = 0
    m = 1
    close #1
    close #2
    MENU #3, "&Bestand", "&Info", [extra], "&Sluiten", [sluit]
    MENU #3, "&Reken", "&Keer", [keer], "&Min", [min]
    textbox #3.t, 20,20, 100,25
    textbox #3.r, 200,20, 100,25
statictext #3.st3,"", 120,200, 100,30
    statictext #3.st,"x", 150,20, 30,30
    statictext #3.st2,"=", 150,50, 30,30
    button #3.b, "invoer", [invoermin], ul, 20,120
    open "Reken progamma" for Window AS #3
    print #3, "trapclose [sluit3]"
    wait
[sluit3]
close #3
end

    [invoermin]
    #3.t "!contents? c$"
    #3.r "!contents? d$"
    som1 = val(c$)
    som2 = val(d$)
    uitkomst$ = str$(som1 * som2)
    'statictext #1.st3,uitkomst$, 150,70, 30,30
 '   notice uitkomst$
    #3.st3 uitkomst$

    wait
pinda_kaas
 
Berichten: 19
Geregistreerd: di mei 25, 2010 8:45 am

Re: mijn eerste GUI kan iemand helpen?

Berichtdoor Gordon » vr maart 04, 2011 12:49 am

Het gaat heel goed.
Nu merk je wel waarom je heel nauwkeurig moet bijhouden
welk venster nog open staan. Een reeds open staand venster
mag je niet "dubbel"openen (Handle already in use ERROR)
Een reeds gesloten venster mag je niet dubbel sluiten.
(Illegal handle ERROR)

Maak er een gewoonte van om na elke "module" het venster
direct te sluiten en dus moet je daarmee bij elke gebruik
van een module dat venster weer openen.

Of plaats zodra je een venster geopend hebt een vlag
(bijv. MinVensterGeopend = 1) en dan kontroleren
op IF MinVensterGeopend = 1 THEN CLOSE #1 enz.

Gordon
Avatar gebruiker
Gordon
Site Admin
 
Berichten: 684
Geregistreerd: zo mei 22, 2005 12:50 am


Keer terug naar Beginner

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast

cron