Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Inhalte eines ListViews an AutoCAD - Tabelle übergeben

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:  Inhalte eines ListViews an AutoCAD - Tabelle übergeben (2948 mal gelesen)
Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 19. Okt. 2011 12: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


ListViewEinträge.jpg


AutoCAD_Tabelle.jpg

 
Hallo zusammen!

Ich habe unter VBA ein ListView, in dem mir Daten aus einer Datenbank angezeigt werden.

Ist es möglich bestimmte Einträge in dem ListView zu makieren
und dann per Buttomklick in eine AutoCAD Tabelle zu schreiben,
sodas mir diese im Layout angezeigt wird?

Wäre schön, wenn mir da jemand bei helfen könnte.

So befüll ich das ListView:

Code:

'---ListView Einstellungen----------------------------------------------
With ListView1
    .ListItems.Clear
    .ColumnHeaders.Clear
    .View = lvwReport
    .SmallIcons = ImageList1
    .Sorted = True
End With
'---Spaltendefinition -->  Variante 2 -----------------------------------
With ListView1.ColumnHeaders
    .Add , , "Status", 13                            'Status
    .Add , , "Ba-Nr", 60                            'Vorgangsnummer
    .Add , , "Position", 40                        'Auftragspositionsnummer
    .Add , , "Objekt-Bezeichnung", 200              'Objektbezeichnung
    .Add , , "Positions-Bezeichnung", 140            'Positionsbezeichnung
    .Add , , "Projektleitung", 70                    'Projektleitung
    .Add , , "Montagebeginn", 60                    'Montagebeginn
    .Add , , "Vermerk", 60                          'Vermerk
End With
'---ListView mit Datenbankinformationen füllen---------------------------
'Rs.MoveFirst

Do Until Rs.EOF
    Set LItem = ListView1.ListItems.Add()
    LItem.Text = ""                                    'Status
    LItem.SubItems(1) = (Rs!AUF_NR & "")                'Vorgangsnummer
    LItem.SubItems(2) = (Rs!AUF_POS & "")              'Auftragspositionsnummer
    LItem.SubItems(3) = (Rs!AUF_BEZEICHNUNG & "")      'Objektbezeichnung
    LItem.SubItems(4) = (Rs!AUF_POS_BEZ & "")          'Positionsbezeichnung
    LItem.SubItems(5) = (Rs!SACHBEARBEITER & "")        'Projektleitung
    LItem.SubItems(6) = (Rs!AUF_MONTDATUM & "")        'Montagebeginn
    LItem.SubItems(7) = (Rs!AUF_TERMIN_VERMERK & "")    'Vermerk
    If Len(LItem.SubItems(7)) > 0 Then
        LItem.SmallIcon = 1
    End If
    Rs.MoveNext
Loop
Rs.Close


Vielen Dank im Voraus.

------------------
Gruß

Dirk

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: 19. Okt. 2011 20: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 Nur für Dirk.B 10 Unities + Antwort hilfreich

Hallo Dirk,

hast du schon den Code wie die AutoCAD Tabelle gefüllt wird?
Ich habe noch nichts mit einer Tabelle gemacht.
Im Listview könnest du eine Checkbox anzeigen lassen und die gewählten rausschreiben.

Gruß
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

startrek
Moderator
Architekt


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

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 19. Okt. 2011 20:57    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 Dirk.B 10 Unities + Antwort hilfreich

Auch Hallo,

nur ganz kurz, zu handlen sind die Dinger nur über Schleifen, also immer hübsch 2 Schleifchen um Spalten und Zeilen zu durchlaufen.

In http://ww3.cad.de/foren/ubb/Forum259/HTML/001778.shtml#000003  ist das kurz tangiert, habe seither aber auch nix mehr damit gemacht;-)

lg Nancy

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

Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 20. Okt. 2011 14:56    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


Tabelle01.jpg


Tabelle.jpg

 
Hallo zusammen!

