Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Formin kaikkien painikkeiden muuttaminen?

Quirzo [21.01.2006 10:16:12]

#

Eli minulla on ohjelmassa jotain 100 painiketta. Miten saisin tehtyä koodin, joka muuttaa kaikkien painikkeiden värin halutuksi nopeasti. Ettei tarvitsisi joka kerta tehdä:
button1.backcolor = päläpälä

Vai onko tuo edes mahdollista?

sooda [21.01.2006 10:23:06]

#

Kannattaa indeksoida ne. Tämä onnistuu kolmella tavalla, joko teet ensin yhden napin, kopioit sen ja sitte kun vb kysyy että tehdäänkö control array, niin vastaat joo, ja pasteilet niitä siihen sen sata. Tai sit teet yhden napin, laitat sille Index-ominaisuudeksi 0 ja vaikka form_loadissa lataat ne muut (for i=1 to 99:load nappi(i):next, missä nappi on commandbuttonin nimi). Tai vaihdat jokaisen napin indeksin käsin, mitä en suosittele. Kivan työlästä.

Kun ne sit on indeksoituna niin voit tehdä näi

For i = 0 to nappi.UBound
    nappi(i).BackColor = väri
Next

Eli siis "taulukollinen" nappeja - kontrollitaulukko.

Antti Laaksonen [21.01.2006 11:40:47]

#

Toinen tapa on käydä läpi kaikki formin kontrollit ja muuttaa painikkeiden värit.

Dim ohjain As Control
For Each ohjain In Controls
    If TypeOf ohjain Is CommandButton Then
        ohjain.BackColor = vbBlack
    End If
Next

Tämä koodi toimii VB6:ssa.

Merri [21.01.2006 13:24:09]

#

Sata painiketta on varsin paljon. Itselläni ei alkuaikojen koodaamisen opettelun jälkeen ole tullut tarvetta lisätä kovinkaan montaa ohjelmaan; tosin tuo sata tulee helposti kasaan, jos on vaikka 20 formia. Kuitenkin yleensä suuren nappulamäärän tarpeen voi ohittaa järkevöittämällä käyttöliittymäsuunnittelua ja miettimällä, mikä on olennaisinta ohjelman käyttäjän kannalta. Tämän neuvon voi tietysti ohittaa, jos niitä nappuloita on jo "järkevä" määrä kerralla näkyvillä.

Soodan neuvon ongelmaksi tulee se, että jos nappuloita on tosiaan se sata, kaikki ovat samalla formilla ja jokainen tekee eri asian, niin yhteen paikkaan joutuu tekemään varsin ruman näköisen koodikökön: sataosainen Select Case ei ole niitä ihanimpia asioita elämässä selata ja hallita. Siinä mielessä Antin koodi toimii paremmin. Joskin sitten voi jo taas miettiä sitä mitä tuossa jo aiemmassa kappaleessa sanoin :)

Quirzo [21.01.2006 13:29:22]

#

Joo taidan koittaa tota Antin koodia. Syy miksi minulla on niin monta buttonia on se, että ohjelma on Runescape -nettipeliin tehty clientti
Siis jokaiselle serverille oma nappi. (Ei tarvi tajuta)

EDIT: Jes sain toimimaan Antin vinkillä. Vieläkuin saisi, että buttonin tekstinvärin voisi muuttaa. Mitenköhän onnistuisi?

sooda [21.01.2006 13:36:34]

#

Hei jee, mäki koodannut vb:llä aika monta vuotta ja nyt vasta taidan ekaa kertaa nähdä tommoisen typeof..is-homman. :o

Quirzo [21.01.2006 13:40:25]

#

Niin että miten saisi buttonin tekstivärin muutettua? Muistaakseni sitä ei forecolorilla saatu, vai olenko väärässä? Täytyis laittaa tähän tyyliin:
if formi.backcolor = rgb(0,0,0) then
tekstiväri = rgb(255,0,0)
endif

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta