vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: Dynamische Userform 
Autor: Zardoz
Datum: 24.05.07 23:17

Hi Sodayi,
probier mal dieses:
' Controls: 1 Button mit Index = 0
 
Option Explicit
 
' UDT
Private Type CntrlDat
  XPos As Single
  YPos As Single
End Type
 
Private XD!, YD!, TwX!, TwY!
Private Dat1$
 
Private Sub Form_Load()
 
  Dim i&, CInfo As CntrlDat, NewIndex&
 
  Me.ScaleMode = vbPixels
  TwX = Screen.TwipsPerPixelX
  TwY = Screen.TwipsPerPixelY
  Command1(0).Caption = "Neuer Button"
 
  Dat1 = App.Path
  If Right$(Dat1, 1) <> "\" Then Dat1 = Dat1 & "\"
  Dat1 = Dat1 & "Cntr.dat"
  If Dir$(Dat1) <> "" Then
    ' Controls laden
    Open Dat1 For Random As #1 Len = Len(CInfo)
      For i = 1 To LOF(1) \ Len(CInfo)
        Get #1, , CInfo
        NewIndex = Command1.Count
        Load Command1(NewIndex)
        With Command1(NewIndex)
          .Move CInfo.XPos, CInfo.YPos
          .Caption = "Button " & NewIndex
          .ZOrder vbBringToFront
          .Visible = True
        End With
      Next i
    Close #1
  End If
End Sub
 
Private Sub Command1_Click(Index As Integer)
  ' Neues Control anlegen
  Dim NewIndex&
 
  If Index = 0 Then
    NewIndex = Command1.Count
    Load Command1(NewIndex)
    With Command1(NewIndex)
      .Move (Me.ScaleWidth - .Width) \ 2, (Me.ScaleHeight - .Height) \ 2
      .Caption = "Button " & NewIndex
      .ZOrder vbBringToFront
      .Visible = True
    End With
  End If
End Sub
 
Private Sub Command1_MouseDown(Index As Integer, Button As Integer, Shift As _
  Integer, X As Single, Y As Single)
  If Index > 0 Then
    XD = X: YD = Y
    Command1(Index).ZOrder vbBringToFront
  End If
End Sub
 
Private Sub Command1_MouseMove(Index As Integer, Button As Integer, Shift As _
  Integer, X As Single, Y As Single)
  If Button = vbLeftButton And Index > 0 Then
    With Command1(Index)
      .Move .Left + (X - XD) / TwX, .Top + (Y - YD) / TwY
    End With
  End If
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
  Dim i&, CInfo As CntrlDat
 
  If Command1.UBound > 0 And Dat1 <> "" Then
    ' Controls speichern
    Open Dat1 For Random As #1 Len = Len(CInfo)
      For i = 1 To Command1.UBound
        With Command1(i)
          CInfo.XPos = .Left
          CInfo.YPos = .Top
        End With
        Put #1, i, CInfo
      Next i
    Close #1
  End If
End Sub

Gruss,

Zardoz

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Dynamische Userform1.151Sodayi14.05.07 08:32
Re: Dynamische Userform704Zardoz14.05.07 15:23
Re: Dynamische Userform706Sodayi15.05.07 11:34
Re: Dynamische Userform684Sodayi15.05.07 13:59
Re: Dynamische Userform666Sodayi15.05.07 15:36
Re: Dynamische Userform1.282Zardoz24.05.07 23:17
Re: Dynamische Userform689Sodayi25.05.07 09:05

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel