| |
Visual-Basic Einsteigermethod or data member not found | | | Autor: crosstravel | Datum: 14.11.15 17:35 |
| Hallo,
ich habe die Klasse col_controls entsprechend dem WorkShop "Resizing der Form mit automatischer Grössenanpassung" erstellt. Beim Compile kommt die im Titel angeführte Fehlermeldung. Der Cursor
steht dabei auf .Top von "With objNewMember".
Ich finde die Ursache dieses Fehlers nicht. Kann mir jemand helfen?
Danke
Rainer
Option Explicit
Private mCol As Collection
' -----------------------------------------------------------------
' Erstellt das Collection Objekt beim erstem Zugriff auf die Klasse
' -----------------------------------------------------------------
Private Sub Class_Initialize()
Set mCol = New Collection
End Sub
' -----------------------------------------------------------------
' Zerstört das Collection Objekt wenn die Klasse beendet wird
' -----------------------------------------------------------------
Private Sub Class_Terminate()
Set mCol = Nothing
End Sub
' -----------------------------------------------------------------
' Objekt der Collection zurückgeben
' -----------------------------------------------------------------
Public Property Get Item(ByVal Index As Long) As clsControl
Set Item = mCol(Index)
End Property
' -----------------------------------------------------------------
' Anzahl der Objekte durchreichen
' -----------------------------------------------------------------
Public Property Get Count() As Long
Count = mCol.Count
End Property
' -----------------------------------------------------------------
' Anzahl der Objekte durchreichen
' -----------------------------------------------------------------
Public Function Add(ByVal lTop As Long, _
ByVal lLeft As Long, _
ByVal lWidth As Long, _
ByVal lHeight As Long, _
ByVal sName As String, _
ByVal iFontSize As Single) As clsControl
On Local Error GoTo 0
' -------------------------------- Eigenschaften zuweisen
Dim objNewMember As clsControl
Set objNewMember = New clsControl
With objNewMember
.top = lTop
.left = lLeft
.Height = lHeight
.Width = lWidth
.Tag = mCol.Count + 1
.name = sName
.FontSize = iFontSize
End With
' -------------------------------- Objekt der Collection zuweisen
mCol.Add objNewMember, sName
' -------------------------------- Objekt zurückgeben
Set Add = objNewMember
' -------------------------------- neues Objekt zerstören
Set objNewMember = Nothing
End Function
Public Function AddLine(ByVal lX1 As Long, _
ByVal lX2 As Long, _
ByVal lY1 As Long, _
ByVal lY2 As Long, _
sName As String) As clsControl
On Local Error GoTo 0
Dim objNewMember As clsControl
Set objNewMember = New clsControl
' Eigenschaften zuweisen
With objNewMember
.x1 = lX1
.x2 = lX2
.Y1 = lY1
.Y2 = lY2
.ResizeOption = 0
.Tag = mCol.Count + 1
.name = sName
End With
' -------------------------------- Objekt der Collection zuweisen
mCol.Add objNewMember, sName
' -------------------------------- Objekt zurückgeben
Set AddLine = objNewMember
' -------------------------------- neues Objekt zerstören
Set objNewMember = Nothing
End Function | |
Re: method or data member not found | | | Autor: crosstravel | Datum: 14.11.15 19:01 |
| Hallo Dieter,
danke für den Hiweise; welcher das Problem zumindest teilweise löste. nun kommt die gleiche
Fehlermeldung auf bei ".name". Es ist mir nicht klar, was ich hier im Klassenmodul clsControl
setzen muss. kannst du mir bitte nochmals weiterhelfen? Muss ich evtl. den Formnamen übergeben?
Danke
Rainer
' -----------------------------------------------------------------
' Anzahl der Objekte durchreichen
' -----------------------------------------------------------------
Public Function Add(ByVal lTop As Long, _
ByVal lLeft As Long, _
ByVal lWidth As Long, _
ByVal lHeight As Long, _
ByVal sName As String, _
ByVal iFontSize As Single) As clsControl
On Local Error GoTo 0
' -------------------------------- Eigenschaften zuweisen
Dim objNewMember As clsControl
Set objNewMember = New clsControl
With objNewMember
.Top = lTop
.Left = lLeft
.Height = lHeight
.Width = lWidth
.Tag = mCol.Count + 1
.name = sName
.FontSize = iFontSize
End With
' -------------------------------- Objekt der Collection zuweisen
mCol.Add objNewMember, sName
' -------------------------------- Objekt zurückgeben
Set Add = objNewMember
' -------------------------------- neues Objekt zerstören
Set objNewMember = Nothing
End Function | |
Re: method or data member not found | | | Autor: crosstravel | Datum: 15.11.15 08:53 |
| Hallo Dieter,
nach Einfügen der Name-Property konnte ich problemlos kompilieren. Danke für Deine Hilfe.
Leider habe ich bei meinen ersten Tests unüberwindbare Schwierigkeiten.Ich habe meine Anmelde-Form
dazu genommen. Hier möchte ich durch einen Klick auf die Vollbild-Schaltfläche (2. von rechts) die Form auf die Bildschirm-Grösse bringen. Mit einem Klick auf den Minimize-Button soll die ursprüng-
liche Grösse wieder hergestellt werden.
Bei Test des beigefügten Beispiels wird zwar bei einem Klick auf den Maximize-Button der ganze Screen
belegt, die Form bleibt aber in der ursprünglichen Grösse. Den Minimize-Button habe ich noch nicht ge
testet.
Das Initialize im Form_Load-Event wird korrekt durchgeführt. Gemäss Anleitung im WorkShop sollte der
Code korrekt sein. Aber irgendwo steckt noch ein Fehler? Kannst Du nochmals weiterhelfen?
Danke
Rainer
Option Explicit
Dim oResize As clsResize
...
Private Sub Form_Load()
DisableCloseWindowButton Me
Set oResize = New clsResize
oResize.oForm = Me
oResize.Initialize
Me.KeyPreview = True
sevUser = ""
sevKennwort = ""
AnmeldeStatus = "Exit"
CryptZähler = 0
CheckPasswort = "Nein"
aRs_Close
sSQL = "SELECT * FROM tblsystem"
aRs.CursorLocation = adUseClient
aRs.Open sSQL, oConn, adOpenForwardOnly, adLockOptimistic
aRsOpen = True
If aRs.RecordCount > 0 Then
CheckPasswort = aRs!SysPassword
End If
If CheckPasswort <> "Ja" Then
sevLabel1.Visible = False
sevKennwort.Visible = False
End If
End Sub
Private Sub Form_Resize()
If Me.WindowState <> vbMinimized Then
oResize.DoResize
End If
End Sub | |
Re: method or data member not found | | | Autor: crosstravel | Datum: 15.11.15 09:12 |
| Guten Morgen Dieter,
ich habe leider nur die Version 5, welche ja nun bereits einige Jahre alt ist.
Sie doch so gut, und schicke mir die aktuelle Version. Ich werde versuchen, die
jetzt über den Shop zu bestellen.
danke
Rainer | |
Re: method or data member not found | | | Autor: crosstravel | Datum: 15.11.15 12:16 |
| Hallo Dieter,
bis zum Eintreffen der VbArchiv Volume 6 habe ich etwas mit dem Beispiel auf Vol. 5 gestestet.
Minimize und Maximize funktionieren damit - wenn es sich um eine einfache Form handelt.
Nun habe ich aber auf einer Form das TabStrip-Control mit mehreren Reitern. Der erste Reiter
wird wie erwartet maximiert (inkl. der Controls und Fonts) und auch wieder in den Normalzustand
versetzt.
Klicke ich aber auf die Reiter, wird nur eine weisse Fläche angezeigt. Alle Controls sind verschwunden.
Ich habe danach einige Routinen in der Klasse clsResize gemäss dem Teil 2 des Workshops (SSTAB) um die
dort enthaltenen Erweiterungen angepasst - jedoch das Problem besteht noch immer.
Muss evtl. bei der Verwendung des sevTabstrip etwas beachtet resp. vorgekehrt werden?
Danke
Rainer | |
Re: method or data member not found | | | Autor: crosstravel | Datum: 15.11.15 13:43 |
| Hallo Dieter,
genau diese Erweiterungen aus Teil 2 habe ich in die Klasse eingefügt. Ich sende Dir beiliegend
die entsprechenden Codeschnipsle (wegen der Grösse). Vieelicht kannst Du hier einen Fehler er-
kennen.
Danke
Rainer
Public Sub Initialize()
'Initialisieren
Dim oControl As Control
Dim sControlName As String
Dim iFontSize As Single
Dim lTag As Long
Dim mcol_SSTAB As Collection
Set mcol_SSTAB = New Collection
...
'Alle Controls durchlaufen und Eigenschaften speichern
For Each oControl In oForm_Now.Controls
On Error Resume Next
If oControl.left < 0 Then
mcol_SSTAB.Add oControl ' Merken
oControl.left = oControl.left + 750000 ' verschieben
End If
With oControl
Public Sub DoResize()
'Etwaige Fehler wie bei Timern usw. übergehen
On Error Resume Next
Dim oControl As Control
Dim sngFaktor_Height As Single
Dim sngFaktor_Width As Single
Dim sngFaktor_FontSize As Single
Dim sControlName As String
Dim mcol_SSTAB As Collection
Set mcol_SSTAB = New Collection
...
'Alle Controls durchlaufen und der Größe nach anpassen
For Each oControl In oForm_Now.Controls
If oControl.left < 0 Then
mcol_SSTAB.Add oControl
End If
sControlName = oControl.name
sControlName = sControlName & CStr(oControl.Index)
...
Else
DoResize_First False
End If
For Each oControl In mcol_SSTAB
oControl.left = oControl.left - 75000
Next
'Ursprungszustand wieder herstellen
Public Sub DoResize_First(ByVal bWithForm As Boolean)
'Etwaige Fehler wie bei Timern usw. übergehen
On Error Resume Next
Dim mcol_SSTAB As Collection
Set mcol_SSTAB = New Collection
Dim oControl As Control
....
'Alle Controls durchlaufen und der Größe nach anpassen
For Each oControl In oForm_Now.Controls
If oControl.left < 0 Then
mcol_SSTAB.Add oControl
End If
sControlName = oControl.name
sControlName = sControlName & CStr(oControl.Index)
....
Next
For Each oControl In mcol_SSTAB
oControl.left = oControl.left - 75000
Next
'zu guter Letzt Größe der Form wieder herstellen
If bWithForm Then
oForm_Now.Height = oForm_First.Height
oForm_Now.Width = oForm_First.Width
End If
End Sub
Beitrag wurde zuletzt am 15.11.15 um 13:45:00 editiert. | |
Re: method or data member not found | | | Autor: crosstravel | Datum: 15.11.15 15:51 |
| Hallo,
ich hoffe, das ist mein letztes posting zu diesem Problem. Inzwischen funktioniert das Resizing weitgehend auch bei den sevTabStrip. Ich hatte eine Instruktion falsch gesetzt. Folgende Fehler
habe ich jedoch noch bei DataGrids auf dem Tab festgestellt:
- Obwohl die Form auf dem Tab vergössert wurde, wir der Text im ColumnHeader normal dargestellt
- Der Spalteninhalt wird korrekt resized (grösser) angezeigt - aber
- Die Breite der Spalten wird nicht angepasst; ist also für den Text zu schmal
Woran könnte dieses Verhalten liegen?
Danke
Rainer | |
Reisizing eines sevDataGrids auf einem sevTabStrip | | | Autor: crosstravel | Datum: 16.11.15 18:18 |
| Hallo Dieter,
wäre es Dir möglich, die nachstehenden offenen Probleme bezüglich dem Resizing eines
sevDataGrids anzuschauen. bis auf diese Punkte funktionieren die Klassen sehr gut.
Nochmals vielen Dank für Deine Unterstützung.
- Obwohl die Form auf dem Tab vergössert wurde, wird der Text im ColumnHeader normal dargestellt
- Der Spalteninhalt wird korrekt resized (grösser) angezeigt - aber
- Die Breite der Spalten wird nicht angepasst; ist also für den Text zu schmal
Vielen dank und einen schönen Abend.
Rainer | |
Re: Reisizing eines sevDataGrids auf einem sevTabStrip | | | Autor: crosstravel | Datum: 16.11.15 19:01 |
| Hallo Dieter,
das habe ich vermutet. kannst du mir sagen, wie ich diese beiden Komponenten in die clsResize Klasse einbinden kann? Ich hatte es gestern versucht .... allerding ohne Erfolg.
Danke
Rainer | |
| 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 |
|
|
Neu! sevCoolbar 3.0
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|