Vielen Dank für die Infos.
Hab daraufhin mal so einiges probiert.
Dieses funktioniert soweit sogut 

Code:

Dim li(6) As String
Dim col As Long
'########################################################################################
'##---Laden und Füllen der UserForm------------------------------------------------------
Public Sub UserForm_Initialize()

'##--ListView Einstellungen--!!!
With ListView1
    .ListItems.Clear
    .ColumnHeaders.Clear
    .View = lvwReport
    .Sorted = True
End With

'--Spaltendefinition
With ListView1.ColumnHeaders
    .Add , , "Stück", 35            'Stückzahl
    .Add , , "Artikel-Nr", 60        'Artikelnummer
    .Add , , "Beschreibung", 160    'Beschreibung
    .Add , , "Maß X", 35            'Maß X
    .Add , , "Maß Y", 35            'Maß Y
    .Add , , "Maß Z", 35            'Maß Z
End With

'--Anzahl der ColumHeader
col = ListView1.ColumnHeaders.Count

'--Namesübergabe
li(1) = ListView1.ColumnHeaders(1)
li(2) = ListView1.ColumnHeaders(2)
li(3) = ListView1.ColumnHeaders(3)
li(4) = ListView1.ColumnHeaders(4)
li(5) = ListView1.ColumnHeaders(5)
li(6) = ListView1.ColumnHeaders(6)

'--Voreinstellungen der Schalter (CommandButton)
With cmdende
    .Caption = "  Beenden"
    .Picture = ImageList1.ListImages(2).Picture
    .PicturePosition = fmPicturePositionLeftCenter
End With

With cmdtoexcel
    .Caption = "  Übergabe / Tabelle"
    .Picture = ImageList1.ListImages(19).Picture
    .PicturePosition = fmPicturePositionLeftCenter
End With

With cmdladen
    .Caption = "  laden aus"
    .Picture = ImageList1.ListImages(16).Picture
    .PicturePosition = fmPicturePositionLeftCenter
End With

End Sub

'##--Ereignisprozedur des Button Beende/Abbrechen---------------------------------------
Private Sub cmdende_Click()
    Unload Me
    End
End Sub

'##--Ereignisprozedur des Button Übergabe Excelen---------------------------------------
Private Sub cmdtoexcel_Click()
Dim EinPkt As Variant

Me.Hide

EinPkt = ThisDrawing.Utility.GetPoint(, vbCrLf & "Bitte den Einfügepunkt bestimmen")

Dim NewTable As AcadTable
Set NewTable = ThisDrawing.PaperSpace.AddTable(EinPkt, 5, col, 3, 20)
NewTable.TitleSuppressed = False
NewTable.HeaderSuppressed = True

With NewTable
    .RegenerateTableSuppressed = False
 
        .SetCellTextHeight A, E, 3.5
        .SetCellAlignment A, E, acMiddleCenter
        .SetCellType A, E, acTextCell
        .SetCellTextStyle A, E, "Tahoma"
        .SetText 0, 0, "Bedarfsliste"
       
        .SetText 1, 0, li(1)
        .SetCellTextHeight 1, 0, 1.5
        .SetCellTextStyle 1, 0, "Tahoma"
        .SetText 1, 1, li(2)
        .SetCellTextHeight 1, 1, 1.5
        .SetCellTextStyle 1, 1, "Tahoma"
        .SetText 1, 2, li(3)
        .SetCellTextHeight 1, 2, 1.5
        .SetCellTextStyle 1, 2, "Tahoma"
        .SetText 1, 3, li(4)
        .SetCellTextHeight 1, 3, 1.5
        .SetCellTextStyle 1, 3, "Tahoma"
        .SetText 1, 4, li(5)
        .SetCellTextHeight 1, 4, 1.5
        .SetCellTextStyle 1, 4, "Tahoma"
        .SetText 1, 5, li(6)
        .SetCellTextHeight 1, 5, 1.5
        .SetCellTextStyle 1, 5, "Tahoma"
       
End With

End Sub


Kann man da noch einiges verbessern oder eleganter schreiben?
Die Zeilenhöhe von 3 wird nicht wirklich übernommen?

Jetzt stellt sich für mich noch die Frage, wie bekomme ich die Zeilen aus dem ListView in die Zeilen (Zellen) der Tabelle.
Auch hier müßte ich zuerst die Zeilenanzahl ermitteln, also
vermute ich ListView.SubItem.Count.

Kann mir dabei noch jemand weiter helfen.


------------------
Gruß

Dirk

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

Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

AutoCAD 2021/2022
CAD+T
HP ZBook 15 G4, 64-bit,
WIN 10 Pro

erstellt am: 20. Okt. 2011 15: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

Hallo Wilfried!

Zitat:

Im Listview könnest du eine Checkbox anzeigen lassen und die gewählten rausschreiben.

Wie müßte das denn aussehen?
Könntest Du mir da auf die Sprünge helfen.

------------------
Gruß

Dirk

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

erstellt am: 20. Okt. 2011 20:56    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 Dirk.B 10 Unities + Antwort hilfreich

Hi Dirk,

Das Control Listview muss folgende Eigenschaften haben:
.Checkboxes = true
.view = lvwReport

Dann werden Checkboxen pro Zeile angezeigt.

Gruss, Carsten

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

Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

AutoCAD 2021/2022
CAD+T
HP ZBook 15 G4, 64-bit,
WIN 10 Pro

erstellt am: 21. Okt. 2011 15:39    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!

So funktioniert es nun mit dem schreiben in die Tabelle.
Es dauert aber ziemlich lange.
Hat jemand eine Idee woran das liegen kann?

Das mit dem .Checkboxes = true / .view = lvwReport ist nun klar,
aber wie filter ich dieses in der Schleife aus, sodass auch  nur
die selectierten übergeben werden.

Code:

'##--Ereignisprozedur des Button Übergabe in die Tabelle----------------------------
Private Sub cmdtoexcel_Click()
Dim EinPkt As Variant

Me.Hide

EinPkt = ThisDrawing.Utility.GetPoint(, vbCrLf & "Bitte den Einfügepunkt bestimmen")

Dim NewTable As AcadTable
Set NewTable = ThisDrawing.PaperSpace.AddTable(EinPkt, row, col, 1.5, 20)
NewTable.TitleSuppressed = False
NewTable.HeaderSuppressed = True

With NewTable
    .RegenerateTableSuppressed = False
        '###---Überschrift------------------------
        .SetCellTextHeight A, E, 3.5
        .SetCellAlignment A, E, acMiddleCenter
        .SetCellType A, E, acTextCell
        .SetCellTextStyle A, E, "Tahoma"
        .SetText 0, 0, "Bedarfsliste"
        '###---Überschrift / Spaltenköpfe---------
        .SetText 1, 0, li(1)
        .SetCellTextHeight 1, 0, 1.5
        .SetCellTextStyle 1, 0, "Tahoma"
        .SetText 1, 1, li(2)
        .SetCellTextHeight 1, 1, 1.5
        .SetCellTextStyle 1, 1, "Tahoma"
        .SetText 1, 2, li(3)
        .SetCellTextHeight 1, 2, 1.5
        .SetCellTextStyle 1, 2, "Tahoma"
        .SetText 1, 3, li(4)
        .SetCellTextHeight 1, 3, 1.5
        .SetCellTextStyle 1, 3, "Tahoma"
        .SetText 1, 4, li(5)
        .SetCellTextHeight 1, 4, 1.5
        .SetCellTextStyle 1, 4, "Tahoma"
        .SetText 1, 5, li(6)
        .SetCellTextHeight 1, 5, 1.5
        .SetCellTextStyle 1, 5, "Tahoma"
       
        '###---Schleife für die Zeilen----
        For i = 4 To ListView1.ListItems.Count
                .SetText i, 0, ListView1.ListItems(i).Text
                .SetCellTextHeight i, 0, 1.5
                .SetCellTextStyle i, 0, "Tahoma"
                    '###---Schleife für die Spalten----
                    For j = 1 To ListView1.ColumnHeaders.Count - 1
                        .SetText i, j, ListView1.ListItems(i).SubItems(j)
                        .SetCellTextHeight i, j, 1.5
                        .SetCellTextStyle i, 0, "Tahoma"
                        .SetText i, j, ListView1.ListItems(i).SubItems(j)
                        .SetCellTextHeight i, j, 1.5
                        .SetCellTextStyle i, j, "Tahoma"
                        .SetText i, j, ListView1.ListItems(i).SubItems(j)
                        .SetCellTextHeight i, j, 1.5
                        .SetCellTextStyle i, j, "Tahoma"
                        .SetText i, j, ListView1.ListItems(i).SubItems(j)
                        .SetCellTextHeight i, j, 1.5
                        .SetCellTextStyle i, j, "Tahoma"
                        .SetText i, j, ListView1.ListItems(i).SubItems(j)
                        .SetCellTextHeight i, j, 1.5
                        .SetCellTextStyle i, j, "Tahoma"
                    Next j
        Next i
