vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

VB.NET - Ein- und Umsteiger
txt Daten in Listview 
Autor: Sebi90
Datum: 11.03.16 21:46

Hallo,

ich lade mir solch ein Datei in eine Textbox:
http://www.xup.in/dl,12696440/001030777965L.Txt/

Meine Listview hat 7 Spalten, die ich gerne mit den txt Daten füllen würde:
Index,Durchmesser,XSoll,YSoll,TiefeSoll,Aggregat,Werkzeugnummer

Leider bekomme ich es nach 3 Tagen immer noch nicht gebacken nur irgendeinen Wert in der Listview anzuzeigen.
Hat jemand ein paar Zeilen für mich ?

MfG Sebi
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Manfred X
Datum: 11.03.16 23:11

Hallo!

Wo genau liegt das Problem?
Daten lesen, Elemente auf ListView-Subitems zuweisen?

Anwendungsbeispiel:
Public Class frmListViewDemo
 
    Dim lv As New ListView With _
        {.Parent = Me, .Width = 400, .Height = 400, .View = View.Details}
 
 
    Private Sub frmListViewDemo_Load(sender As System.Object, _
                             e As System.EventArgs) Handles MyBase.Load
 
        'Spalten erstellen
        With lv.Columns
            .Add("Index", 100)
            .Add("Durchmesser", 100)
            .Add("XSoll", 100)
            '............
        End With
 
        Dim fo As New Font("Arial", 10)
 
        'Item erstellen 
        Dim lvi As ListViewItem = lv.Items.Add("1")
        lvi.UseItemStyleForSubItems = False 
        With lvi.SubItems
            'Subitems füllen
            .Add("Durchmesser = 10.5", Color.Blue, Color.White, fo)
            .Add("XSOLL = 12", Color.Black, Color.LightGray, fo)
            '.............
        End With
 
        lvi = lv.Items.Add("2")
        With lvi.SubItems
            .Add("Durchmesser = 20.7", Color.Blue, Color.White, fo)
            .Add("XSOLL = 18", Color.Black, Color.LightGray, fo)
            '...............
        End With
 
        '...................
    End Sub
End Class


Beitrag wurde zuletzt am 11.03.16 um 23:22:26 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Sebi90
Datum: 12.03.16 13:14

Hallo,

so sieht meine Oberfläche aus:



und hier mein Code

Imports System.IO
 
Public Class Form1
    Private pfad As String
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
        Me.ListView1.View = System.Windows.Forms.View.Details
    End Sub
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _
      Button1.Click
        If OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK _
        Then
            pfad = OpenFileDialog1.FileName
            TextBox1.Text = String.Empty
            Try
                TextBox5.Text = File.ReadAllText(pfad)
            Catch
            End Try
            ' Dateipfad in der Titelleiste des Formulars anzeigen:
            Me.Text = pfad
        End If
 
    End Sub
 
 
End Class
Ich bekomme den Inhalt der txt Datei in die Textbox, aber zur besseren Übersicht hätte ich die einzelne Werte gerne in der Listview.
Ich weis nicht, wie ich die Listview befüllen soll, das er sich die einzelnen Werte aus der txt Datei holt.

MfG
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Manfred X
Datum: 12.03.16 14:52

Datenbindung mit DataTable und DataGridView wäre eventuell
zu bevorzugen.
Public Class frmListViewDemo
 
    Dim lv As New ListView With _
        {.Parent = Me, .Width = 400, .Height = 400, .View = View.Details}
 
 
    Private Sub frmListViewDemo_Load(sender As System.Object, _
                                 e As System.EventArgs) Handles MyBase.Load
 
        Dim col() As String = _
         {"Bearbeitungsindex", "Durchmesser", "XSoll", "YSoll", "TiefeSoll", _
          "Aggregat", "Werkzeugnummer"}
 
        For i As Integer = 0 To col.Length - 1
            lv.Columns.Add(col(i))
        Next i
 
        Dim lines() As String = _
           IO.File.ReadAllLines("C:\downloads\001030777965L.txt")
 
        Dim lvi As ListViewItem
 
        For i As Integer = 0 To lines.Count - 1
            Dim parts() As String = lines(i).Split("="c)
 
            If lines(i).Trim.StartsWith(col(0)) Then
                lvi = lv.Items.Add(parts(1))
                For k As Integer = 1 To col.Length - 1
                    lvi.SubItems.Add("")
                Next
            End If
 
            Dim id As Integer = Array.IndexOf(col, parts(0))
 
            If lvi IsNot Nothing AndAlso id > 0 Then
                lvi.SubItems(id).Text = parts(1)
            End If
        Next i
 
    End Sub
