vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest sobota, 18 maja 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

Dodawanie nowych textboxów do userform poprzez przycisk


otwartyotwarty rozpoczął: adrian1702 postów: 6



napisał: LAnd
postów: 107


umieszczony:
19 czerwca 2007
22:34

  
Utwórz nowy formularz
poniższy kod wklej do kodu fromularza
każde kliknięcie w formularz doda TextBox'a

Ponieważ formularz będzie załadowany i widoczny zdarzenie Initialize nie wystąpi

taka sytuacja była w poprzedniej procedurze Test


Private Sub UserForm_AddControl(ByVal Control As MSForms.Control)
' po dodaniu textbox'a uruchamia się obsługa tego zdarzenie
End Sub

Private Sub UserForm_Click()
 DodajTBx True
End Sub


Private Function DodajTBx(Optional Dodaj As Boolean = False) As Integer
 'poniżej zdeklarowana zmienna przechowuje wartość do chwili gdy formularz nie zostanie zamknięty
 ' Unload lub przycisk X na pasku tytułu
 'czas życia dodanych poleceniem Controls.Add obiektów jest taki sam
 ' dodanie Textboxa DodajTBx(True) lub nrDodanegoTBx= DodajTBx(True)
 ' odczyt licznika texboxów ileTBx=DodajTBx
 Static IleTBx As Integer
  'stała wMax -maksymalna ilość wierszy na TextBoxy
 Const x0 = 1, y0 = 1, dx = 5, dy = 5, xw = 72#, yh = 18#, wMax = 3
 Dim w, k, cx, cy, ScrlW, ScrlH
 
 If Dodaj Then
  IleTBx = IleTBx + 1 'ta wartość będzie pamiętana po wyjściu z funkcji
  w = (IleTBx - 1) Mod wMax 'wiersz textboxow
  k = Int((IleTBx + wMax - 1) / wMax) - 1 'kolumna textboxow
  cx = x0 + k * (dx + xw) 'współrzedna pozioma
  cy = y0 + w * (dy + yh) 'współrzedna pionowa
  With Me
   With .Controls.Add("forms.textbox.1", "textBox" & IleTBx)
    .Top = cy
    .Left = cx
    .Height = yh
    .Width = xw
    .Text = .Name
    ScrlW = .Left + .Width + 16 'położenie krancowe poziome prawego brzegu textboxa + szerokośc paska przewijania
    ScrlH = .Top + .Height + 16 'położenie krancowe pionowe dolnego brzegu textboxa
   End With
 
   .ScrollBars = fmScrollBarsBoth
   .KeepScrollBarsVisible = fmScrollBarsNone
   'dostosowanie pasków przewijania
   If ScrlH > .ScrollHeight Then .ScrollHeight = ScrlH
   If ScrlW > .ScrollWidth Then .ScrollWidth = ScrlW
  End With
 
 End If
 DodajTBx = IleTBx
End Function

napisał: adrian1702
postów: 3


umieszczony:
19 czerwca 2007
19:31

  
dzieki za pomoc,
narazie kombinuje z tym co dostałem, tylko jeszcze nie wiem dokladnie co doczego (w sumie to zaczynam w vba)

Ogolnie to chce, żeby program wygladal tak:
mam juz dodane 3 x 3 przyciski textbox
mam suwak - scrollbar - i jezeli on przyjmie wartosc powyzej 3 to chcialbym zeby dodalo sie nowe okienko obok ostatniego z juz dodanych textboxow (wysoksc stala )

---
przy okazji druga sprawa, jak wykorzystac inny scrollbar do przewijania tych okienek (bo powiedzmy miescic w oknie programu bedzie sie tylko 10)
napisał: jalamas
postów: 316


umieszczony:
19 czerwca 2007
18:15

  
Tylko proszę pamiętać, iż w tym momencie :
UserForm1.Controls...
wywoływana jest procedura zdarzenia Initialize wspomnianej Userform....
Więc trzeba baczyć co tam się ma, jakby co...

Nie wiem gdzie tę procedurę dodawania kontrolek chcesz przywołać, może podaj tenże też UserForm jako parametr... również... wówczas nie będziesz uzależniony od jej nazwy...
napisał: LAnd
postów: 107


umieszczony:
18 czerwca 2007
22:08

edytowany:
18 czerwca 2007
22:12

  
utworzyć UserForm1

utworzyć moduł kodu i wkleić procedurę

Sub Test()
x = 10
y = 50
i=1
With UserForm1.Controls.Add("forms.label.1", "Label" & i)
   .Top = y
   .Left = x
End With

'w tej samej linii co label 5 point od końca label
With UserForm1.Controls.Add("forms.textbox.1", "textBox" & i)
   .Top = UserForm1.Controls("Label" & i).Top
   .Left = UserForm1.Controls("Label" & i).Left + UserForm1.Controls("Label" & i).Width + 5
End With


'dostęp do właściwości
With UserForm1.Controls("Label" & i)
   yt = .Top
   xl = .Left
   .Caption = "Etykieta " & 10
End With
UserForm1.show
end Sub

napisał: adrian1702
postów: 3


umieszczony:
17 czerwca 2007
19:25

  
Jak zrobić aby po wcisnieciu przycisku, który znajduje sie w userform pojawiał sie w userform nowy textbox lub label w odpowiednim miejscu i odpowiednim połozeniu


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z