Eli tarve olisi saada aikaan muutama formi, joka avatessa käynnistyy koko ruudun kokoon. Tässä ei ongelmia ole, mutta myös formin sisällön pitäisi skaalautua samassa suhteessa.
Onko tähän jotakin oikotietä vai onko ainoa ratkaisu laskea ja asettaa formin koon mukaan jokaiselle elentille yksitellen uusi koko? Tässähän ei sinällään ole ongelmaa, mutta kun formeja on useita, jokaisessa useita elementtejä joiden fontikokokin pitäisi muuttaa, niin lopputuloksena on ehkä muutama sata koon muuttamista ja mieluusti säästäisi työn ja koodin määrässä.
Vai onko muita hyviä ideoita, joita en itse keksinyt? Softasta on tarkoitus syntyä omaan tarpeeseen autokäyttöön GPS-softaa ja tarkoitus olisi tietysti se, että näytön resosta riippumatta käytettäisiin koko ruutu hyödyksi.
Niin, VB5/6 on alustana.
En tiedä oikoteistä, mutta kerrankos sen koodin kirjoittaa käyttäen jotakin sopivaa muuttujaa kaikkeen skaalaukseen, niin sen jälkeen se toimii aina. Itse tapaan nykyään (Delphissä) kirjoittaa aina asettelut koodilla, koska myös Windowsin fonttikoon muuttaminen (siis se Isot fontit / Pienet fontit -valintalaatikko) heittelee ainakin Delphi-ohjelmat vähän miten sattuu.
Yksi hyvä tapa, jolla saa asettelun säilymään, on asetella kaikki suhteessa toisiinsa:
TextBox1.Left = Etäisyys_Formin_Reunasta TextBox2.Left = TextBox1.Left + TextBox1.Width + Haluttu_Väli ' Jne.
Tee vaikka Sub Asettele
, jossa laitat kaiken kohdalleen, niin on helppo vaikka muuttaa ikkunan kokoa kesken ajon.
Helpoiten tuon objektien skaalautumisen formin koon mukaan saa hoidettua käyttämällä Form_Resize:a ja objektien Move-metodia. Objektit skaalautuvat tuolla myös kun käyttäjä ottaa formin nurkasta kiinni ja muuttaa formin kokoa vetämällä.
Esimerkin formilla on yksi Label (Label1), yksi TextBox (Text1) ja yksi painonappi (Command1).
Option Explicit Const MARGINAL As Integer = 60 Const CORRECTION As Integer = 20 Private Sub Form_Resize() With Me If .WindowState = vbMinimized Then Exit Sub 'blokkaa turhat virheet 'Asemoidaan nappi ruudun oikeaan alalaitaan .Command1.Move (.ScaleWidth - .Command1.Width - MARGINAL), _ (.ScaleHeight - .Command1.Height - MARGINAL) 'Asemoidaan label hieman sisennettynä ruudun oikeaan ylälaitaan .Label1.Move 3 * MARGINAL, MARGINAL, _ .TextWidth(.Label1.Caption) + CORRECTION, _ .TextHeight(.Label1.Caption) + CORRECTION 'Asemoidaan TextBox Label1:n alapuolelle .Text1.Move MARGINAL, .Label1.Top + .Label1.Height, _ .ScaleWidth - 2 * MARGINAL, _ .TextHeight(.Label1.Caption) + (3 * CORRECTION) End With End Sub
Hei BadSource!
Kiitos tosta "MARGINAL / CORRECTION" jutskasta
"Välikysymys" Mutta mitenkäs, kun haluun, et ohjelmani vaihataa ne pienet fontit automaattisesti päälle 'in the case' jos ne eivät ole ( Isot fontit / Pienet fontit -valintalaatikko) ja sit palauttaa 'alkuperäset' asetukset kun ohjelma suljetaan..?
Saattaa johtua aikaisesta aamusta, mutten tunnu tajuavan kysymystä...
Mikäli et tallenna käyttäjän tekemiä muutoksia minnekkään, niin ohjelma käynnistyy niillä asetuksilla, jotka siihen on ohjelmointi vaiheessa asetettu.
Käyttäjän valintojen tallentamiseen suosittelen käyttämään Windowsin rekistereitä, joiden käyttöön VB tarjoaa omat aliohjelmansa SaveSetting, GetSetting ja GetAllSettings. Laaksosen Antin lyhyt oppimäärä aiheesta löytyy täältä.
Windowsin fonttiasetuksesta on kai kyse :)
En tiedä, miten itse asetuksia saa muutettua (paitsi kirjoittamalla rekisteriin), ja ainakin minun Windowsini muistaakseni vaatii uudelleenkäynnistyksen, jos asetusta muutetaan. Kuitenkin haluamaani lopputulokseen olen (Delphillä) päässyt asettamalla fonttikoon ajon aikana oikeaksi. DPI:stä (Dots per Inch) tuossa kai perimmiltään on kysymys, eli jos sellainen Formin asetuksista löytyy, niin kannattaa kokeilla. Lisäksi ainakin Delphissä voi normaalin fonttikokomuutoksen lisäksi määrätä fontin todellisen korkeuden, en tiedä, miten VB:ssä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.