End Class


Beitrag wurde zuletzt am 12.03.16 um 14:57:39 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Sebi90
Datum: 12.03.16 20:42

Hallo Manfred,

dank für deine Hilfe. Ich sehe das das ganze wunderbar funktioniert.
Leider bekomme ich es mit dem Openfile.Dialog nicht hin.
Du hast ja einen festen Dateipfad eingebaut.

Desweiteren würde ich noch gerne die Länge und die Breite (nur den Zahlenwert) in zwei Textboxen eintragen.
mit string.Split(vvNewLine) bekomme ich die ganze Linie in die Textbox. Aber wie kann ich den Text noch wegschneiden ?

Hier nochmal mein Code. Nach x Jahren ohne Laptop ist bei mir leider fast alles weg

Imports System.IO
 
Public Class Form1
    Private pfad As String
 
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
        Me.ListView1.View = System.Windows.Forms.View.Details
    End Sub
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _
      Button1.Click
        If OpenFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK _
        Then
            pfad = OpenFileDialog1.FileName
            Try
                TextBox5.Text = File.ReadAllText(pfad)
            Catch
            End Try
        End If
 
        Label5.Text = SearchtextCount( _
        TextBox5.Text, searchtext).ToString & " Bohrungen vorhanden"
 
 
        Dim TestString As String = TextBox5.Text
        Dim Teile() As String = TestString.Split(vbNewLine)
 
        TextBox1.Text = (Teile(0))
        TextBox2.Text = (Teile(1))
        TextBox3.Text = (Teile(2))
        TextBox4.Text = (Teile(3))
 
    End Sub
 
    Dim searchtext As String = "Bearbeitungsindex"
    Private Sub Button2_Click(sender As Object, e As EventArgs)
        Label5.Text = SearchtextCount( _
        TextBox5.Text, searchtext).ToString & " Bohrungen vorhanden"
    End Sub
 
    Function SearchtextCount(ByVal txt As String, ByVal searchtext As String) _
      As Int32
        Return System.Text.RegularExpressions.Regex.Matches(txt, _
        searchtext).Count()
    End Function
End Class
MfG
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Manfred X
Datum: 12.03.16 21:24

Das geht nach dem gleichen Prinzip wie oben gezeigt.
Seien "tboLänge" und "tboBreite" zwei Textboxen
und "OpenFileDialog1" eine Instanz des OpenFileDialogs ...
 
  With openfiledialog1
      .InitialDirectory = "C:\daten"
      .CheckFileExists = True
      .Filter = "Datendatei |*.txt"
 
      If .ShowDialog = _
         Windows.Forms.DialogResult.Cancel Then Exit Sub
 
      'Zeilen der gewählten Datei lesen 
      Dim flines() As String = IO.File.ReadAllLines(.FileName)
 
      'Zeilen durchlaufen
      For i As Integer = 0 To flines.Count - 1
         'Zeile zerlegen 
         Dim parts() As String = flines(i).Split("="c)
         If parts(0) = "Breite" Then tboBreite.Text = parts(1)
         If parts(0) = "Laenge" Then tboLänge.Text = parts(1)
      Next i
  End With
Oder so ....
Dim ind As Integer = _
   Array.FindIndex(flines, Function(x As String) x.StartsWith("Laenge"))


Beitrag wurde zuletzt am 12.03.16 um 21:37:23 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Sebi90
Datum: 12.03.16 22:26

Warum legst du so Einstellungen wie die Größe der ListView im Quelltext fest ?
Hat das Vorteile ? Oder ist das nur eine Stil der Programmierung ?
Ich finde es viel komfortabler die Werte im Eigenschaftsfenster festzulgen.
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Manfred X
Datum: 12.03.16 22:34

Damit die Code-Beispiele (Formulare) direkt ausführbar sind -
ohne daß ich erst erklären muß, welche Controls mit welchen
Einstellungen benötigt werden.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Sebi90
Datum: 12.03.16 23:16

Ok, und hier nochmal das ganze

