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

564

    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. Asiakkaalle ei myyty energiajuomaa - tuomio tuli syrjinnästä

      Vaikka oli ilmeisesti täysi-ikäinen. Tosin ei lapsiakaan saisi syrjiä, koska oppivat helposti itsekin syrjimään, jos koh
      Maailman menoa
      13
      1876
    2. Kuhmossa rallit alkoi ennen aikojaan

      Paettiin polliisia törkeästi? Se tuo rallikiima on näemmä saavuttanu paikalliset tommi mäkiset kiljupäissään auton rat
      Kuhmo
      35
      1583
    3. Miksi aina pitää kilpailla parhaudesta?

      Mua ärsyttää se, että kaikki kilpailut ja visailut keskittyvöt aina siihen, kuka on paras missäkin. Tänäkin aamuna tuli
      Sinkut
      53
      1221
    4. 41000 kavallettu rahaa

      uutisoi Kaleva ja iltasanomat vuosina 2020-2022 välisenä aikana hävinnyt toi summa tuomittu nainen 1971 syntynyt.
      Pyhäjärvi
      47
      1197
    5. Kaste tulisi tehdä apostolisella tavalla Ap. t. 2:38 mukaan

      Apostolit eivät kastaneet kolminaisuuden nimellä vaan Jeesuksen alkuperäisen käskyn mukaisesti: Ap. t. 2:38 Niin Pietar
      Kaste
      69
      1175
    6. Tuleeko tästä

      Enää mitään. Voiko mitään enää korjata?
      Ikävä
      110
      1145
    7. Mitä muutoksia tekisit

      kaivatullesi? Miten on? Muista olla REHELLINEN 📸
      Ikävä
      82
      994
    8. Luterilaisen kirkon koko kastekaava on väärä

      Uudessa testamentissa on kaksi täysin ristiriidassa olevaa kastekäskyä Matt 28:19 ja Ap. t. 2:38. Matteuksen evankeluimi
      Kaste
      41
      944
    9. Tietäisitpä vain mitä se

      yksikin on susta puhunut :) j
      Ikävä
      46
      915
    10. Fantasioista

      Suurimmalla osalla meistä on jonkinlaisia eroottisia fantasioita. Miten sinä suhtaudut fantasioihin? Ruokitko niitä vai
      Sinkut
      124
      906
    Aihe