Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Probleme mit SelStart

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Probleme mit SelStart (1348 mal gelesen)
Einstein
Mitglied
Zerspanungsmechaniker-Drehtechnik


Sehen Sie sich das Profil von Einstein an!   Senden Sie eine Private Message an Einstein  Schreiben Sie einen Gästebucheintrag für Einstein

Beiträge: 94
Registriert: 20.02.2005

erstellt am: 13. Aug. 2007 20:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


UserForm.gif

 
Hallo Forum! Ich hab eine Frage bei der ich mir nicht sicher bin, ob ich es eventuell falsch programmiert habe oder VBA bzw. MSForms einen Fehler beinhalten.

Es geht um folgendes: Bei einem UserForm (siehe Bild) erstelle ich zur Laufzeit des Codes auf einer Multipage mehrere Pages ("Page1", "Page2", ...). In diesen Pages erstelle ich wiederum je eine TextBox ("TextBox1", "TextBox2", ...) und stelle deren Eigenschaften ein.
Unter anderem auch die Eigenschaft "SelStart" welche ich mit dem Wert "0" belege. (Damit der Text, den ich der TextBox bereits zugewiesen habe, von oben angezeigt wird.)

Mein Problem: Wenn ich das UserForm starte wird in der ersten Page in der TextBox ein Rollbalken angezeigt. Als nächstes klicke ich der Reihe nach (von links nach rechts) alle Pages an. Dabei wird in jeder TextBox ein Rollbalken angezeigt.
...Und jetzt die große Sch...: Wenn ich nach dem Start des UserForms als erstes auf die ganz rechte Page klicke ("Info...") und dann der Reihe nach von rechts nach links wird der Rollbalken bei den beiden Pages "Deinstallation" und "Kontakt" nicht angezeigt!? WARUM???

Hier der Code, der zur Laufzeit die Pages und die TextBoxes erstellt:
    For I1 = 1 To UBound(LineMsg)
        If InStr(1, LineMsg(I1), FileID(1), vbTextCompare) And Len(LineMsg(I1)) > Len(FileID(1)) Then
            I2 = I2 + 1
            Set ControlObject = MultiPage1.Add("Page" & CStr(I2), Mid(LineMsg(I1), Len(FileID(1)) + 1, Len(LineMsg(I1)) - Len(FileID(1)) + 1))
                Set ControlObject = MultiPage1.Pages("Page" & CStr(I2)).Controls.Add("Forms.TextBox.1", "TextBox" & CStr(I2))
                    For I3 = I1 + 1 To UBound(LineMsg)
                        If InStr(1, LineMsg(I3), FileID(2), vbTextCompare) Then I1 = I3: Exit For
                        frm_appendix.Controls("TextBox" & CStr(I2)).text = frm_appendix.Controls("TextBox" & CStr(I2)).text & LineMsg(I3) & vbCr
                    Next I3
                    frm_appendix.Controls("TextBox" & CStr(I2)).Height = 77
                    frm_appendix.Controls("TextBox" & CStr(I2)).Left = 4.5
                    frm_appendix.Controls("TextBox" & CStr(I2)).top = 5
                    frm_appendix.Controls("TextBox" & CStr(I2)).Width = 312
                    frm_appendix.Controls("TextBox" & CStr(I2)).MultiLine = True
                    frm_appendix.Controls("TextBox" & CStr(I2)).ScrollBars = fmScrollBarsBoth
                    frm_appendix.Controls("TextBox" & CStr(I2)).EnterKeyBehavior = False
                    frm_appendix.Controls("TextBox" & CStr(I2)).SelStart = 0
                    frm_appendix.Controls("TextBox" & CStr(I2)).Locked = True
                    If I2 = 1 Then frm_appendix!TextBox1.SetFocus
               
        End If
    Next I1

------------------
MfG  A. Einstein    

P.S. Rechtschreibefehler sind gewollt und dienen der allgemeinen Belustigung!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


Sehen Sie sich das Profil von Carsten1210 an!   Senden Sie eine Private Message an Carsten1210  Schreiben Sie einen Gästebucheintrag für Carsten1210

Beiträge: 1357
Registriert: 24.07.2002

AutoCAD ACA 2018
Solidworks 2016 Sp5
Enterprise PDM 2016 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell T3620
Intel Core i7-7700K
16 GB Arbeitsspeicher
2x Samsung S24C650
Dell M4800

erstellt am: 13. Aug. 2007 21:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Einstein 10 Unities + Antwort hilfreich

Hi Einstein,

Lade doch mal die komplette Userform (kannst den Rest ja rauslöschen) hoch.
Nur mit dem bißchen Code und dem Bild ist es immer schwierig den Fehler zu finden.

Gruß, Carsten

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Einstein
Mitglied
Zerspanungsmechaniker-Drehtechnik


Sehen Sie sich das Profil von Einstein an!   Senden Sie eine Private Message an Einstein  Schreiben Sie einen Gästebucheintrag für Einstein

Beiträge: 94
Registriert: 20.02.2005

erstellt am: 13. Aug. 2007 23:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


