Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6, VBA: Kontrolleja/OCX VB6

erkki [23.02.2011 23:02:05]

#

Olisiko hyviä vinkkejä mistä voisi ladata/ostaa nykyaikaisempia kontrolleja (Form, command button, text box, tab, combo box ym...) vanhaan VB6:een. Pitäisi saada ohjelmat vähän paremman näköisiksi.
(ei ole kokemusta muista ohjelmointikielistä)

Grez [24.02.2011 02:57:01]

#

No nehän on Windowsin kontrolleja, eli määrität Windowsiisi sellaisen teeman kuin haluat.

Merri [24.02.2011 11:04:14]

#

VB6:n kohdalla tarvitsee pätkän koodia + manifest-tiedoston lisäämisen, jotta kontrollit alkaisivat noudattaa Windowsin teemaa.

setä [24.02.2011 21:51:13]

#

Päteekö tuo myös VB5:een ja Windows seiskaan. Ongelmana on nimittäin, etten voi käyttää erillisiä kontrolleja lainkaan enkä muokata vanhempia ohjelmia, joissa käytetään niitä.

Merri [24.02.2011 22:35:16]

#

Käsittääkseni pätee. Ulkomuistista ohjelman alussa tarvitsee kutsua InitCommonControlsEx ja sitten tehdä sopiva manifest-tiedosto, joka on täsmälleen samanniminen kuin exe. Manifest-tiedoston voi upottaa exe-tiedoston resursseihin tai sitten tarjoilla erillisenä tiedostona exen lomassa.

vbAccelerator tarjoaa VB5-esimerkin, manifest-tiedosto tosin saattaa kaivata joitakin muutoksia toimiakseen samaan tapaan esim. 64-bittisessä käyttiksessä.

erkki [25.02.2011 16:40:08]

#

OK, eli näkymän saa XP teeman mukaiseksi. Pitääkö manifesti tehdä kaikkiin kontrollehin erikseen, vai riittääkö yksi manifesti kattamaan kaikki XP teeman kontrollit.
Oliko se niin että tuo esimerkki "Adding XP visual style" on 64 bittisen koodia.

Merri [25.02.2011 17:23:08]

#

Kunhan alla mainitut kaksi ehtoa täyttyvät, niin teemoitus alkaa toimia kaikkiin kontrolleihin XP:ssä, Vistassa, Seiskassa ja muissa teemoja tukevissa Windowsin versioissa.

1) InitCommonControlsEx ajetaan heti ohjelman alussa ennen kuin ainutkaan ikkuna on ladattu näkymään ruudulle (Sub Mainin avajaisena tai viimeistään ensimmäisen avautuvan formin Form_Load)

2) Manifesti on sijoitettu siten, että Windows voi sen löytää (ohjelman hakemistossa täsmälleen samalla nimellä kuin exe + .manifest TAI resurssina käännetyssä exessä itsessään)


Esimerkkisivulla oleva manifest-tiedosto toimii vain 32-bittisissä Windowseissa. Jotta se toimisi myös 64-bittisissä, niin kohta processorArchitecture="X86" pitäisi käsittääkseni muuttaa muotoon processorArchitecture="*", jolloin manifesti huomioi myös 64-bittiset Windowsit (processorArchitecture="X64") ja teemoitus toimii myös sitten niissä.

Sitten vielä yksi huomautus: option-kontrollit, jotka ovat frame-kontrollien sisällä eivät toimi niinkuin niiden pitäisi. Ne alkavat näkyä teemojen kanssa mustina laatikoina. Tämän ongelman voi korjata sillä, että siirtää optionit pictureboxin sisälle, joka sitten on framen sisällä. Tässä on taustalla jokin bugi, jota Microsoft ei ole todennut tarpeeksi vakavaksi, että se korjattaisiin.

Vastaus

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

Tietoa sivustosta