Hallo Thorsten, Hallo Forum
Bin neu hier im Forum und möchte erstmal alle herzlichst begrüßen.
Ich arbeite mich zur Zeit in das ppsGrid ein. Das klappt auch schon sehr gut, da es in weiten Bereichen logisch und verständlich funktioniert.
Da ich in VB.NET programmiere muss ich den C#-Code der Hilfedatei übersetzen.
Deshalb bin ich mir nicht immer sicher, ob ich hier alles richtig gemacht habe.
Meine Frage:
Ich möchte ein Bild im Grid anzeigen. Dazu habe ich das C#-Beispiel aus der Hilfe 1:1 übersetzt.
Die For Each -Schleife funktioniert, da Spalten und Zeilen korrekt angelegt werden.
-> jedoch bleiben die Zellen leer.
Anbei mein VB-Code. Was ist hier falsch?
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim col As ppsGrid.GridCol
Dim row As ppsGrid.GridRow
Dim Files() As String = System.IO.Directory.GetFiles("E:\Test\Icons")
Dim img As Image
Dim Pt As Point 'C# -> Point Pt = Grid1.FocusCell
Pt = Grid1.FocusCell
Grid2.Scrollbar = ppsGrid.eScrollbar.Vertical ' // bildlaufleiste vertikal
Grid2.SelectionType = ppsGrid.eSelectionType.None ' // keine Markierungen
Grid2.AddCols(2) ' // zwei Spalten
col = Grid2.Cols(0) ' // links Spalte
col.Width = 24 ' // mit 'feste' Weite
col.AutoNumber = True ' // autom. Nummerierung
col.Fixed = True ' // als Zeilenkopf
col = Grid2.Cols(1) ' // rechte Spalte
col.Width = ppsGrid.eWidthType.Percent ' // autom. Breite
col.WidthPercent = 100 ' // ...über gesamte Breite
col.ImageAlignHorz = ppsGrid.eContentAlign.Center ' // bilder horiz. zentriert
col.ImageAlignVert = ppsGrid.eContentAlign.Center ' // ...vertikal zentriert
For Each nm As String In Files ' // alle Dateien
If nm.EndsWith("jpg") Then ' // ..jpg ?
row = New ppsGrid.GridRow() ' // ....neue zeile erzeugen
Grid2.Rows.Add(row) ' // ....anhängen
row.Height = 64 '// ....Zeilenhöhe
row(1).Image = New Bitmap(nm) ' // ....2.Zelle mit Bild
End If
Next
'################################################
'Weitere 'Versuche', ein Bild in eine Zelle zu bekommen.
'################################################
Grid2.AddCols(10) ' // 10 spalten erzeugen
Grid2.AddRows(20) ' // ...und 20 Zeilen
img = Bitmap.FromFile("E:\Test\Icons\Buch.jpg") ' // Bild laden
Grid2.FocusCell = New Point(4, 4)
Pt = Grid2.FocusCell
Grid2(Pt).Image = New Bitmap(img)
'Kann man ein Bild auch aus anderen Controls ins Grid laden? z.B ImageList, PictureBox, My.Resource
'Der folgende Code funktioniert jeweils nicht
Grid2.Cells(4, 5).Image = img 'Direkt
'oder so?
Grid2.Cells(4, 6).Image = New Bitmap(Me.PictureBox1.Image) 'Mittels PictureBox
'oder so?
Grid2.Cells(4, 7).Image = Me.ImageList1.Images(1) 'Mittels ImageList
'oder so?
Grid2.Cells(4, 9).Image = My.Resources.TestBild1 'Mittels Resourcendatei
'Dies funktioniert. Bild als BackgroundImage wird angezeigt. (Also wird 'img' korrekt geladen.)
Grid2.BackgroundImage = img
Grid2.BackgroundImageLayout = ppsGrid.eImageLayout.Stretch
End Sub
Bild im ppsGrid (Zelle) anzeigen - VB.NET
Re: Bild im ppsGrid (Zelle) anzeigen - VB.NET
Hallo Bertram
Versuch es erstmal ganz einfach:Das sollte das Bild in der Zelle (0,0) anzeigen
Die "foreach"-Schleife im Demo-Code liest alle Dateien eines Verzeichnisses aus,
filtert alle ".jpg" Dateien, erzeugt jewels eine neue Zeile und setzt die "Image"-Eigenschaft
der jeweils zweiten Zelle auf das geladene Bild.
So aus dem Stehgreif sehe ich bei dem Code keine Fehler....Wenn es weiter Probleme gibt, muß ich mein Windows/VS rauskramen...
dauert dann aber etwas... (
, dann bitte nochmal melden)
Gruß Torsten
PS.: Wofür ist die Variable "pt"??
Versuch es erstmal ganz einfach:
Code: Select all
'grid mit einer Spalte und einer Zeile
grid.AddCol(1)
grid.AddRow(1)
'Bild laden und anzeigen
grid.Cells(0,0).Image = New Bitmap("E:\Test\Icons\Buch.jpg")
Die "foreach"-Schleife im Demo-Code liest alle Dateien eines Verzeichnisses aus,
filtert alle ".jpg" Dateien, erzeugt jewels eine neue Zeile und setzt die "Image"-Eigenschaft
der jeweils zweiten Zelle auf das geladene Bild.
So aus dem Stehgreif sehe ich bei dem Code keine Fehler....
Code: Select all
Dim col As ppsGrid.GridCol
Dim row As ppsGrid.GridRow
Dim Files() As String = System.IO.Directory.GetFiles("E:\Test\Icons")
Dim img As Image
Dim Pt As Point 'C# -> Point Pt = Grid1.FocusCell
Pt = Grid1.FocusCell
Grid2.Scrollbar = ppsGrid.eScrollbar.Vertical ' // bildlaufleiste vertikal
Grid2.SelectionType = ppsGrid.eSelectionType.None ' // keine Markierungen
Grid2.AddCols(2) ' // zwei Spalten
col = Grid2.Cols(0) ' // links Spalte
col.Width = 24 ' // mit 'feste' Weite
col.AutoNumber = True ' // autom. Nummerierung
col.Fixed = True ' // als Zeilenkopf
col = Grid2.Cols(1) ' // rechte Spalte
col.Width = ppsGrid.eWidthType.Percent ' // autom. Breite
col.WidthPercent = 100 ' // ...über gesamte Breite
col.ImageAlignHorz = ppsGrid.eContentAlign.Center ' // bilder horiz. zentriert
col.ImageAlignVert = ppsGrid.eContentAlign.Center ' // ...vertikal zentriert
For Each nm As String In Files ' // alle Dateien
If nm.EndsWith("jpg") Then ' // ..jpg ?
row = New ppsGrid.GridRow() ' // ....neue zeile erzeugen
Grid2.Rows.Add(row) ' // ....anhängen
row.Height = 64 '// ....Zeilenhöhe
row(1).Image = New Bitmap(nm) ' // ....2.Zelle mit Bild
End If
Next
dauert dann aber etwas... (
![Smile :-)](./images/smilies/icon_smile.gif)
Gruß Torsten
PS.: Wofür ist die Variable "pt"??
Re: Bild im ppsGrid (Zelle) anzeigen - VB.NET
[quote="torsten"]Hallo Bertram
Versuch es erstmal ganz einfach:Das sollte das Bild in der Zelle (0,0) anzeigen
Hallo Torsten.
Habe auch hier in einem neuen Projekt/Grid getestet.
Das Grid bleibt leider leer.
Auch ein 'Zeilenbild' anzeigen geht nicht.
row(1).Image = New Bitmap("E:\Test\Icons\Buch.jpg)
Da müsstest du bitte noch mal schauen, woran das liegt.
Dazu habe ich noch eine generelle Frage:
Geht das? Ein Bild und Text gleichzeitig in einer Zelle?
Vielen Dank für deine Mühe.
Gruß Bertram
Versuch es erstmal ganz einfach:
Code: Select all
'grid mit einer Spalte und einer Zeile
grid.AddCol(1)
grid.AddRow(1)
'Bild laden und anzeigen
grid.Cells(0,0).Image = New Bitmap("E:\Test\Icons\Buch.jpg")
Hallo Torsten.
Habe auch hier in einem neuen Projekt/Grid getestet.
Das Grid bleibt leider leer.
![Confused :?](./images/smilies/icon_confused.gif)
Auch ein 'Zeilenbild' anzeigen geht nicht.
row(1).Image = New Bitmap("E:\Test\Icons\Buch.jpg)
Da müsstest du bitte noch mal schauen, woran das liegt.
Dazu habe ich noch eine generelle Frage:
Geht das? Ein Bild und Text gleichzeitig in einer Zelle?
Vielen Dank für deine Mühe.
Gruß Bertram
Re: Bild im ppsGrid (Zelle) anzeigen - VB.NET
Hallo Bertram
Hab' den Fehler gefunden: Er war im Zusammenhang mit der
Sortierrichtungsanzeige (was für ein Wort
).
Bilder und Sortierrichtungsanzeigen schließen sich aus, eines zur Zeit geht nur
Du musst dafür sorgen, das sich beides nicht überlappt. Also zBsp. Bild oben, Text unten oä.
Gruß Torsten
PS.: Aktuelle Version: 1.3.8.6, download unter http://www.ppsGrid.de/download/ppsGrid.dll
Hab' den Fehler gefunden: Er war im Zusammenhang mit der
Sortierrichtungsanzeige (was für ein Wort
![Smile :-)](./images/smilies/icon_smile.gif)
Bilder und Sortierrichtungsanzeigen schließen sich aus, eines zur Zeit geht nur
Der Ausdruck "row(1) ist mitnichten ein "Zeilenobject", sondern die zweite Zelle im ZeilenobjectAuch ein 'Zeilenbild' anzeigen geht nicht.
row(1).Image = New Bitmap("E:\Test\Icons\Buch.jpg)
Code: Select all
row= grid.Rows[123]; // 124. Zeile
row[0].Value= 5; // erste Zelle, Zugriff auf Value-Eigenschaft
col= grid.Cols[8]; // neunte Spalte
col[0].Value= 6; // oberste Zelle
// der Ausdruck grid.Rows[123][0] müsste funzen, hab's noch nie probiert
// einfacher ist grid[0, 123] oder grid.cells[0,123]
Ja, das geht.Geht das? Ein Bild und Text gleichzeitig in einer Zelle?
Du musst dafür sorgen, das sich beides nicht überlappt. Also zBsp. Bild oben, Text unten oä.
Gruß Torsten
PS.: Aktuelle Version: 1.3.8.6, download unter http://www.ppsGrid.de/download/ppsGrid.dll
Re: Bild im ppsGrid (Zelle) anzeigen - VB.NET
Hallo Torsten
Es geht !!
Die Bilder werden angezeigt. Damit habe ich alles was ich brauche.
Vielen Dank für den Super Service und deine Hilfe.
An dieser Stelle muss ich nochmal etwas loswerden.
Ich muss/will in der Firma die alten VB6-Progs umstellen auf .NET
Hier sind große Tabellen im Einsatz mit 200 Spalten und 100-200 Zeilen.
Logischer Weise fängt man mit dem DataGridView an die Aufgabe umzusetzen.
Das hat auch gut funktioniert. Trotz Datenbindung erfolgte aber das Laden gemächlich. Man konnte zusehen wie das Grid aufgebaut wurde. Die Ladezeit des formatierten DataGridView war dann schlicht unmöglich und für mich nicht zu gebrauchen.
Wer wartet denn schon zig mal am Tag 5 sek. bis das Teil geladen ist. Beim Scrollen der fertigen Tabellen
wurde alles verzerrt und mit Verzögerung (wie Gummi) ausgeführt.
Das ppsGrid vom Torsten verhält sich da ganz anders. Alles flutsch. Die großen Tabellen liegen in nicht mal einer Sekunde fertig formatiert auf dem Bildschirm. Dazu brauchte ich gerade mal einen Bruchteil der Einarbeitungszeit zum DataGridView, um brauchbare Ergebnisse zu erziehlen. zudem ist die Bedienung logisch und einfach zu erlernen.
Für meinen Bedarf ist das ppsGrid ein Super Programm und nur zu empfehlen
Gruß Bertram
Es geht !!
![Very Happy :D](./images/smilies/icon_biggrin.gif)
Die Bilder werden angezeigt. Damit habe ich alles was ich brauche.
Vielen Dank für den Super Service und deine Hilfe.
An dieser Stelle muss ich nochmal etwas loswerden.
Ich muss/will in der Firma die alten VB6-Progs umstellen auf .NET
Hier sind große Tabellen im Einsatz mit 200 Spalten und 100-200 Zeilen.
Logischer Weise fängt man mit dem DataGridView an die Aufgabe umzusetzen.
Das hat auch gut funktioniert. Trotz Datenbindung erfolgte aber das Laden gemächlich. Man konnte zusehen wie das Grid aufgebaut wurde. Die Ladezeit des formatierten DataGridView war dann schlicht unmöglich und für mich nicht zu gebrauchen.
Wer wartet denn schon zig mal am Tag 5 sek. bis das Teil geladen ist. Beim Scrollen der fertigen Tabellen
wurde alles verzerrt und mit Verzögerung (wie Gummi) ausgeführt.
Das ppsGrid vom Torsten verhält sich da ganz anders. Alles flutsch. Die großen Tabellen liegen in nicht mal einer Sekunde fertig formatiert auf dem Bildschirm. Dazu brauchte ich gerade mal einen Bruchteil der Einarbeitungszeit zum DataGridView, um brauchbare Ergebnisse zu erziehlen. zudem ist die Bedienung logisch und einfach zu erlernen.
Für meinen Bedarf ist das ppsGrid ein Super Programm und nur zu empfehlen
![Smile :-)](./images/smilies/icon_smile.gif)
Gruß Bertram