AutoCADMasseberechnung_V3.04.zip

 
Hallo Carsten1210,

ich hab mal das komplette Tool hochgeladen. Du musst es aber installieren damit du zu der besagten UserForm gelangst. (in der Datei "Installation.txt" findest du die Installationsanleitung)
Da kannst du mir gleich ein Feedback zu dem, fast fertig gestellten, Tool geben, Ok!?

------------------
MfG  A. Einstein    

P.S. Rechtschreibefehler sind gewollt und dienen der allgemeinen Belustigung!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


Sehen Sie sich das Profil von Carsten1210 an!   Senden Sie eine Private Message an Carsten1210  Schreiben Sie einen Gästebucheintrag für Carsten1210

Beiträge: 1357
Registriert: 24.07.2002

AutoCAD ACA 2018
Solidworks 2016 Sp5
Enterprise PDM 2016 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell T3620
Intel Core i7-7700K
16 GB Arbeitsspeicher
2x Samsung S24C650
Dell M4800

erstellt am: 14. Aug. 2007 19:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Einstein 10 Unities + Antwort hilfreich

Hallo Einstein,

Wo der Fehler liegt, kann ich dir leider nicht sagen. 
Aber für mich stellt sich die Frage, warum du die Multipages während der Laufzeit generierst. Probier doch mal aus, wenn du die Seiten während des Entwurfs zusammenstellst und nur die Textbox zur Laufzeit füllst.
Die Texte sind auf jeden Fall komplett vorhanden. Das kannst du überprüfen, wenn du den Text mal per Maus markierst und die Markierung weiter runter ziehst. Dann sind auch die Scrollbars wieder sichtbar.

Ansonsten ist es ein nettes Tool, besonders die Animation des Formulars bei der Berechnung.

Gruß, Carsten

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Einstein
Mitglied
Zerspanungsmechaniker-Drehtechnik


Sehen Sie sich das Profil von Einstein an!   Senden Sie eine Private Message an Einstein  Schreiben Sie einen Gästebucheintrag für Einstein

Beiträge: 94
Registriert: 20.02.2005

erstellt am: 16. Aug. 2007 16:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Carsten1210, ich hab noch mal eine ganz andere Frage: Wenn man das ganze Tool mit der Maus in der Titelleiste verschiebt dann bleibt diese neue Position nicht erhalten, nachdem man ein "Objekt gewählt" hat. Kannst du mir sagen wie man das programmieren muss, damit diese Position erhalten bleibt?

------------------
MfG  A. Einstein    

P.S. Rechtschreibefehler sind gewollt und dienen der allgemeinen Belustigung!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


Sehen Sie sich das Profil von Carsten1210 an!   Senden Sie eine Private Message an Carsten1210  Schreiben Sie einen Gästebucheintrag für Carsten1210

Beiträge: 1357
Registriert: 24.07.2002

AutoCAD ACA 2018
Solidworks 2016 Sp5
Enterprise PDM 2016 Sp5
Pascam Woodworks
Visual Studio 2017 Pro
Windows 10 64Bit
Dell T3620
Intel Core i7-7700K
16 GB Arbeitsspeicher
2x Samsung S24C650
Dell M4800

erstellt am: 16. Aug. 2007 18:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Einstein 10 Unities + Antwort hilfreich

Hi,

Es gibt bei den Formularen eine Eigenschaft, die sich "Startupposition" nennt. Diese kannst du auf manuell stellen und Koordinaten mitgeben (Left und Top). Diese müsstest du dann bei Schließen deiner Form speichern und beim nächsten Aufruf wieder anwenden. Dann sollte es klappen.

Gruß, Carsten

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

dobatec
Mitglied
st.gepr.Baut./Stud. W.Inf.


Sehen Sie sich das Profil von dobatec an!   Senden Sie eine Private Message an dobatec  Schreiben Sie einen Gästebucheintrag für dobatec

Beiträge: 34
Registriert: 23.03.2006

AutoCad2006,AcadBau2000,ADT3.0,
AMD64.3800

erstellt am: 16. Aug. 2007 22:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Einstein 10 Unities + Antwort hilfreich

Hallo Einstein,

dein Problem liegt evtl. im Steuerelement MultiPage. Ich hatte vor ca. zwei Wochen noch ein ähnliches Problem. Bei mir war es ein TreeView, welches ich befüllt hatte und das mir dann nur Schrott angezeigt hat sobald ich auf dessen Page gewechselt habe. Ich hab dann das TreeView mal frei im Form plaziert und alles funktionierte. Daher werde ich in Zukunft solche Dinge wie TextBox, TreeView u.ä. nur dann mit Daten füllen, wenn die jeweilig dazugehörende Page auch aktiv wird. Probiers einfach mal aus und plaziere deine TextBoxes nicht auf den Pages.

Gruß doba

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Stelli1
Moderator
Verm.-Ing.


Sehen Sie sich das Profil von Stelli1 an!   Senden Sie eine Private Message an Stelli1  Schreiben Sie einen Gästebucheintrag für Stelli1

Beiträge: 1521
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 17. Aug. 2007 20:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Einstein 10 Unities + Antwort hilfreich

