objektin lisäys

peetee

Miten lisätään objekti suorituksen aikana. Eli kysyn siis koodivinkkiä, miten voin esim. Commandbuttoniin kirjoittaa koodin joka lisää textbox:in lomakkeeseen. Tarvitsisin Vba -koodia.

6

553

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • ...

      Jos tekstiruudun sijoittaa lomakkeelle ja määrittelee sen ensin näkymättömäksi (esim. Teksti1.Visible=FALSE). CommandButton-kontrollissa Teksti1.Visible=TRUE toisi tekstiruudun uudelleen lomakkeelle näkyviin. Samalla tekstiruudun kokoa ja sijaintia voisi tarvittaessa muuttaa?

    • -jk-

      VB6:ssa näin; en tiedä, toimiiko VBA:na.

      Set txtBox1 = Controls.Add("VB.TextBox", "Text1")
      With txtBox1
      .Width = 2000
      .Height = 300
      .Top = 500
      .Left = 50
      .Visible = True
      .Text = "Eka tekstipoksi"
      End With

      Set txtBox2 = Controls.Add("VB.TextBox", "Text2")
      With txtBox2
      .Width = 2000
      .Height = 300
      .Top = 500
      .Left = 2250
      .Visible = True
      .Text = "Toka tekstipoksi"
      End With

      • peetee

        Eipä näytä vba:ssa toimivan.


    • Petri_Petri

      Itse olen tehnyt tuon niin, että olen tehnyt yhden indeksikontrollin formille, koska käsittääkseni ilman sitä ei kontrolleja voi lisätä. Tai se on ainakin helpoin tapa.

      Eli lisää formille TextBox:
      - laita nimeksi mikä tahansa, vaikka MunTekstiKontrolli
      - laita Index-properties nollaksi (jotta se on taulukkokontrolli eli indeksikontrolli)
      - laita kontrollin Visible-properties Falseksi, jotta se ei näy formissa


      Sitten kun haluat ottaa sen käyttöön, niin muuta kontrollin Visible-properties Trueksi.

      Nyt voit myös lisätä TextBoxeja kuinka monta tahansa.
      - Kontrollin lisäys: Load MunTekstiKontrolli(1)
      - Muuta se näkyväksi: MunTekstiKontrolli(1).Visible=True
      - Aseta sille koordinaatit, esim.: MunTekstiKontrolli(1).Top=100:MunTekstiKontrolli(1).Left=500
      - Määritä sen koko, esim.: MunTekstiKontrolli(1).Height=1000:MunTekstiKontrolli(1).Width=2000


      Sama toimii myös muiden kontrollien kohdalla.

      • peetee

        Tuo ei ilmeisesti toimi vba:ssa, koska siinä ei objekteilla ole ominaisuutta index. Vb 6:ssa tuo kyllä toimii.


      • Petri_Petri
        peetee kirjoitti:

        Tuo ei ilmeisesti toimi vba:ssa, koska siinä ei objekteilla ole ominaisuutta index. Vb 6:ssa tuo kyllä toimii.

        Luulin että kysyit sitä VB:stä. En ole paljon tehnyt VBA:lla, mutta täytyihän tuota yrittää.

        Sain sen toimimaan Excelillä. Eli kun olet tehnyt formin (joka alla on nimellä "UserForm1"), niin seuraava ohjelmakoodi lisää aina uuden tekstikontrollin. Se tulee suoraan näkyviin, joten visible-propertiesta ei tarvitse asettaa Trueksi. Alla olevassa esimerkissä uusi TextBox tulee edellisen alle, jotta ne eivät mene päällekkäin. Uuden kontrollin tekstisisällöksi tulee sen Y-koordinaatti (eli TOP-properties).



        Sub TekstikontrollinLisäys()
        'Tämä lisää Excel-formiin uuden tekstiboxin
        'Laitetaan se aina 20 pistettä edellisen alle
        Dim UusiKontrolli As Control
        Static Y

        Set UusiKontrolli = UserForm1.Controls.Add("forms.textbox.1")
        Y = Y 20
        UusiKontrolli.Text = Str$(Y)
        UusiKontrolli.Top = Y

        End Sub


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Kiva kun SDP alkaa hallitsemaan Suomea

      Vanhat hyvät ajat taas palaavat ja kansa vaurastuu. Muistatteko vielä Sorsan aikakauden? Silloin Suomessa tehtiin jopa
      Maailman menoa
      276
      8136
    2. Säästäminen on typerää, muistakaa äänestää demareita

      Säästäminen on typerää, koska aiheuttaa vain talouden taantumista ja lopulta tappaa potilaan. Demareiden tapa on satsat
      Maailman menoa
      66
      4824
    3. Olli Rehn: Eläkkeistä pitää leikata. Nyt tuli Lindtmanille kauhun paikka

      jos johtaa seuraavaa hallitusta. Purra: eläkkeisiin ei kosketa. Eikä tällä hallituskaudella varmasti kosketa, mutta seur
      Maailman menoa
      278
      4161
    4. SDP:n budjetin peruskivi: "Rahaa nimittäin on!"

      Demarien talouspolitiikan ydin on usein tiivistetty klassiseen meemiin: rahaa on, kunhan se on jonkun muun rahaa. Vuoden
      Maailman menoa
      52
      2819
    5. Sara Sieppi umpirehellisenä Amazing Race -kulissien takaisesta elämästä

      Sara Sieppi oli mukana Amazing Race Suomi -realityssä. Somevaikuttajalla oli takana raskasta aikaa ja isoja suruja, eikä
      Suomalaiset julkkikset
      1
      2277
    6. Herkkua vai hötöä? Kaksi Beck-leffaa tällä vkolla tv:stä

      Beck-elokuvat tuntuvat olevan suomalaisten makuun. Tällä viikolla televisiosta tulee kaksi ruotsalaista taidonnäytettä,
      Elokuva
      3
      1732
    7. Hatunnosto! Mari Hynynen (os. Perankoski) ja Jouni Hynynen auttavat vähäosaisia upealla tavalla!

      Hatunnosto! Mari ja Jouni Hynynen ovat Vailla vakinaista asuntoa ry:n uudet kummit. Hynysiä motivoi halu lisätä ymmärr
      Maailman menoa
      5
      1597
    8. Ajattelin silloin

      että jos olet kiinnostunut, ihan oikeasti, niin kuulen sinusta vielä.
      Ikävä
      106
      1573
    9. TTP avajaiset

      Tuhannen Taalan Paikka avautuu 1.3-26. Onpa tosi mukavaa! Kiitos Jaanalle kun olet niin aktiivinen ja jaksat yrittää ja
      Haapavesi
      40
      1482
    10. Tiesitkö? Tämä suomalainen keksi Elämäni biisi -sarjan - Viinin lipittely mainittu!

      Tiesitkö? Elämäni biisi on suomalainen formaatti ja sen takana on Petja Peltomaa. Hänen kynästä ovat lähtöisin myös mm.
      Tv-sarjat
      0
      1461
    Aihe