Public Class Form1
 
    Dim lv As New ListView With _
        {.Parent = Me, .Width = 441, .Height = 700, .Top = 40, .View = _
        View.Details}
 
 
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles _
          MyBase.Load
 
    End Sub
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _
      Button1.Click
        Dim col() As String = _
     {"Bearbeitungsindex", "Durchmesser", "XSoll", "YSoll", "TiefeSoll", _
     "Aggregat", "Werkzeugnummer"}
 
        For i As Integer = 0 To col.Length - 1
            lv.Columns.Add(col(i))
        Next i
 
        With OpenFileDialog1
            .InitialDirectory = "C:\txt"
            .CheckFileExists = True
            .Filter = "Datendatei |*.txt"
 
        End With
 
        If OpenFileDialog1.ShowDialog = _
           Windows.Forms.DialogResult.Cancel Then Exit Sub
 
        'Zeilen der gewählten Datei lesen 
        Dim flines() As String = IO.File.ReadAllLines(OpenFileDialog1.FileName)
 
 
 
        Dim lvi As ListViewItem
 
        For i As Integer = 0 To flines.Count - 1
            Dim parts() As String = flines(i).Split("="c)
 
            If flines(i).Trim.StartsWith(col(0)) Then
                lvi = lv.Items.Add(parts(1))
                For k As Integer = 1 To col.Length - 1
                    lvi.SubItems.Add("")
                Next
            End If
 
            Dim id As Integer = Array.IndexOf(col, parts(0))
 
            If lvi IsNot Nothing AndAlso id > 0 Then
                lvi.SubItems(id).Text = parts(1)
            End If
        Next i
 
        For i As Integer = 0 To flines.Count - 1
            Dim Parts() As String = flines(i).Split("="c)
            If Parts(0) = "Breite" Then tbob.Text = Parts(1)
            If Parts(0) = "Laenge" Then tbol.Text = Parts(1)
        Next
 
    End Sub
 
 
End Class
Mir ist nur aufgefallen, sobald ich eine 2 Datei lade, wird alles drangehängt.
Wie kann ich die Listvie beim erneuten laden leeren ?

Gute Nacht ?
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Manfred X
Datum: 12.03.16 23:52

Nein, das ist nicht das Ganze.
Da Du den Designer zur Gestaltung des Formulars verwendest,
steht der Code zur Deklaration und zur Festlegung der Eigenschaften
der Controls in der Designer-verwalteten Datei.

Diese Deklaration der Spalten gehört in das "Form_Load"-Event,
falls die Spalten sich beim Laden einer Datei nicht ändern.
Dim col() As String 'formular-weit gültige Deklaration
 
Private Sub frmListViewDemo_Load(sender As System.Object, _
                       e As System.EventArgs) Handles MyBase.Load
 
   col =
     {"Bearbeitungsindex", "Durchmesser", "XSoll", "YSoll", _
      "TiefeSoll", "Aggregat", "Werkzeugnummer"}
 
   For i As Integer = 0 To col.Length - 1
      lv.Columns.Add(col(i))
      If i > 0 Then
         lv.Columns(i).TextAlign = HorizontalAlignment.Right
      End If
   Next i
End Sub
Um die Items (nicht die Spalten) in einem Listview zu löschen,
steht die "Clear"-Methode der Items-Auflistung zur Verfügung.
Sie ist vor dem Füllen der Liste auszuführen (vor der flines-Schleife).
Die zweite Schleife ist unnötig.
lv.Items.Clear()
 
Dim lvi As ListViewItem = Nothing
For i As Integer = 0 To flines.Count - 1
   Dim parts() As String = flines(i).Split("="c)
 
   If flines(i).Trim.StartsWith(col(0)) Then
      lvi = lv.Items.Add(parts(1))
      For k As Integer = 1 To col.Length - 1
          lvi.SubItems.Add("")
      Next k
   End If
 
   Dim id As Integer = Array.IndexOf(col, parts(0))
 
   If lvi IsNot Nothing AndAlso id > 0 Then
      lvi.SubItems(id).Text = parts(1)
   End If
 
   If parts(0) = "Breite" Then tboB.Text = parts(1)
   If parts(0) = "Laenge" Then tboL.Text = parts(1)
Next i


Beitrag wurde zuletzt am 12.03.16 um 23:55:08 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Sebi90
Datum: 13.03.16 12:01

Ein paar Codesnipsel von mir funktionieren zugar
Die meisten leider nicht

Würde noch gerne das Erstellungsdatum der geladenen Datei in ein Label schreiben.

Label5.Text = (New IO.FileInfo(OpenFileDialog1.FileName).CreationTime.ToString)
es wird zwar ein Datum geladen, aber nicht das von der ausgewählten Datei

und mit PrintPreviewDialog1.ShowDialog() öffnet die Druckvorschau
Aber mit Hinweis, Das Dokument enthält keine Seiten.

Würde gerne Länge und Breite, ListView ausdrucken können.

