Archief - [PROG]VB.NET 2005 Dynamische objecten / variabelen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Raanº³

Legacy Member
Hey

Ik heb mezelf voorgenomen eens een look-a-like mijnenveger programma te maken. Alles is uitgestippeld op papier (Nasi-Schneider diagram achtig) maar nu, bij het uittypen van de code heb ik al een paar keer vast gezeten... Na een beetje nadenken ben ik er steeds doorgekomen, maar bij deze weet ik echt niet hoe ik er moet aan beginnen.

Ik lees een bestand uit, waarin iets van de inhoud opgeslagen wordt in een integer. Ik zit met het volgend probleem: ik zou dus een heleboel "knoppen" moeten aanmaken, afhankelijk van de inhoud van die integer. Graag zou ik de eerste knop "btnKnop1" willen laten heten om dan 1 op te tellen. Graag zou ik willen weten welke code ik hiervoor moet gebruiken. bvb als de integer 30 is dan: btnKnop1 t.e.m. btnKnop30; integer is 100: btnKnop1 t.e.m. btnKnop100 ...

Ik zou dus graag weten hoe je variabelen / objecten kunt declareren in Run Time. Afzonderlijk variabelen / objecten declareren werkt perfect. Het is enkel voor de naamgeving dat ik eventjes niet meer weet wat te doen :).

Bedankt :)

passero

Legacy Member
euhm je steekt die best in een array. Daar heb je 1 naam:
knoppen(x) waarbij x de integer is. Dus dan doe je hetvolgende:

for i = 0 to uwInteger -1
knoppen(i) = new Button()
knoppen(i).x = nieuweXwaarde
knoppen(i).y = nieuweYwaarde
...
next

Allé ja, je ziet het princiepe.

.:KrusT:.

Legacy Member
Zoals hierboven, maar aangezien het om eens soort mijnenveger gaat, zijt ge misschien beter met een tweedimensionele array: knoppen(r)(c) waarbij r het aantal rijen is en c het aantal kolommen.

Raanº³

Legacy Member
Ah oei... Ik had ook al eens zo uitgewerkt met een array... Maar toen onderlijnde hij ofwel die New, ofwel die `i`ofwel button :)

k ga het nog es proberen :)

Ow... Ik had geschreven... " Dim knoppen(i) as New Button " t is dus... "knoppen(i) = new button()" ... Wat is het verschil dan met het eerste? :s Ik ben da gewoon van altijd te Dim`en... en nu moet da ineens niet meer? Of moet da niet voor objecten? :unsure:

btw... waarom
Code:
for i = 0 to uwInteger -1
die -1 ? en niet + 1 (of gewoon nix; standaard telt die + 1 ak me ni vergis) Ajje - 1 'et... komt die nooit aan mijn positief getal :unsure:

So much to learn... :)

Dus... volgens VB.Net moeje da eerst dimmen als button... dan toewijzen als new button()... :unsure: ni dak nog iets van de redenering snap maar kom :)

.:KrusT:.

Legacy Member
Raanº³ zei:
btw... waarom
Code:
for i = 0 to uwInteger -1
die -1 ? en niet + 1 (of gewoon nix; standaard telt die + 1 ak me ni vergis) Ajje - 1 'et... komt die nooit aan mijn positief getal :unsure:

So much to learn... :)


Ik ben niet thuis in VB.Net, dus met syntax kan ik u niet helpen. Maar ik denk dat het hetzelfde is in C#. uwInteger is waarschijnlijk het aantal elementen in uw array, maar omdat arrays beginnen bij 0, is uw laatste element altijd het aantal -1.
Vb een array met 5 elementen, heeft de elementen: array[0], array[1], array[2], array[3] en array[4]

passero

Legacy Member
idd het is niet step -1 dat ik bedoel.

for i = 0 to uwInteger -1 betekend hetzelfde als:
voor i (beginnend bij 0) tot (uwInteger-1) elke keer i+1 doen.

Hetgeen jij bedoelt schrijf je zo:
for i = 0 to uwInteger step -1
is niet h etzelfde als
for i=0 to uwInteger-1

Wover

Legacy Member
Ik wil ni de java-fanboy uithangen, maar khad ook al zo'n ideetje naar aanleiding van een oefening die we hadden gemaakt om via nen array 25 knopkes aan te maken en dan te tonen op welk knopke er gedrukt wordt. Da's iets simpeler als in VB, want kdenk ni da ge in VB makkelijk custom objecten kunt aanmaken?

Code:
package opgave11;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class Opgave11_02 extends Applet {

    Button[][] aKnoppen;
    int i, j;
    int r, k;

    public void init()
    {
        aKnoppen = new Button[5][5];
        setLayout(null);

        for (i = 0; i < aKnoppen.length; i++)
        {
            for (j = 0; j < aKnoppen[i].length; j++)
            {
                aKnoppen[i][j] = new Button();
                aKnoppen[i][j].setBounds(j * 30 + 15, i * 30 + 15, 30, 30);
                aKnoppen[i][j].addActionListener(new KnopHandler(i,j));
                add(aKnoppen[i][j]);
            }
        }
    }

    public void paint(Graphics g)
    {
        g.drawString("Rij " + r + ", kolom " + k,60,200);
    }

    class KnopHandler implements ActionListener
    {
        private int rij, kolom;

        public KnopHandler(int rij, int kolom)
        {
            this.rij = rij;
            this.kolom = kolom;
        }

        public void actionPerformed(ActionEvent e)
        {
            r = rij + 1;
            k = kolom + 1;
            repaint();
        }
    }
}

Joriz

Legacy Member
om .NET te blijven... heel eenvoudig, kijk niet naar de fake waardes of gewoon de stomme invulling van de array...
Code:
namespace minesweeper
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            for (int i = 0; i < 10; i++)
            {
                for (int j = 0; j < 10; j++)
                {
                    MineButton mb = new MineButton();
                    mb.Value = i;
                    mb.Left = i * 20;
                    mb.Top = j * 20;
                    mb.Height = 20;
                    mb.Width = 20;
                    mb.Text = "";
                    mb.MouseClick += new MouseEventHandler(mb_MouseClick);
                    Controls.Add(mb);    
                }                
             }
        }

        void mb_MouseClick(object sender, MouseEventArgs e)
        {
            ((MineButton)sender).Text = ((MineButton)sender).Value.ToString();
            ((MineButton)sender).Enabled = false;

        }
    }

    public class MineButton : Button
    {
        private int mvalue;
        
        public int Value
        {
            get { return mvalue; }
            set { mvalue = value; }
        }

        private int x;
        public int X
        {            
            get { return x; }
            set { x = value; }
        }

        private int y;
        public int Y
        {
            get { return y; }
            set { y = value; }
        }
	
	
	
    }
}
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan