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ä)
No nehän on Windowsin kontrolleja, eli määrität Windowsiisi sellaisen teeman kuin haluat.
VB6:n kohdalla tarvitsee pätkän koodia + manifest-tiedoston lisäämisen, jotta kontrollit alkaisivat noudattaa Windowsin teemaa.
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ä.
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ä.
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.
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.