Manfred, wie kann man dir was guten tun für deine Geduld ?

Gruß
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Manfred X
Datum: 13.03.16 14:02

Hallo!

Warum Du die falsche Zeit erhälst, kann ich nicht beurteilen.
Steht in Openfiledialog1.filename nicht der richtige Pfad?

Der Ausdruck muß ggf. per Code gestaltet werden.

Hier eine vereinfachte Version des PrintPage-Eventhandlers.
Annahme: Die Spalten passen in eine Seitenbreite
(abhängig von Seiteneinstellung, Printfont, Spaltenbreite)

Sei "lv" das gefüllte Listview-Control,
"pd" einen PrintDocument-Instanz (System.Drawing.Printing)
und die "pd.Print"-Methode werde gerufen ....
Private Sub pd_PrintPage(sender As System.Object, _
   e As System.Drawing.Printing.PrintPageEventArgs) _
   Handles pd.PrintPage
 
   Static itemindex As Integer = 0  'fortlaufender lv-ItemIndex
 
   Dim pf As New Font("Arial", 6) 'Druckfont
 
   Dim linesperpage As Integer = _
       CInt(e.MarginBounds.Height / pf.GetHeight(e.Graphics)) - 1
   Dim fw As Integer = 80 'Spaltenbreite
 
   Dim lineindex As Integer = 0
   Dim ypos As Integer = e.MarginBounds.Top
 
   With e.Graphics
      Using br As New SolidBrush(Color.Black)
         'LV-Überschrift: Spaltenbezeichner
         For i As Integer = 0 To lv.Columns.Count - 1
            .DrawString(lv.Columns(i).Text, pf, br, _
                  e.MarginBounds.Left + i * fw, ypos)
         Next i
 
         'LV-Items in die aktuelle Druckseite eintragen
         While itemindex < lv.Items.Count And _
               lineindex < linesperpage
 
            ypos += CInt(pf.GetHeight(e.Graphics))
 
            For i As Integer = 0 To lv.Columns.Count - 1
               'auszugebender Text im Feld
               Dim text As String = _
                  lv.Items(itemindex).SubItems(i).Text
 
               'ggf. Formatierung der Nachkomma-Stellen
               If i = 2 Or i = 3 Then
                  text = Microsoft.VisualBasic.Format(CDbl(text), "0.0")
               End If
 
               Dim tl As Integer = 0
               'Text im Feld rechtsbündig ausrichten
               While tl < fw - 5
                  text = " " & text
                  tl = CInt(.MeasureString(text, pf).Width)
               End While
 
               .DrawString(text, pf, br, _
                       e.MarginBounds.Left + i * fw, ypos)
            Next i
 
            itemindex += 1
            lineindex += 1
         End While
 
         e.HasMorePages = itemindex < lv.Items.Count
      End Using
   End With
 
End Sub


Beitrag wurde zuletzt am 13.03.16 um 14:20:42 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Sebi90
Datum: 21.03.16 19:27

Manfred, ich bin immer noch begeistert.
Leider verstehe ich nicht alles zu 100 Prozent, aber es funktioniert.

Wie komplex wäre es, sowas in einer picture.box zu visualisieren ?

Gruß
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Manfred X
Datum: 21.03.16 21:02

Und wofür brauchst Du das?
Du hast die Daten in einem Listview-Control
und für die Voransicht des Drucks gibt es den
PrintPreview-Dialog.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Sebi90
Datum: 21.03.16 21:11

Hallo,

ich meine nicht den text in die picture.box, sondern die Daten

Durchmesser auf x und y position darzustellen.

Und wofür brauch ich das ganze....
ich glaube das die grafische Darstellung, das ganze zur Überprüfung meiner Daten sehr erleichtern würde.
Wenn manche Daten (punkte) nicht in einer Linie wären, würde es sofort auffallen



Die werte liegen alle bei x790,2. Wäre hier etwas in der Visualisierung versetzt würde man es gleich sehen.

MfG
0

Beitrag wurde zuletzt am 21.03.16 um 21:18:16 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Manfred X
Datum: 21.03.16 22:25

Vielleicht so was ....
Public Class frmListViewDemo2
 
    'Panel mit Scrollbalken
    Dim pl As New Panel With _
      {.Parent = Me, .Width = 400, .Height = 400, _
       .AutoScroll = True}
 
    'Picturebox für die Anzeige
    Dim pbox As New PictureBox With _
        {.Parent = pl, _
         .SizeMode = PictureBoxSizeMode.AutoSize}
 
    Dim col() As String 'Spaltenüberschriften
    Dim bmp As Bitmap   'Bitmap für Datenaufbereitung
 
 
    Private Sub frmListViewDemo2_Load(sender As System.Object, _
        e As System.EventArgs) Handles MyBase.Load
 
        Me.ClientSize = pl.Size
 
        col =
        {"Bearbeitungsindex", "Durchmesser", "XSoll", "YSoll", _
         "TiefeSoll", "Aggregat", "Werkzeugnummer"}
 
        'Zeilen lesen
        Dim lines() As String = _
           IO.File.ReadAllLines("C:\daten\001030777965L.txt")
        Dim fields As New List(Of String)
 
        'Zahl der Ausgabezeilen ermitteln
        Dim linecounter As Integer
        For l As Integer = 0 To lines.Count - 1
            If lines(l).Trim.StartsWith(col(0)) Then linecounter += 1
        Next l
 
        Dim fo As New Font("Arial", 10) 'Font der Ausgabe
        Dim fieldwidth As Integer = 80  'Feldgröße (an Font anzupassen)
        Dim fieldheight As Integer = 15
        Dim margin As Integer = 20      'Randbreite
 
        'Ausgabe-Bitmap erstellen
        Dim bmp_width As Integer = _
             fieldwidth * col.Length + 2 * margin
        Dim bmp_height As Integer = _
             fieldheight * (linecounter + 1) + 2 * margin
        bmp = New Bitmap(bmp_width, bmp_height)
 
        linecounter = 0
        Dim text As String
        'Texte in die Bitmap eintragen
        Using g As Graphics = Graphics.FromImage(bmp), _
            b As New SolidBrush(Color.Black)
 
            'Hintergrundfarbe
            g.Clear(Color.White)
 
            'Überschriften ausgeben
            For i As Integer = 0 To col.Length - 1
                text = AdjustLength(g, fo, col(i), fieldwidth)
                g.DrawString(text, fo, b, _
                  New Point(margin + i * fieldwidth, margin))
            Next i
 
            For l As Integer = 0 To lines.Count - 1
                Dim parts() As String = lines(l).Split("="c)
                If lines(l).Trim.StartsWith(col(0)) Then
                    For k As Integer = 0 To col.Length - 1
                        fields.Add("")
                    Next k
                End If
 
                Dim id As Integer = Array.IndexOf(col, parts(0))
 
                If id >= 0 AndAlso fields.Count > id Then
                    fields(id) = parts(1)
 
                    'Ausgabe-Zeile vollständig aufbereitet ?
                    Dim ok As Boolean = True
                    For i As Integer = 0 To fields.Count - 1
                        If fields(i) = "" Then ok = False
                    Next i
                    If ok Then
                        'Felder in einer Zeile ausgeben
                        linecounter += 1
                        For i As Integer = 0 To fields.Count - 1
                            text = AdjustLength(g, fo, fields(i), fieldwidth)
                            g.DrawString(text, fo, b, _
                            New Point(margin + i * fieldwidth, _
                                      margin + linecounter * fieldheight))
                        Next i
                        fields.Clear()
                    End If
                End If
            Next l
        End Using
 
        pbox.Image = bmp 'Bitmap anzeigen
    End Sub
 
 
    Private Function AdjustLength(g As Graphics, fo As Font, _
        text As String, length As Integer) As String
 
        Dim l As Integer = text.Length + 1
        Do
            l -= 1
            text = text.Substring(0, l)
        Loop While g.MeasureString(text, fo).Width > length
        While g.MeasureString(text, fo).Width < length
            text = " " & text
        End While
        Return text
    End Function
 
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Sebi90
Datum: 22.03.16 03:25

Hallo,

funktioniert wie immer einwandfrei. Aber ich glaube wir haben uns Missverstanden
Hier ein Beispiel:



Das die ermittelten Werte grafisch dargestellt werden.
Somit könnte man einen "Ausreiser" falschen Wert sehr leicht erkennen
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Manfred X
Datum: 22.03.16 11:49

Dafür gibt es viele Beispiele.
Das MS-Chart-Control bietet diverse Visualisierungsmöglichkeiten für Datenreihen.
Hier ein anderes Beispiel.

Beitrag wurde zuletzt am 22.03.16 um 11:50:01 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Visualisierung ListView-Spalte durch Chart (RELOADED) 
Autor: Manfred X
Datum: 02.04.16 20:02

Im Projekt ist ein Net-Verweis auf die Bibliothek
"System.Windows.Forms.DataVisualization" erforderlich.