End With
End Sub


Vielen Dank im Voraus.

------------------
Gruß

Dirk

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

startrek
Moderator
Architekt


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

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 21. Okt. 2011 20:14    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 Dirk.B 10 Unities + Antwort hilfreich

Hi Dirk,

zum Zweiten, ich zitiere hier mal aus Kofler's VB6:

"Die Auswahlkästchen können unabhängig von der Markierung der Einträge gewählt werden. Damit stehen gleichzeitig zwei Selektionsmöglichkeiten zur Verfügung. Diese Doppelgleisigkeit kann leicht Verwirrung stiften - überlegen Sie also zweimal, ob Sie dieses (...) Feature nutzen möchten! (Im Programmcode erfolgt die Auswertung der beiden Markierungen über die Selected- und Checked-Eigenschaften des ListItem-Objekts.)"

Zum Ersten:

 

Zitat:
Original erstellt von Dirk.B:
So funktioniert es nun mit dem schreiben in die Tabelle.
Es dauert aber ziemlich lange.
Hat jemand eine Idee woran das liegen kann?

Würde sagen, das liegt in der Natur der Sache (des Objekts);-)
(Hatte ich mich auch schon mal gefragt - im verlinkten Thread.)
Performanter wäre es, in ein zweidim. Array rauszuschreiben und auf einen Hieb an Excel zu übergeben.

Etwas kommt mir nur seltsam vor, warum machst du in der Spaltenschleife 4x das Gleiche?

Code:

For j = 1 To ListView1.ColumnHeaders.Count - 1
    '0
    .SetText i, j, ListView1.ListItems(i).SubItems(j)
    .SetCellTextHeight i, j, 1.5
    .SetCellTextStyle i, 0, "Tahoma"
    '1
    .SetText i, j, ListView1.ListItems(i).SubItems(j)
    .SetCellTextHeight i, j, 1.5
    .SetCellTextStyle i, j, "Tahoma"
    '2
    .SetText i, j, ListView1.ListItems(i).SubItems(j)
    .SetCellTextHeight i, j, 1.5
    .SetCellTextStyle i, j, "Tahoma"
    '3
    .SetText i, j, ListView1.ListItems(i).SubItems(j)
    .SetCellTextHeight i, j, 1.5
    .SetCellTextStyle i, j, "Tahoma"
    '4
    .SetText i, j, ListView1.ListItems(i).SubItems(j)
    .SetCellTextHeight i, j, 1.5
    .SetCellTextStyle i, j, "Tahoma"
Next j

Anweisung '0 ist die mit .SetCellTextStyle i, 0, "Tahoma", Anweisungen 1-4 sehen für mich identisch aus?
IMHOIn my humble oppinion (Meiner Meinung nach) würde das doch nur Sinn machen, mit j+1 bis j+5 und j in step5?
Vielleicht hab ich aber auch nur was übersehen und seh grade den Wald, äh' Code vor lauter Zeilen nicht;-)

Gruß Nancy

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

Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 25. Okt. 2011 15: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


Tabelle02.jpg

 
Hallo zusammen!

Soweit funktionierts nun recht gut, bis auf die Geschichte mit dem
ListView / Checkboxes = True.
Siehe Ergebnis Bildchen.
Wie bekomme ich es hin, dass die selectierten Zeilen im ListView
in der Tabelle direkt untereinander geschrieben werden, ohne Leerzeilen.

Code:

'##--ListView Einstellungen
With ListView1
    .ListItems.Clear
    .ColumnHeaders.Clear
    .View = lvwReport
    .Sorted = True
    .Checkboxes = True
    .MultiSelect = True
End With

...

col = ListView1.ColumnHeaders.Count
row = ListView1.ListItems.Count

...
...

Private Sub cmdtoexcel_Click()

Dim EinPkt As Variant

Me.Hide

EinPkt = ThisDrawing.Utility.GetPoint(, vbCrLf & "Bitte den Einfügepunkt bestimmen")

Dim NewTable As AcadTable
Set NewTable = ThisDrawing.PaperSpace.AddTable(EinPkt, row, col, 1.5, 20)
NewTable.TitleSuppressed = False
NewTable.HeaderSuppressed = True

On Error Resume Next

With NewTable
    .RegenerateTableSuppressed = True
    .RecomputeTableBlock False
    .TitleSuppressed = False
    .HeaderSuppressed = False
    .SetTextStyle AcRowType.acTitleRow, "Standard"
    .SetTextStyle AcRowType.acHeaderRow, "Standard"
    .SetTextStyle AcRowType.acDataRow, "Standard"
   
    Dim i As Double
    Dim j As Double
           
    '##--Titel / Überschrift--
    .SetCellTextHeight i, j, 3
    .SetCellAlignment i, j, acMiddleCenter
    .SetCellType i, j, acTextCell
    .SetCellTextStyle i, j, "Tahoma"
    .SetText 0, 0, "Bedarfsliste"
   
    i = i + 1
   
    '##--Spaltenüberschriften--
        For j = 1 To .Columns
            .SetText i, j - 1, ListView1.ColumnHeaders(j).Text
            .SetCellTextHeight i, j - 1, 2.5
            .SetCellTextStyle i, j - 1, "Tahoma"
            .RowHeight = 3
        Next j
   

    '##--Zeieln füllen--
        For i = 2 To .Rows - 1
            For j = 1 To .Columns - 1
                .SetCellTextHeight i, 0, 3
                .SetCellTextHeight i, j, 3
                .SetCellAlignment i, 0, acMiddleCenter
                .SetCellAlignment i, j, acMiddleCenter
                .SetCellType i, 0, acTextCell
                .SetCellType i, j, acTextCell
                .SetCellTextStyle i, 0, "Tahoma"
                .SetCellTextStyle i, j, "Tahoma"
                If ListView1.ListItems(i).Checked = True Then
                    .SetText i, 0, ListView1.ListItems(i).Text: .SetText i, j, ListView1.ListItems(i).SubItems(j)
                End If
            Next j
        Next i

    .RegenerateTableSuppressed = False
    .Update
End With
End Sub


Vielen Dank im Voraus.

------------------
Gruß

Dirk

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: 25. Okt. 2011 16:32    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 Dirk.B 10 Unities + Antwort hilfreich

Hi Dirk,

Das mit dem Checked geht z.B. so:

If UserForm1.ListView1.ListItems.Item(I).Checked then...

Gruß, Carsten

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

Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 11. Nov. 2011 07:22    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


Bildchen_02.jpg

 
Guten Morgen zusammen!

Ich habe da noch 2 weitere Fragen und würde mich freuen, wenn mir dabei jemand weiterhelfen könnte  .

Mit der Tabelle funktioniert es soweit.
Nun möchte ich noch so einige Anpassungen vornehmen.

1. Titelzeile / Hintergrundfarbe ändern.
Hier ist merkwürdig, dass es bei einem Rchner
(Win XP SP2 / AutoCAD 2012) funktioniert
und bei einem Rechner (Win 7 / AutoCAD 2012) nicht.
Bei dem Win 7 Rechner wir die Farbe grundsätzlich schwarz
bzw. weiß dargestellt, siehe Bildchen_02.

Code:

Dim colfa(1) As New AcadAcCmColor
colfa(0).SetRGB 254, 217, 185  'hellorange
colfa(1).SetRGB 206, 253, 245  'hellblau

...
...
With NewTable
    .RegenerateTableSuppressed = True
    .RecomputeTableBlock False
    .TitleSuppressed = False
    .HeaderSuppressed = False
    .SetTextStyle AcRowType.acTitleRow, "Standard"
    .SetTextStyle AcRowType.acHeaderRow, "Standard"
    .SetTextStyle AcRowType.acDataRow, "Standard"
    If OptionButton1.Value = True Then
        .SetBackgroundColor AcRowType.acTitleRow, colfa(0)
    Else
        .SetBackgroundColor AcRowType.acTitleRow, colfa(1)
    End If
    .SetBackgroundColorNone AcRowType.acTitleRow, False
...
...



2. Zeilen.- bzw. Spaltenbreite ändern.
Hier bekomme ich es leider nicht hin eine einzelne Spalte
von der Breite her zu ändern.
Folgendes möchte ich gerne erreichen.
Wird eine bestimmte Spaltenkopfüberschrift erkannt, dann soll die Spalte auf ein Maß X geändert werden.

Code:

Dim NewTable As AcadTable
'--Vorgaben zur Tabellenerstellung--
Set NewTable = ThisDrawing.PaperSpace.AddTable(EinPkt, row, col, rowhe, colwe)
...
...
'--Spaltenüberschriften--
    For j = 1 To .Columns
        .SetText i, j - 1, ListView1.ColumnHeaders(j).Text
        Select Case ListView1.ColumnHeaders(j).Text
            Case "Bestelltext"
                .SetColumnWidth j, 160
                'MsgBox "Spalte mit dem Text / " & ListView1.ColumnHeaders(j).Text & " / gefunden"
            End Select
           
        .SetCellAlignment i, j - 1, acMiddleCenter
        .SetCellTextHeight i, j - 1, coltxthe
        .SetCellTextStyle i, j - 1, "Tahoma"
        .SetRowHeight i, 3
    Next j

Vielen Dank im Voraus.


------------------
Gruß

Dirk

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

startrek
Moderator
Architekt


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

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 11. Nov. 2011 14: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 Nur für Dirk.B 10 Unities + Antwort hilfreich

Hi Dirk,

zu 2.) fang mal bei Null an, also zu zählen meine ich;-)

Code:
For i = 0 To .Columns - 1

HTHHope this helps (Hoffe, es hilft weiter), Nancy

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

Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 20. Nov. 2011 13:58    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!

Soweit läuft mein Programm.
Nun möchte ich noch erreichen, dass wenn bestimmte CheckBox Werte gesetzt sind, die entsprechende Spalte gelöscht wird.

Beziehe ich mich auf das Listview, funktioniert es auch, aber hier
könne die Spaltenübesrschriften aber je nach Anwendung unterschiedlich sein.

Ich möchte die Spaltenkopfnamen ermittel und vergleichen ob diese überhaupt vorhanden sind und wenn ja und die CheckBox auf False steht, soll die Spalte gelöscht werden.

Leider funktioniert es so nicht:

Code:

    Dim k As Long
    'Dim cName As String
    For k = 1 To .Columns
        Select Case .GetColumnName(k)
            Case "St.-Pos."
                If Optionen.CB_Pos.value = False Then
                    .DeleteColumns k, 1
                End If
            Case "Menge"
                If Optionen.CB_Menge.value = False Then
                    .DeleteColumns k, 1
                End If
            Case "Einheit"
                If Optionen.CB_Einheit.value = False Then
                    .DeleteColumns k, 1
                End If
            Case "Art.-Nr."
                If Optionen.CB_ArtNr.value = False Then
                    .DeleteColumns k, 1
                End If
            Case "Bestelltext"
                If Optionen.CB_BeTxt.value = False Then
                    .DeleteColumns k, 1
                End If
            Case "Länge"
                If Optionen.CB_Laenge.value = False Then
                    .DeleteColumns k, 1
                End If
            Case "Breite"
                If Optionen.CB_Breite.value = False Then
                    .DeleteColumns k, 1
                End If
            Case "Stärke"
                If Optionen.CB_Staerke.value = False Then
                    .DeleteColumns k, 1
                End If
            Case "Bemerkung"
                If Optionen.CB_Bemerk.value = False Then
                    .DeleteColumns k, 1
                End If
            Case "Symbol"
                If Optionen.CB_Symbol.value = False Then
                    .DeleteColumns k, 1
                End If
        End Select
    Next


Wie muß ich die .Columns durchlaufen um die Column.Name zu ermitteln?? 

Vielen Dank im Voraus.

------------------
Gruß

Dirk

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

startrek
Moderator
Architekt


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

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 20. Nov. 2011 17:57    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 Dirk.B 10 Unities + Antwort hilfreich

Hi Dirk,

wenn ich das richtig sehe im Objektkatalog <F2> hat AcadTable gar keine GetColumnname-Methode, sondern nur IAcadTable2 aber selbst da werd ich auch nicht recht schlau draus;-)

Ich würde es so in der Art angehen (in einer neuen, leeren Zeichnung):

Code:

Sub table_add()
  Dim table As AcadTable, pt(2) As Double, i%, s
  Set table = ThisDrawing.ModelSpace.AddTable(pt, 4, 7, 10, 20)
  For i = 0 To table.Columns - 1
      table.SetText 1, i, CStr(i)
  Next
  ZoomExtents
End Sub

Sub vgl()
  Dim table As AcadTable, arr, i%, j%
  Set table = ThisDrawing.ModelSpace.Item(0)
  arr = Array(1, 3, 5)
  For i = table.Columns - 1 To 0 Step -1
      For j = 0 To 2
        If table.GetText(1, i) = CStr(arr(j)) Then
            table.DeleteColumns i, 1
            Exit For
        End If
      Next
  Next
End Sub


BTWBy the way (So nebenbei bemerkt) - warum geht dein Spaltenzähler bei 1 los? Option Base 1?

lg Nancy

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

Dirk.B
Mitglied
Tischler / Leiter Arbeitsvorbereitung


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

Beiträge: 534
Registriert: 25.11.2003

erstellt am: 20. Nov. 2011 19: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

Hallo Nancy!

Vielen Dank, dass hat mir sehr geholfen .
Nun funktionierts.

Das mit dem

Code:
For j = 1 To .Columns
kommt von dem ganzen ausprobieren

Schönen Abend noch.

------------------
Gruß

Dirk

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

startrek
Moderator
Architekt


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

Beiträge: 1361
Registriert: 13.02.2003

.

erstellt am: 20. Nov. 2011 20:36    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 Dirk.B 10 Unities + Antwort hilfreich

 
Zitat:
Original erstellt von Dirk.B:
Das mit dem
Code:
For j = 1 To .Columns
kommt von dem ganzen ausprobieren  

Kenn ich ... ;-)

Den ultimativen Lerneffekt brachte mir damals das: http://ww3.cad.de/foren/ubb/Forum259/HTML/000365.shtml#000014

Ist zwar etwas länger, aber durchaus lesenswert;-)

lg Nancy

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