Hallo Albert  ,

da hast du ein schönes Programm gebastelt. Hut ab.
Vor allem die Installationsfunktion und wie Carsten schon schrieb die Animation bei der Berechnung. :top

ich hab mal ein paar Zeilen geändert. Jetzt klappt es auch mit der Scrollbar.

Code:
...
    On Error GoTo 0: Err.Clear
    For I1 = 1 To UBound(LineMsg)
        If InStr(1, LineMsg(I1), FileID(1), vbTextCompare) And Len(LineMsg(I1)) > Len(FileID(1)) Then
            I2 = I2 + 1
            Set ControlObject = MultiPage1.Add("Page" & CStr(I2), Mid(LineMsg(I1), Len(FileID(1)) + 1, Len(LineMsg(I1)) - Len(FileID(1)) + 1))
            '''' Neue Seite aktivieren sonst kann der Focus nicht aufs Textfeld gesetzt werden
            Me.MultiPage1.Value = Me.MultiPage1.Pages.Count - 1
            Set ControlObject = MultiPage1.Pages("Page" & CStr(I2)).Controls.Add("Forms.TextBox.1", "TextBox" & CStr(I2))
            '''' Focus ins Textfeld, dann werden auch die Scrollbars richtig "brechnet"
            ControlObject.SetFocus
            For I3 = I1 + 1 To UBound(LineMsg)
                If InStr(1, LineMsg(I3), FileID(2), vbTextCompare) Then I1 = I3: Exit For
                frm_appendix.Controls("TextBox" & CStr(I2)).text = frm_appendix.Controls("TextBox" & CStr(I2)).text & LineMsg(I3) & vbCr
            Next I3
            Me.Controls("TextBox" & CStr(I2)).Height = 77
            Me.Controls("TextBox" & CStr(I2)).Left = 4.5
            Me.Controls("TextBox" & CStr(I2)).top = 5
            Me.Controls("TextBox" & CStr(I2)).Width = 312
            Me.Controls("TextBox" & CStr(I2)).MultiLine = True
            Me.Controls("TextBox" & CStr(I2)).ScrollBars = fmScrollBarsBoth
            Me.Controls("TextBox" & CStr(I2)).EnterKeyBehavior = False
            Me.Controls("TextBox" & CStr(I2)).SelStart = 0
            Me.Controls("TextBox" & CStr(I2)).Locked = True
           
            '''' ersetzt durch siehe oben       
            'If I2 = 1 Then frm_appendix!TextBox1.SetFocus
               
        End If
    Next I1
    '''' Erste Seite aktivieren
    Me.MultiPage1.Value = 0
End Sub


Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Einstein
Mitglied
Zerspanungsmechaniker-Drehtechnik


Sehen Sie sich das Profil von Einstein an!   Senden Sie eine Private Message an Einstein  Schreiben Sie einen Gästebucheintrag für Einstein

Beiträge: 94
Registriert: 20.02.2005

erstellt am: 19. Aug. 2007 19:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

@ Stelli1, vielen Dank für deine Aw! Ich hab's natürlich gleich ausprobiert ...und sieh da - es funktioniert. Stundenlang hab ich am Code gebastelt und bin zu keiner Lösung gekommen und bei dir klappt das - Hut ab! Hast du beruflich etwas mit Visual Basic zu tun oder einen entsprechenden Lehrgang besucht?

Eine kleine Frage noch zum Schluss: Ich erwähnte bereits das Problem, dass beim beenden des "Selection Set" (Objekt wählen), das UserForm immer in die Mitte des Bildschirm platziert wird, auch wenn das UserForm zuvor verschoben wurde. Hast du dafür eventuell auch noch ne Lösung, um die zuvor gewählte Position wieder zu "finden"?

------------------
MfG  A. Einstein    

P.S. Rechtschreibefehler sind gewollt und dienen der allgemeinen Belustigung!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Stelli1
Moderator
Verm.-Ing.


Sehen Sie sich das Profil von Stelli1 an!   Senden Sie eine Private Message an Stelli1  Schreiben Sie einen Gästebucheintrag für Stelli1

Beiträge: 1521
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 20. Aug. 2007 11:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Einstein 10 Unities + Antwort hilfreich

Hallo,

du musst dir die Position beim ausblenden des Formulars speichern

Code:
Private Sub CommandButton3_Click()
    lngLeft = Me.Left
    lngTop = Me.top

    frm_AutoCAD_MassCalculation.Hide: SelectingObjectVolume(2) = 0
    Set SelectionSet = ThisDrawing.SelectionSets.Add("UserChoice_SelSet")
....

und die Werte wieder zurückschreiben wenn das Formular wieder eingeblendet wird
Code:
Private Sub UserForm_Activate()
    If lngLeft > 0 Or lngTop > 0 Then
        Me.Left = lngLeft
        Me.top = lngTop
    End If
End Sub

dazu im Deklarationsteil die beiden Variablen deklarieren
Code:
Option Explicit
.....
    Dim Interface As AcadEntity
    Dim lngLeft As Long
    Dim lngTop As Long


Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz