Data van form1 naar form2

Status
Niet open voor verdere reacties.

Kerkrade

Gebruiker
Lid geworden
14 aug 2011
Berichten
163
Ik ben bezig met een interactieve menukaart die voor obers is bedoeld.
Als je dan bijv. op de knop Cola klikt komt er op de rekening de Cola bij.

Alleen is nu mijn vraag:
Hoe doe je dat?? Dus als ik op Cola klikt, komt er op de rekening €2,00 bij.
En hoe moet de rekening er dan uit zien?
 
Ik zou php en sql gebruiken en alles in een database zetten. En dan de entry`s verwijderen wanneer je op betalen klikt.

Hoe de rekening er uit moet zien, ligt aan wat je er mee wil.
Wil je hem uitprinten, dan moet je rekening houden met het type printer.

Maar het is misschien wel een leuk project, maar waarvoor wil je het gaan gebruiken?
 
Ik neem aan dat je het in visual basic wilt maken aangezien het in het visual basic forum staat?

Dan heb ik een paar vragen:
Wat heb je al?
Hoeveel ervaring heb je?
Je wilt dus dat als er op een knop gedrukt word, dat er in een ander form iets bij komt?
Hoe staat de rekening in de 2e form (listbox, richtextbox)?

Als je het op deze manier wilt doen, dan kom je volgens mij nog een probleem tegen als je meerdere rekeningen open hebt... Dan ben je eerst een tijd aan het zoeken totdat je de goede rekening hebt gevonden...


Ik kan wel eerst alvast het simpelste deel van de vraag behandelen:
Hoe je data van form1 naar form2 krijgt.

Linkje: http://msdn.microsoft.com/en-us/library/76453kax.aspx

De basis is simpel:
Als je een "Private" functie/sub/variable/etc hebt, dan kan die alleen vanuit dezelfde class aangeroepen worden.
Als je een "Public" functie/sub/variable/etc hebt, dan kan die aangeroepen worden vanuit het hele project. Als je een DLL hebt gemaakt, dan kan die functie/sub/variable/etc ook vanuit het project waarin de DLL is geïmporteerd aangeroepen worden.
Als je een "Friend" functie/sub/variable/etc hebt, dan kan die alleen aangeroepen worden vanuit het hele project. Als je dus een DLL hebt gemaakt, dan kan die functie/sub/variable/etc niet vanuit het project waarin de DLL is geïmporteerd is aangeroepen worden.

Op de rest ga ik nu even niet in. Hiermee zou het moeten lukken (Ik heb ook alleen nog maar deze gebruikt, nooit andere).

Daarna gaan we kijken naar hoe variablen gemaakt kunnen worden. Ik neem aan dat je wel weet hoe je een 'normale' variable kan maken.
Bij variablen hangt het ervan af waar je ze aanmaakt of je ze op bepaalde puten kan gebruiken. Als je bijvoorbeeld in sub "x" de variable "y" aanmaakt, dan kan je die daarna niet aanroepen in sub "z". Dan zijn er verschillende manieren om de waarde toch over te krijgen:
Dit is er een van, de andere ga ik nog verder op in: http://msdn.microsoft.com/en-us/library/h2b185t2.aspx

De andere klinkt simpel, en dat is het ook. Je moet gewoon de variable op een andere plaats aanmaken en dan zet je in sub "x" een nieuwe waarde erin, en in sub "z" lees je die waarde dan weer uit. Waar je die variable dan aan moet maken is in de class, maar niet in een sub. Dat kan gewoon met een "Dim y As String", maar dat kan ook anders.
Ik begon met het uitleggen over private/public. Daarmee kan dit namelijk ook: "Private y As String"/"Public y As String".

Ik denk dat dit genoeg is om even over na te denken...:p


Succes!:thumb:
MartinJM
 
1. Ik heb inlogscherm en ben nu bezig met alle buttons op alle forms te maken
2. 2 dagen
3. Ja
4. Heb nog niks
 
Laatst bewerkt door een moderator:
Gebruik A.U.B geen quotes als je direct reageert, dat geeft onnodig lange topics...

Met de vraag over hoeveel ervaring je hebt, bedoelde ik meer "wat kan je al maken"...


2 dagen ervaring klinkt mij als een beetje weinig in de oren als je dit wilt gaan maken, maar we gaan het proberen! Snap je tot nu toe alles van mijn vorige post?
Heb je al een idee hoe je de rekening in form2 wilt laten zien?
Heb je al een idee hoe je meerdere rekeningen makkelijk naast elkaar open kunt hebben?

Denk daar even over na. Wat ik je aanraad, is om als je iets wilt proberen, dat dan eerst kleinschalig in een ander projectje te proberen. Dat voorkomt dat je je grote project later nog eens moet repareren als het fout gaat... Dat kleine projectje hoef je dan ook niet op te slaan..


Nog 2 vraagjes (voor nu):
Heb je een boek/tutorial waarin het allemaal goed uitgelegd staat? Dat is namelijk altijd handig...
Welke versie gebruik je? (visual basic 2010 / visual basic 2008 enz) Ik gebruik namelijk niet de nieuwste versie, dus er kunnen verschillen zijn....


Succes!:thumb:


*EDIT*
Aangezien het om geld gaat, moet je misschien ook gaan nadenken over hoe je het programma gaat beveiligen zodat mensen de source code niet kunnen achterhalen.
Aanrader daarvoor: http://software.helpmij.nl/index.php?action=detail&id=773
 
Laatst bewerkt:
Ik wil het voor eigen gebruik gebruiken, en heel misschien egt in de horeca
 
Laatst bewerkt door een moderator:
Ik kan de basis dingen maken zoals rekenmachine en Hello World. Ikzelf heb versie 2010 Visual Studio en niet Basic maar Ultimate. Ik snap wel alles en dat is dus geen probleem. Ik zou de rekening het liefst als een soort rekenmachine zien dus meerdere textboxes en dat die dan worden opgeteld. 2 of meer rekening naast elkaar zou ik willen dat je bijv. op Button1 klikt waar tafel 1 op staat en op Button2 waar tafel 2 op staat enz. Ik heb geen boek waar alles in staat en dus vraag ik het op dit forum.
 
Een rijtje textboxen heeft een (groot) nadeel: het houd op een gegeven moment op. Dan kunnen er niet meer bij (kan een code voor gemaakt worden, maar dat is ingewikkeld).
Als je dus een rijtje wil laten zien, word vaak een listbox gebruikt: http://msdn.microsoft.com/en-us/library/system.windows.forms.listbox.aspx. Ik zou dus in plaats van een rijtje textboxen een listbox gebruiken. Voor het eindbedrag kan je wel gewoon een textbox gebruiken.

Dan nog iets: Alles wat je in b.v een listbox hebt staan, verdwijnt als je de form sluit waarin de listbox staat. Dus als je meerdere buttons wilt hebben die verschillende forms openen waarin al (gedeeltelijk) ingevulde listboxen staan, dan zal je iets moeten bedenken waardoor de inhoud onthouden word. Dit geld ook voor textboxen.
Suggesties:
Je maakt een array variable per tafel in je eerste form, en ieder form dat dan nog opent voor de rekening leest dan daaruit de bedragen af.
Je sluit de formen niet, maar maakt ze onzichtbaar en zorgt dat ze niet zichtbaar zijn in de taskbar.


Dan over visual studio:
Visual studio heeft meerdere onderdelen waaronder bijvoorbeeld Visual Basic, Visual C#, Visual C++. Met Visual Basic word dat ene onderdeel bedoelt. Alle onderdelen zijn ook apart te downloaden, maar ook in 1 geheel, als zijnde Visual Studio.

Dus in welke programmeertaal wil je het maken? Visual Basic?


MartinJM
 
In Visual Basic inderdaad, en als ik de listbox heb, hoe maak ik dan een database aan? En als ik bijv. bij de Button1 Cola heb staan welke code moet er dan komen te staan:
"Public" functie/sub/variabel/etc:
?????????
?????????
?????????
?????????
End Sub
 
Laatst bewerkt:
Voor iemand die net twee dagen is begonnen, lijkt mij dit vrij lastig... :(
Maar goed. Zorg dus dat je alles wat Martin je heeft verteld in zijn vorige posts, begrijpt. ;)

Maar even voor de duidelijkheid, wat ga je precies doen? Weet je al hoe je je programma eruit wilt laten zien?
 
Laatst bewerkt:
Het programma staat er al, alles wat ik nog moet is de code voor de button zodat je als je op Cola klikt er op de rekening €2,00 bij komt.
 
Laatst bewerkt door een moderator:
@mrgreen: Iedereen maakt fouten. En je probeert alleen maar te helpen, dat kan (bijna) geen kwaad...;)


@Kerkrade:

Ik(/wij) ga(an) niet dit hele programma voor je schrijven. Als je wilt dat er een programma voor je word geschreven dan kan je daarvoor vast wel ergens een advertentie kwijt.

Wat ik (/wij) wel wil(len) doen is je helpen bij het maken van codes/projecten.
Ik zou als ik jou was nog eens goed kijken naar wat een functie en wat een sub is. Dat lijk je nog niet helemaal goed te begrijpen. Als eerst een linkje: http://msdn.microsoft.com/en-us/library/sect4ck6%28v=vs.80%29.aspx.

Omdat ik niet denk dat het linkje heel duidelijk is (het helpt wel), ga ik het ook nog eens zelf proberen uit te leggen: :)

Als je een project opent, dan krijg je een form te zien. Als je een button op die form plaatst en daarop klikt dan zie je een code:

(let op, de namen kunnen verschillen)
Code:
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    End Sub
End Class

Daarin zie je meerdere dingen die ik stap voor stap af zal gaan:
Op de eerste lijn zie je de opening van een Class. Daar ga ik nu niet verder op in, maar al jouw code zou in theorie in die class moeten komen. Onderaan zie je dat de class weer wordt gesloten.
Op de derde lijn zie je dat er een Sub wordt geopend. Daar staan nog wat meer dingen bij, maar ook dat is nu (nog) niet relevant. In principe zou al je code in een sub moeten komen te staan. Of in een functie, wat zometeen aan bod komt. De sub wordt op de een na laatste regel gesloten.

Om er dan vervolgens nog een sub bij te maken voeg je dit toe:
Code:
Private Sub EigenSub()

End Sub
Het totaalplaatje is dan dit:
Code:
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    End Sub

    Private Sub EigenSub()

    End Sub
End Class

Als we die sub vervolgens iets simpels laten doen (een messagebox laten zien) dan ziet de code er zo uit:
Code:
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    End Sub

    Private Sub EigenSub()
        MsgBox("Hallo wereld!")
    End Sub
End Class

Als je nu het programma runt en op de knop drukt, zal er alleen nog niks gebeuren omdat je de sub nog niet hebt aangeroepen. Dat doe je zo:
Code:
EigenSub()

De totale code zal dan dit worden:
Code:
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        EigenSub()
    End Sub

    Private Sub EigenSub()
        MsgBox("Hallo wereld!")
    End Sub
End Class

Als je nu het programma opstart en je drukt op de knop, dan zal de messagebox tevoorschijn komen.


Dan is er ook nog een speciaal soort sub: de functie. Het verschil tussen een functie en een sub is dat een functie een waarde retourneert. Een klein voorbeeld:
Code:
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        EigenSub()
    End Sub

    Private Sub EigenSub()
        MsgBox(MaakTekst())
    End Sub

    Private Function MaakTekst()
        Dim tekst As String = "Hallo wereld!"
        Return tekst
    End Function
End Class

Als je dit zou runnen en je zou op de knop drukken gebeurt er precies hetzelfde. In deze situatie nutteloos, maar soms toch wel heel erg nuttig. Let erop dat een functie altijd een waarde terug moet sturen en dat een sub dat niet kan. Een sub kan wel een globale variable (een variable aangemaakt buiten alle subs, maar binnen een class) een waarde geven. Daarmee kan je een sub ongeveer hetzelfde laten doen.


Ik hoop dat je dit begrijpt en dat als je het niet begrijpt ook met gerichte vragen komt. Dus niet iets als: Ik snap het gewoon niet!

Daarbij zou ik je echt aanraden om dit programma nu even te laten voor wat het is en te beginnen met het bouwen van een simpeler programma. Op die manier kan je langzaam (of snel) je weg omhoog werken totdat je echt klaar bent voor een project als dit.
Als je toch door wilt gaan, dan blijven we natuurlijk nog wel helpen. Ook als je niet doorgaat met dit project, willen we altijd blijven helpen.


Succes! :thumb:

MartinJM



*EDIT*
Oeps, iets te lang met deze post bezig geweest.... :P

@Joz: Heb ik nog iets gemist?
 
Laatst bewerkt:
@kerkrade Onnodige quotes verwijderd. Wanneer je direct reageert op een reactie is het niet nodig om dat bericht te quoten. Onnodig quoten heet dat, hetgeen niet gewenst is.
 
Ik loop tegen een probleem aan:
Ik wil van ene naar andere Form switchen en vul code:
Me.Close()
Form(NR.).show()

als ik hem dan run en klik op de button gebeurt er niks

*EDIT*

Het moest én Hide i.p.v van Close zijn en Achter die Private Sub/enz... Moest staan Handles Button(NR.) MouseClick.
 
Laatst bewerkt:
Alles klaar alleen nog de Buttons zo bewerken dat als ik erop klik het bij wordt geschreven op de rekening. Wie helpt me???
 
In de form van de rekening een public sub maken en een public variable. Dan kan je vanuit je eerste form eerst die variable vullen en daarna de sub aanroepen.

Als je niet weet wat ik nu bedoel: het staat uitgelegd in voorgaande posts. Als je iets niet snap, kan je het natuurlijk gewoon vragen.

Succes! :thumb:
 
Wat is variable in Visual Basic?? Val?

Nog een vraag: Hoe zet je Overschrijven uit. Nu heb ik een grijs balkje op de letter waar ik sta en als ik dan typ gaat die letter weg, maar ik wil juist ertussen typen

Code rekening.JPGRekening.JPG

Foto's van hoe mijn rekening er nu uitziet.
Bij de code staat nog niks omdat ik niet weet hoe je dingen uit een ListBox bij elkaar optelt en in de TextBox krijgt. Wel weet ik hoe je 2 Textboxen bij elkaar kan optellen.

Laatste vraag voorlopig: Hoe maak je een database??
 
Laatst bewerkt door een moderator:
Al die vragen kun je allemaal in één post zetten. Daar is de 'aanpassen'-knop voor uitgevonden.

Kerkrade zei:
Wat is variable in Visual Basic?? Val?
Weet je niet wat een variabele is :eek: Dat is de absolute basis...
Een variabele is een object waarin je een waarde kunt stoppen.

Kerkrade zei:
Nog een vraag: Hoe zet je Overschrijven uit. Nu heb ik een grijs balkje op de letter waar ik sta en als ik dan typ gaat die letter weg, maar ik wil juist ertussen typen
In Visual Studio is moet je op de Insert-knop drukken, als ik me niet vergis.

Kerkrade zei:
Bij de code staat nog niks omdat ik niet weet hoe je dingen uit een ListBox bij elkaar optelt en in de TextBox krijgt. Wel weet ik hoe je 2 Textboxen bij elkaar kan optellen.
[cpp]Dim totaal As Double = 0
For Each prijs As String In ListBox1.Items
totaal += CDbl(prijs.TrimStart("€"))
Next
TextBox1.Text = "€" & totaal.ToString[/cpp]

Kerkrade zei:
Laatste vraag voorlopig: Hoe maak je een database??
Zelf al gezocht? Volgens mij is dit wel een goede tutorial:
http://www.youtube.com/watch?v=qUesXr6rjkQ&feature=relmfu
 
@Kerkrade Het is niet de bedoeling om al je problemen aan de kaak te stellen in een topic. Let hier op. Je doet er de database van Helpmij geen plezier mee en bovenal, misschien wel het belangrijkste, ook de helpers doe je hier geen plezier mee. Elke volgende vraag, niet gerelateerd aan je originele vraag gesteld in deze topic zal worden verwijderd.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan