Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  VBasic / vb.net / vbs / wsh
  ComboBox aktualisieren

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
Autor Thema:  ComboBox aktualisieren (3635 mal gelesen)
TM Popp
Mitglied
Tischlermeister


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

Beiträge: 51
Registriert: 20.11.2003

erstellt am: 01. Sep. 2008 20:26    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 Zusammen!


ich hab hier ein kleines Problem... Gerade habe ich eine UserForm erstellt mit dem ich durch verschiedene Button entsprechende Layer erzeugen kann. Darüber hinaus befindet sich im gleichen Formular eine Combobox die alle vorhandenen Layer zeigt. Leider ist es mir aber nicht gelungen die Box so zu konfigurieren, dass sie alle Layer, einschließlich der neu erstellten anzeigt. Dazu müsste die Anzeige  ja aktualisiert werden, was trotz einiger Versuche irgendwie nicht gelingen will.
Für eure Hilfe wäre ich sehr dankbar!

Viele Grüße

------------------
TM Popp

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2014
Plateia, Canalis
Visual Basic

erstellt am: 02. Sep. 2008 00:45    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 TM Popp 10 Unities + Antwort hilfreich

Hallo,
ohne Code schwierig zu beurteilen.
Wird die Combo erweitert ?
Eventuell tut's ja schon ein DoEvents zwischendrin?
Grüße,
Klaus

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

MWN
Mitglied
Dipl.-Ing.


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

Beiträge: 492
Registriert: 14.02.2007

erstellt am: 02. Sep. 2008 07:24    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 TM Popp 10 Unities + Antwort hilfreich

Guten Morgen TM Popp,

hast du schon einmal

Code:
ComboBox1.items.add("Layername")

ausprobiert?
In meinem VB.NET 2008 Express Edition funktioniert es einwandfrei!
Grüße

Tobias

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

TM Popp
Mitglied
Tischlermeister


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

Beiträge: 51
Registriert: 20.11.2003

AutoCad 2020 unter Windows 10

erstellt am: 02. Sep. 2008 21:54    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 Klaus Hallo Tobias,

leider funktioniert der Befehl ‘ComboBox1.items.Add ("Layername")’ unter AutoCad 2002 nicht. Hier wird die Fehlermeldung ‘Methode oder Datenbankobjekt nicht gefunden’ ausgegeben.

Deshalb hier einmal der Code mit dem die Abfragen aufgebaut sind:
Public Sub CreateLines()
Dim VarPoint As Variant
Dim StartPt(2) As Double
Dim Endpt(2) As Double
Dim NewLine As AcadLine
On Local Error Resume Next
Set AllLayers = Layers
LineSetupFrm.ComboBox1.Clear
For Each l In AllLayers
    If InStr(1, l.Name, "|") = 0 Then
        LineSetupFrm.ComboBox1.AddItem l.Name
    End If
Next
LineSetupFrm.ComboBox1.Text = ActiveLayer.Name

Set AllLStyles = Linetypes
LineSetupFrm.ComboBox2.Clear
For Each l In AllLStyles
    LineSetupFrm.ComboBox2.AddItem l.Name
Next
LineSetupFrm.ComboBox2.Text = ActiveLinetype.Name
LineSetupFrm.Show
If LineSetupFrm.OK = False Then Exit Sub
Do
    Prompt = "Wählen Sie den Startpunkt des Linienzuges:"
    VarPoint = Empty
    VarPoint = Utility.GetPoint(, vbCrLf & Prompt)
    If TypeName(VarPoint) = "Double()" Then
        StartPt(0) = VarPoint(0)
        StartPt(1) = VarPoint(1)
        StartPt(2) = VarPoint(2)
        Do
            Prompt = "Wählen Sie den nächsten Punkt des Linienzuges:"
            VarPoint = Empty
            VarPoint = Utility.GetPoint(StartPt, vbCrLf & Prompt)
            If TypeName(VarPoint) = "Double()" Then
                Endpt(0) = VarPoint(0)
                Endpt(1) = VarPoint(1)
                Endpt(2) = VarPoint(2)
               
                Set NewLine = ModelSpace.AddLine(StartPt, Endpt)
               
                NewLine.Color = LineSetupFrm.GetColorIndex(LineSetupFrm.ImageCombo1.SelectedItem.Index)
                NewLine.Layer = LineSetupFrm.ComboBox1.Text
                NewLine.Linetype = LineSetupFrm.ComboBox2.Text
                NewLine.LinetypeScale = Utility.DistanceToReal(LineSetupFrm.Text1.Text, acDefaultUnits)
                NewLine.Lineweight = LineSetupFrm.GetLWIndex(LineSetupFrm.ImageCombo2.SelectedItem.Index)
                NewLine.Thickness = Utility.DistanceToReal(LineSetupFrm.Text2.Text, acDefaultUnits)

                StartPt(0) = Endpt(0)
                StartPt(1) = Endpt(1)
                StartPt(2) = Endpt(2)
            Else
                Exit Do
            End If
        Loop
    Else
        Exit Do
    End If
Loop

SaveSetting "BspLine", "Position", "Left", LineSetupFrm.Left
SaveSetting "BspLine", "Position", "Top", LineSetupFrm.top

Unload LineSetupFrm
End Sub

Dazu kommen noch die einzelnen Button  um die Layer zu erzeugen. Hier ein exemplarischer Code:
Private Sub CommandButton8_Click()
Dim NewLayer As AcadLayer
On Local Error Resume Next
    Set NewLayer = ThisDrawing.Layers.Add("Volllinie 0.25")
        Set AcadLayer = ThisDrawing.Layers("Volllinie 0.25")
            AcadLayer.Color = 127
Set AcadLayer = ThisDrawing.Layers("Volllinie 0.25")
    AcadLayer.Lineweight = acLnWt025
Set ActLayer = ThisDrawing.Layers("Volllinie 0.25")
    ActLayer.Freeze = False
        ThisDrawing.ActiveLayer = ActLayer
End Sub


Für eure Hilfe wäre ich sehr dankbar!

Viele Grüße

------------------
TM Popp

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

tbd
Moderator
Teamleiter


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

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600

erstellt am: 03. Sep. 2008 10: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 Nur für TM Popp 10 Unities + Antwort hilfreich

Hallo TM Popp,

zunächst eine Anmerkung. Hättest du dir kurz die Netiquette des Forums durchgelesen und dich an den Hinweis gehalten einen Beitrag mit der Programmversion (in deinem Fall VBA) deutlich zu kennzeichnen, hätten Missverständnisse vermieden werden können.

Nun aber zu deiner Frage:
Die benötigten Methoden der ComboBox sind .AddItem für das Hinzufügen von Einträgen und .List(Index) für das Abfragen einzelner Einträge.

Ich habe zwei gute Beiträge gefunden welche dir bei deinem Problem helfen können. Es handelt sich dabei zwar um Beispiele mit einer ListBox, jedoch lassen diese sich 1 zu 1 für eine ComboBox anwenden. Dazu muss du die ListBox Instanz "List1" einfach durch deine ComboBox Instanz "LineSetupFrm.ComboBox1" ersetzen.
Hier die Beispiele für Eintrag suchen und löschen und Einträge editieren.

Hier noch ein Link mit vielen Tipps und Tricks rund um die ComboBox.

Ich hoffe diese Informationen helfen dir weiter.

------------------
Mfg Daniel

www.MySldWorks.de - SolidWorks Api Snippets

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2014
Plateia, Canalis
Visual Basic

erstellt am: 03. Sep. 2008 22:08    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 TM Popp 10 Unities + Antwort hilfreich


Verweise.jpg


Projekt.zip

 
Hallo TM Popp,
so ganz ist mir noch nicht klar wo das Problem liegt.
Bekommst Du die Layer nicht angezeigt? Oder bekommst Du einen Fehler beim Aufruf von .additem ?
Eventuell liegt es ja daran, dass Du unter Extras Verweise die Microsft Forms nicht angekreuzt hast (siehe JPG)
Beiliegend noch eine Zip mit einer Beispiel dvb zum Anzeigen der Layer in Combo und Listbox.
Vielleicht hilft es was,
Klaus 

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

TM Popp
Mitglied
Tischlermeister


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

Beiträge: 51
Registriert: 20.11.2003

erstellt am: 04. Sep. 2008 00:01    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.jpg

 
Hallo Zusammen!

mein Problem besteht darin, dass die neu erstellten Layer (Bsp.:Volllinie, schmal 0,25) erst nachdem ich die UserForm einmal geschlossen und wieder geöffnet habe unter der Rubrik 'Layer' angezeigt werden.
Eine aktalisierung der Combobox findet bei mir nicht statt.

Ich werde das Beispielprojekt von Klaus morgen mal ausprobieren um meinen Fehler auf die Spur zu kommen!

Ich werde dann Rückmeldung geben.
Bis dahin
Dirk

------------------
TM Popp

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

tbd
Moderator
Teamleiter


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

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600

erstellt am: 04. Sep. 2008 07:53    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 TM Popp 10 Unities + Antwort hilfreich

Guten Morgen Dirk,

du muss dich in ein Ereignis einklinken, in welchem die einzelnen Layer erzeugt werden. Von alleine geht in der Programmierung leider auch nichts, du muss schon selbst festlegen wann was passiert.
Wenn ich dein Code so betrachte müsste dies das Click-Ereignis des Buttons CommandButton8 sein.

Vom Ablauf könnte deine Aufgabe ungefähr so gelöst werden:

Code:
Private Sub CommandButton8_Click()
    'Layer erzeugen
    ...
    'Prüfen ob dieser Layer schon in der
    'ComboBox aufgelistet ist
    ...
    'Neuen Layer, wenn nicht vorhanden
    'in die ComboBox einfügen
End Sub

------------------
Mfg Daniel

www.MySldWorks.de - SolidWorks Api Snippets

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

TM Popp
Mitglied
Tischlermeister


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

Beiträge: 51
Registriert: 20.11.2003

erstellt am: 04. Sep. 2008 21: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

Hallo Zusammen!

Geschafft! Ich habe folgenden Code an den Button angehängt:

ComboBox1.Clear
    For Each ActLayer In ThisDrawing.Layers
    ComboBox1.AddItem ActLayer.Name
          Next
End Sub

und siehe da es funktioniert. Wenn ich nun noch hinbekomme, dass nach dem der Eintrag gemacht wurde der aktuelle Layer in der Box 'gesetzt' ist, wäre es dann perfekt!
Habt ihr ne Idee?

Viele Grüße Dirk

------------------
TM Popp

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

Stelli1
Ehrenmitglied
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-2010, Rasterdesign
MapGuide 6.5 - 2010
Oracle 9i,10g Enterprise
autodesk Topobase 2-2010
VS6, VS.net 2010

erstellt am: 05. Sep. 2008 11:53    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 TM Popp 10 Unities + Antwort hilfreich

Hallo Dirk,

wie wäre es mit

Code:
combobox1.text = neuerLayer

Übrigens gibt es ein eigenes Forum für AutoCAD VBA.

Wilfried Stelberg

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

[Diese Nachricht wurde von Stelli1 am 05. Sep. 2008 editiert.]

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

wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



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

Beiträge: 2154
Registriert: 02.05.2005

CAD:
AutoCAD bis 2013
Arcibem
Internet-Startseite:
http://www.archi.de

erstellt am: 05. Sep. 2008 12:12    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 TM Popp 10 Unities + Antwort hilfreich

Hallo,
wie wäre es mit
Code:
ComboBox1.Value = ThisDrawing.ActiveLayer.Name

nach der Initialisierung der Combobox.

Grüsse, Henning

------------------
Henning Jesse
VoxelManufaktur
Computer-Dienstleistungen für Architekten und Ingenieure

  http://www.voxelman.de

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

TM Popp
Mitglied
Tischlermeister


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

Beiträge: 51
Registriert: 20.11.2003

erstellt am: 06. Sep. 2008 11:51    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 Zusammen!

jetzt funktioniert alles wunderbar.

Vielen dank für eure Unterstützung!!!!!!!!!!!!!

Gruß Dirk

------------------
TM Popp

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

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



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

Beiträge: 2657
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
Dell Precision 7540 mobile Workstation,
64GB, Quadro RTX 3000;
SWX2020 SP5;
SAP/PLM+ECTR;
DriveWorks Pro;
Programmierung: VBA, aktuell Visual Studio 2017/VB.Net

erstellt am: 09. Sep. 2008 13:04    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 TM Popp 10 Unities + Antwort hilfreich

Aber einfacher (und eventuell performanter, ich weiß nicht, wie flott VBA bei Autocad ist und wieviele Layer du damit handeln willst) wäre es gewesen, wenn du dem Vorschlag von Daniel gefolgt wärest und beim Erzeugen des Layer diesen einfach mit
LineSetupFrm.ComboBox1.AddItem "<Name des Layers>"
der Combobox hinzugefügt hättest anstatt die Combobox komplett zu leeren und neu zu befüllen.

Aber egal, hauptsache, es funzt und du bist zufrieden 

------------------
Klaus

www.al-ko.com | mein Gästebuch | privat...

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