Erstellung eines ChartControl auf der Form:
Dim ch As New System.Windows.Forms.DataVisualization.Charting.Chart _
  With {.Parent = Me, .Height = 400, .Width = 400}
Sei "lv" die gefüllte Listview aus dem obigen Beispiel:

(Übergabe der Headline der darzustellenden Spalte als Parameter)
  Private Sub CreateChart(ByVal Columnname As String)
 
      'Datatable für Spaltendaten
      Dim dt As New DataTable
      dt.Columns.Add("ID", GetType(Integer))
      dt.Columns.Add(Columnname, GetType(Double))
 
      'Ermittlung des Spaltenindex
      Dim columnindex As Integer = -1
      For i As Integer = 0 To lv.Columns.Count - 1
            If lv.Columns(i).Text.ToLower = Columnname.ToLower Then _
               columnindex = i
      Next i
      If columnindex = -1 Then Exit Sub
 
      'Übertragung der Listview-Spalte in die Table
      For i As Integer = 0 To lv.Items.Count - 1
         dt.Rows.Add _
          ({i + 1, CDbl(lv.Items(i).SubItems(columnindex).Text)})
      Next i
 
      With ch
        .DataSource = dt
        .Titles.Clear()
        .Titles.Add(Columnname)
 
        .ChartAreas.Clear()
        .ChartAreas.Add("Base")
 
        With .ChartAreas(0)
           .AxisX.MajorGrid.LineDashStyle = _
                DataVisualization.Charting.ChartDashStyle.Dot
           .AxisY.MajorGrid.LineDashStyle = _
                DataVisualization.Charting.ChartDashStyle.Dash
        End With
 
        With .Series
           .Clear()
           .Add(Columnname)
        End With
 
        With .Series(0)
           .ChartArea = "Base"
 
           'Datenbindung an Datatable
           .XValueMember = dt.Columns(0).ColumnName
           .YValueMembers = dt.Columns(1).ColumnName
 
           .ChartType = DataVisualization.Charting.SeriesChartType.Point
           .Palette = DataVisualization.Charting.ChartColorPalette.Grayscale
        End With
      End With
  End Sub


Beitrag wurde zuletzt am 02.04.16 um 20:03:31 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Ingo80
Datum: 19.04.16 16:22

Hallo Forum,

ich habe mich extra wegen diesen Threads angemeldet. Finde ihn hochspannend, weil ich mich gerade mit etwas ähnlichem beschäftige.

ManfredX schreibt das daß http://www.vbarchiv.net/tipps/details.php?id=1869 eine Möglichkeit wäre.

Könnte vielleicht jemand das genannte Beispiel anpassen. Vielleicht wird es dann ein bisschen deutlicher.

Euer Ingo
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Ingo80
Datum: 20.04.16 11:43

Hallo,

habe das ganz jetzt mal so gelöst:

Label17.Text = tbol.Text / xr
        Dim q As String = Label17.Text
 
 
        Dim g As Graphics = GroupBox1.CreateGraphics()
        For i = 0 To lv.Items.Count - 1
            Dim d, r, t As Integer
            d = lv.Items(i).SubItems(1).Text / q
            r = (x1 - (d / 2)) + lv.Items(i).SubItems(2).Text / q
            t = y1 + lv.Items(i).SubItems(3).Text / q
            g.DrawEllipse(Pens.Black, r, t, d, d)
 
        Next
Wobei q der Verkleinerungsfaktor ist.

Würde noch gerne die aktuell ausgewählte Zeile der Listview in einer anderen Farbe darstellen.
Mit welcher Eingenschaft funktioniert das ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Marty**
Datum: 20.07.16 21:24

Hallo,

wie kann man den Inhalt einer Listview wieder in ein Txt Datei speichern ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Manfred X
Datum: 20.07.16 22:01

Hallo!

Textdateien sind geeignet für Texte.
In einem Listview-Control steht eine Liste, deren
Items ggf. durch Subitems untergliedert sind.

Es wäre zu klären, wie (Formatierung) diese Struktur
in der Datei gespeichert werden soll (Weiterverarbeitung)?
CSV, INI, XML, Custom ...

Für solche Zwecke gibt es - je nach Zielsetzung - geeignetere
Instrumente.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in Listview 
Autor: Marty**
Datum: 21.07.16 05:03

Hallo,

csv schwein wohl wirklich die bessere Lösung zu sein.
Leider habe ich auch keine Ahnung wie man den Inhalt in einer csv speichert ....
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Listview-Items in CSV-Datei eintragen 
Autor: Manfred X
Datum: 21.07.16 07:52

So oder ähnlich ....
''' <summary>String-Einträge im Listview in CSV-Datei schreiben</summary>
''' <param name="lv">Listview-Control</param>
''' <param name="filename">Pfad und Name der Ausgabedatei</param>
''' <param name="AllowOverwrite">Darf die Ausgabedatei ggf. überschrieben 
' werden</param>
''' <returns>Alles OK?</returns>
Private Function ListViewToCsv(ByVal lv As ListView, ByVal filename As String, _
                  Optional ByVal AllowOverwrite As Boolean = False) As Boolean
 
   Const tz As Char = ";"c 'Feld-Trennzeichen
   Const rp As Char = ","c 'Ersatzzeichen 
 
   If lv Is Nothing OrElse lv.Items.Count = 0 Then Return Nothing
 
   Try
      filename = _
        IO.Path.ChangeExtension(filename, ".csv") 'Extension sicherstellen
 
      If IO.File.Exists(filename) Then
         If AllowOverwrite = False Then
            Return False
         Else
            IO.File.Delete(filename)
         End If
      End If
 
 
      Using sw As New IO.StreamWriter(filename) 'Ausgabestream
 
         'Maximale Anzahl von Subitems im Listview bestimmen
         Dim sic As Integer = 0
         For i As Integer = 0 To lv.Items.Count - 1
            sic = Math.Max(lv.Items(i).SubItems.Count, sic)
         Next i
 
         Dim line As New System.Text.StringBuilder 'Ausgabezeile, Item
 
         'Itemschleife
         For i As Integer = 0 To lv.Items.Count - 1
            line.Clear()
 
            'Item und ggf. Subitems
            For si As Integer = 0 To lv.Items(i).SubItems.Count - 1
               line.Append(lv.Items(i).SubItems(si).Text.Replace(tz, rp))
               line.Append(tz)
            Next si
 
            For si As Integer = lv.Items(i).SubItems.Count To sic - 1
                line.Append(tz) 'ggf. Zeile mit Leerfeldern auffüllen
            Next si
 
            'sw.WriteLine(line.ToString.TrimEnd(tz)) 'Zeile schreiben
            sw.WriteLine(line.ToString)
         Next i
      End Using
 
      'Alles OK
      Return True
   Catch
      'OOOPs
      Return False
   End Try
 
End Function


Beitrag wurde zuletzt am 21.07.16 um 08:03:36 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in DataGrid einlesen 
Autor: Sebi90
Datum: 26.04.17 20:39

Hallo Forum,

nachdem die Lösung mit der Listview jetzt über ein Jahr sehr gut funktioniert hat, bin ich jetzt wieder hier.
Anscheinend hat die Listview zu wenig Möglichkeiten.
Würde gerne die ursprüngliche Datei http://www.xup.in/dl,12696440/001030777965L.Txt/
in eine DataGrid einlesen, und die Parameter "{"Bearbeitungsindex", "Durchmesser", "XSoll", "YSoll", "TiefeSoll", "Aggregat", "Werkzeugnummer"} eintragen.

Könnte mir hier bitte nochmal jemand ein Beispiel geben ?

Schöne Grüße
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Beispiel für schlampiges Programmieren 
Autor: Manfred X
Datum: 27.04.17 07:25

Wo liegt dabei das Problem .... ????


Public Class frmFillGrid
 
    Dim dgv As New DataGridView With {.Parent = Me}
 
 
    Private Sub frmFillGrid_Load(sender As System.Object, _
                              e As System.EventArgs) Handles MyBase.Load
 
 
        Dim lines() As String = _
            IO.File.ReadAllLines("C:\Daten\001030777965L (2).txt")
 
        Dim dt As New DataTable
        Dim i As Integer
        'Spalten erstellen
        For i = 0 To lines.Length - 1
            If lines(i).ToUpper.StartsWith("BEARBEITUNGSINDEX") Then
                dt.Columns.Add(lines(i).ToUpper.Split("="c)(0))
                For k As Integer = 1 To 16
                    dt.Columns.Add(lines(k + i).ToUpper.Split("="c)(0))
                Next k
                Exit For
            End If
        Next i
 
        'Zeilen füllen
        Try
            i = 0
 
            Do
                If lines(i).ToUpper.StartsWith("BEARBEITUNGSINDEX") Then
                    Dim r As DataRow = dt.NewRow
                    r(0) = lines(i).ToUpper.Split("="c)(1)
                    For k As Integer = 1 To 16
                        i += 1
 
                        r(k) = lines(i).ToUpper.Split("="c)(1)
                    Next k
                    dt.Rows.Add(r)
                End If
                i += 1
            Loop While i < lines.Count
        Catch
            Stop
        End Try
 
        dgv.DataSource = dt
    End Sub
End Class
Warnung:
- keine angepaßten Datentypen (für Tabellen-Spalten),
- keine Sicherheitsabfragen (z.B. für Schleifenindices, Aufbau gelesener Sätze),
- Code für allgemeine Zwecke nicht verwendbar (z.B. keine Steuerung durch Parameter)

Beitrag wurde zuletzt am 27.04.17 um 07:33:20 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Beispiel für schlampiges Programmieren 
Autor: effeff
Datum: 27.04.17 15:18

Du erstellst eine DataTable, ohne Columns und Primärschlüssel zu definieren?

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Beispiel für schlampiges Programmieren 
Autor: Manfred X
Datum: 27.04.17 16:21

Hmmm!
Ich erstelle eigentlich stets Columns.
So auch dieses Mal .....

Ich gestehe, der Tabelle weder einen Namen noch eine
Primärschlüssel-Spalte zugeordnet zu haben.

Ich möchte mir aber erlauben, darauf hinweisen zu dürfen,
daß ich immerhin keine Daten in ein Datagrid geschrieben habe.

Schlimmer geht immer ....
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in DataGrid einlesen 
Autor: Sebi90
Datum: 29.04.17 16:23

Hallo,

auch wenn ihr das ganze als schlampig bezeichnet, ich bin froh das es funktioniert.
Könnte mir noch jemand ein zweigen, wenn ich nur wieder die Werte
"Bearbeitungsindex", "Durchmesser", "XSoll", "YSoll", "TiefeSoll", "Aggregat", "Werkzeugnummer", "Art"
haben will.

Kannn man auch per Code, die einzelnen breiten der Spalten festlegen ?

Gruß
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in DataGrid einlesen 
Autor: Manfred X
Datum: 29.04.17 18:27

Erstellte und gefüllte Datatable-Spalten kannst Du nach dem Lesen
einfach mit der Remove-/RemoveAt-Methode der Columns-Auflistung der
Datatable entfernen:
dt.Columns.RemoveAt(2) --> entfernt die dritte Spalte
Die übrigen Spaltenindices ab 3 verschieben sich entsprechend nach vorne.

besser: dt.columns.remove("Typ") entfernt die Spalte "Typ"

Das Erscheinungsbild von Zellen wird durch Eigenschaften des Display-Controls
festgelegt.
Sei "dgv" ein Win.Forms.Datagridview:
dgv.DataSource = dt
 
dgv.Columns(0).Width = 200 'Breite der Spalte 0
 
'andere Parameter für die "Erscheinung" der Spalte 
können im "DefaultCellstyle" festgelegt werden
dgv.Columns(0).DefaultCellStyle.BackColor = Color.LightGray
Man kann unerwünschte Spalten im Grid auch Visible = false setzen.
Die Daten in der Datatable bleiben dabei erhalten.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in DataGrid einlesen 
Autor: Sebi90
Datum: 30.04.17 20:39

Hallo,

mittlerweile finde ich es Klasse, das alle Daten im Datengrid sind.
Ich habe mir im Menüstrip einen Punkt Filter angelegt, über den ich mir jede Spalte ausblenden kann.
Die ausgewählten Spalten werden über My.Setting gespeichert.
Private Sub BearbeitungsindexToolStripMenuItem_Click(sender As Object, e As _
  EventArgs) Handles BearbeitungsindexToolStripMenuItem.Click
        My.Settings.Bearbeitungsindex = _
        BearbeitungsindexToolStripMenuItem.Checked
        My.Settings.Save()
        My.Settings.Reload()
        If BearbeitungsindexToolStripMenuItem.Checked Then
            dgv.Columns(0).Visible = True
        Else
            dgv.Columns(0).Visible = False
        End If
    End Sub
Nun habe ich das Problem das beim öffnen der Datei alle Spalten angezeigt werden. Hätte aber gerne nur die ausgewählten Spalte. Hat jemand eine Idee ?

Gruß
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Daten in DataGrid einlesen 
Autor: Manfred X
Datum: 30.04.17 22:07

Hallo!

Eigenschaftenfenster des Toolstripmenuitems -> ApplicationSettings ->
PropertyBinding öffnen -> In der Liste der Properties "Checked" wählen ->
ein SettingsItem benennen
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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-2024 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