Ga naar inhoud

MrCash

Lid
  • Items

    41
  • Registratiedatum

  • Laatst bezocht

MrCash's prestaties

  1. Hey Ricardog. Eerst en vooral sorry dat ik niet meer heb gereageerd, maar ik zit tot over mijn oren in het werk. Dit is heel eenvoudig op te lossen: nu wijs je gewoon de double waarde toe aan de Text-property van je label, wat een impliciete conversie naar string triggert. Wanneer je expliciet converteert heb je meer opties. Als x je double is en lbl je label, dan doe je dit: lbl.Text = x.ToString("F2") Wil je de double-waarde zelf afronden, dan kan je de functie Math.Round() gebruiken.
  2. Hey ricardog, ik had mijn berichtje nog geëdit, maar ondertussen had je al geantwoord. 'k Had beter een vers berichtje geplaatst. De laatste paragraaf van mijn vorige berichtje bevat nu een codefragmentje om het afsluitprobleem op te lossen.
  3. Wel, een probleem dat ik opmerk is dat je programma niet afsluit als het laatste form gesloten is. Dat komt omdat je overal Form.Hide() gebruikt. De forms worden zo onzichtbaar gemaakt, maar blijven wel geladen in het geheugen. Maar op 't eerste zicht moet er wel wat code veranderd worden om tot een goed sluitend programma te komen. Ik ga eens kijken hoe dat het makkelijkste kan zonder al te veel te moeten veranderen. En dan iets dat het programma niet sneller of trager zal maken. Ieder heeft zijn eigen programmeerstijl, da's OK. Maar probeer je code netjes en overzichtelijk te houden. Als ik je code lees en écht wil begrijpen wat er berekend wordt moet ik nu een lijstje maken op papier met label1 is dit en label2 is dat, ... Geef al je besturingselementen logische namen, da's voor jou ook handiger als je later iets wil veranderen. Tenslotte is het altijd handiger als je letterlijke waarden zoveel mogelijk buiten je code laat. Zet de prijzen en BTW-tarief bijvoorbeeld in een settings-file. Zo hoef je niet te hercompileren als er iets verandert, maar nog veel belangrijker: blijven die zaken gecentraliseerd. Stel dat je op 5 verschillende formulieren een bepaalde prijs gebruikt, en stel dat die morgen verandert. Als je per ongeluk één vermelding van die prijs in de broncode vergeet te wijzigen kan dat onaangename gevolgen hebben. Staat die in een settings-file, of in de registry of in een variabele, die overal in het programma gebruikt wordt, hoef je dat maar één keer te veranderen. En natuurlijk is een 'perfect' (bestaat niet) objectgeorienteerd programma netter, maar daar steek je heel wat meer tijd en lijnen code in. En voor een kleine app als deze is dat eigenlijk overbodig vind ik. Ik ga nog eens kijken naar het afsluitprobleem. EDIT: Ik zie niet direct een manier om het afsluitprobleem op een "mooie" manier op te lossen zonder de hele code om te gooien. Dus een lapmiddeltje: Het eenvoudigste is om op elk formulier een eventhandler te maken voor de FormClosing event en daar Application.Exit() aan te roepen: [size=2][/size][size=2][color=#0000ff][size=2][color=#0000ff]Private[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]Sub[/color][/size][/color][/size][size=2] Totaal_prijs_FormClosed([/size][size=2][color=#0000ff][size=2][color=#0000ff]ByVal[/color][/size][/color][/size][size=2] sender [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]Object[/color][/size][/color][/size][size=2], [/size][size=2][color=#0000ff][size=2][color=#0000ff]ByVal[/color][/size][/color][/size][size=2] e [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] System.Windows.Forms.FormClosedEventArgs) [/size][size=2][color=#0000ff][size=2][color=#0000ff]Handles[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]Me[/color][/size][/color][/size][size=2].FormClosed Application.Exit() [/size][size=2][color=#0000ff][size=2][color=#0000ff]End[/color][/size][/color][/size][size=2] [/size][size=2][color=#0000ff][size=2][color=#0000ff]Sub [/color][/size][/color][/size]
  4. Geen probleem hoor. Ik werk meestal in c# en vb is nogal lang geleden... Wat betreft je tweede vraag, je hebt 2 opties: Ofwel doe je, zoals je zegt textbox.Text = textbox.Text.Replace(","c, "."c), da's het simpelste Ofwel maak je een eventhandler voor de KeyPress event van de textbox, waarin je op zoek gaat naar de komma en die direct vervangt door een punt. Dan krijg je zoiets: [size=2][color=#0000ff][size=2][color=#0000ff]Private [/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Sub[/color][/size][/color][/size][size=2] TextBox1_KeyPress([/size][size=2][color=#0000ff][size=2][color=#0000ff]ByVal[/color][/size][/color][/size][size=2] sender [/size][size=2][color=#0000ff][size=2][color=#0000ff]As [/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Object[/color][/size][/color][/size][size=2], [/size][size=2][color=#0000ff][size=2][color=#0000ff]ByVal[/color][/size][/color][/size][size=2] e [/size][size=2][color=#0000ff][size=2][color=#0000ff]As[/color][/size][/color][/size][size=2] System.Windows.Forms.KeyPressEventArgs) [/size][size=2][color=#0000ff][size=2][color=#0000ff]Handles[/color][/size][/color][/size][size=2] TextBox1.KeyPress[/size] [size=2][color=#0000ff][size=2][color=#0000ff]If[/color][/size][/color][/size][size=2] e.KeyChar = [/size][size=2][color=#a31515][size=2][color=#a31515]","c [/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Then[/color][/size][/color][/size][size=2] e.KeyChar = [/size][size=2][color=#a31515][size=2][color=#a31515]"."c[/color][/size] [/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]If [/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Not[/color][/size][/color][/size][size=2] ([/size][size=2][color=#0000ff][size=2][color=#0000ff]Char[/color][/size][/color][/size][size=2].IsNumber(e.KeyChar) [/size][size=2][color=#0000ff][size=2][color=#0000ff]Or [/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Char[/color][/size][/color][/size][size=2].IsControl(e.KeyChar) [/size][size=2][color=#0000ff][size=2][color=#0000ff]Or[/color][/size][/color][/size][size=2] e.KeyChar = [/size][size=2][color=#a31515][size=2][color=#a31515]"."c[/color][/size][/color][/size][size=2]) [/size][size=2][color=#0000ff][size=2][color=#0000ff]Then[/color][/size][/color][/size][size=2] e.Handled = [/size][size=2][color=#0000ff][size=2][color=#0000ff]True[/color][/size] [/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]End [/color][/size][/color][/size][size=2][color=#0000ff][size=2][color=#0000ff]Sub[/color][/size] [/color][/size] De eerste regel vervangt de komma door een punt, onmiddelijk als ze wordt ingetikt en nog voor ze in de textbox komt. De tweede regel houdt alle toetsaanslagen tegen dat niet voldoet aan één van de volgende voorwaarden: a/ een cijfer; b/ een controlchar (zoals backspace) of c/ die decimale punt. Dit kan je dan naar wens verder uitbreiden en bijvoorbeeld bij de punt gaan controleren of er al één in de textbox staat en dan selectief tegenhouden, etc... PS Je mag hieronder op Markeer als opgelost klikken
  5. OK, heb even nagekeken op een XP-machine: Je gaat naar de beeldscherminstellingen, dan kies je het tabblad "bureaublad", onderaan de knop "bureaublad aanpassen", dan tabblad "Websites" en daar alles uitvinken. Ik hoop dat het duidelijk is.
  6. Hey, ik veronderstel dat in je configuratiescherm>landinstellingen het decimaalteken staat ingesteld op komma. Ik heb je procedure licht aangepast, probeer het volgende eens: Private Sub Totaal_prijs_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Label5.Text = groep1.Label1.Text.Replace(","c, "."c) Label6.Text = groep2.Label1.Text.Replace(","c, "."c) Label7.Text = groep3.Label1.Text.Replace(","c, "."c) Label8.Text = groep4.Label1.Text.Replace(","c, "."c) Label17.Text = groep1.Label9.Text.Replace(","c, "."c) Label18.Text = groep1.Label11.Text.Replace(","c, "."c) Label19.Text = groep2.Label11.Text.Replace(","c, "."c) Label20.Text = groep2.Label9.Text.Replace(","c, "."c) Label22.Text = groep3.Label9.Text.Replace(","c, "."c) Label21.Text = groep3.Label11.Text.Replace(","c, "."c) Label24.Text = groep4.Label9.Text.Replace(","c, "."c) Label23.Text = groep4.Label11.Text.Replace(","c, "."c) Label26.Text = bewerkingen.Label8.Text.Replace(","c, "."c) Label28.Text = uitsparingen.Label8.Text.Replace(","c, "."c) Label30.Text = Achterwanden_per_m2.Label9.Text.Replace(","c, "."c) Label32.Text = Extra_bewerkingen_achterwanden.Label3.Text.Replace(","c, "."c) Label34.Text = Spoelbakken.Label3.Text.Replace(","c, "."c) Label36.Text = Smetlijsten_tot_8_cm.Label7.Text.Replace(","c, "."c) Label73.Text = CStr(Conversion.Val(Label5.Text) + Conversion.Val(Label6.Text) + Conversion.Val(Label7.Text) + Conversion.Val(Label8.Text) + Conversion.Val(Label17.Text) + Conversion.Val(Label18.Text) + Conversion.Val(Label19.Text) + Conversion.Val(Label20.Text) + Conversion.Val(Label21.Text) + Conversion.Val(Label22.Text) + Conversion.Val(Label23.Text) + Conversion.Val(Label24.Text) + Conversion.Val(Label26.Text) + Conversion.Val(Label28.Text) + Conversion.Val(Label30.Text) + Conversion.Val(Label32.Text) + Conversion.Val(Label34.Text) + Conversion.Val(Label36.Text)).Replace(","c, "."c) End Sub PS Doe voor de zekerheid je oude procedure nog niet weg, maar comment ze out.
  7. Goh, dat zit ergens verstopt bij je beeldscherminstellingen. Zou ik even moeten nakijken op een XP machine, want vanbuiten weet ik het niet. Ik laat je straks iets weten als ik het heb nagekeken.
  8. OK, je kan nadat windows is opgestart Windowstoets+R doen (opdracht uitvoeren), dan desk.cpl intikken en enter. Mogelijk opent hij het venster op je niet-bestaande monitor, maar dan kan je alt+spatiebalk gevolgd door enter doen en met de pijltoetsen het venster verplaatsen naar de andere monitor.
  9. OK, volgens mij (maar ben niet 100% zeker) worden dual monitor instellingen genegeerd in safe mode. Start de computer op in safe mode (veilige modus) door op F5 te drukken bij het opstarten. Als je dan een normaal bureaublad krijgt kan je de monitorinstellingen terug juist zetten.
  10. Okay, ik heb je broncode ontvangen. Ik ga er vandaag nog naar proberen te kijken.
  11. Ricardog, Ik snap echt niet wat er bij jou foutloopt met de Val() functie. Ik heb het hier zelf ook geprobeerd en het werkt perfect. Ik heb gewoon een Form met 5 labels gemaakt en de volgende code in de Form.Load eventhandler: Label1.Text = "123.45" Label2.Text = "678.90" Label3.Text = "987.66" Label4.Text = "" Label5.Text = Conversion.Val(Label1.Text) + Conversion.Val(Label2.Text) + Conversion.Val(Label3.Text) + Conversion.Val(Label4.Text) Het resultaat in Label5 is dan 1790.01, wat volgens mijn rekenmachien moet kloppen... Ik heb ook wat gespeeld met de waarden van de labels en het blijft goed gaan... Misschien kan je aan de hand hiervan vergelijken wat er anders is in jouw programma, en waar de fout zit? Als je dat graag hebt maak ik ook nog wel een voorbeeldje met CDbl() ofzo, maar dat zal dan iets voor volgende week zijn denk ik, want heb nog massa's werk (ben al sinds vanmorgen 7u30 bezig en 't is weeral 1u30...) Laat iets weten of 't lukt en of ik nog een ander voorbeeldje moet maken... EDIT: Als je de oplossing niet vindt mag je me altijd je project doorsturen, dan zoek ik mee als ik tijd heb. WindowsApplication1.zip
  12. Herstel de Office installatie via software in het configuratiescherm
  13. Heb je active desktop of hoe heet dat onding actief staan?
  14. Je scherm even aansluiten op de andere connector van je videokaart.
×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.