Rubrik: Controls · MSFlexGrid/DataGrid | VB-Versionen: VB6 | 12.11.04 |
Bild im FlexGrid in korrekter Größe anzeigen Wie man im MSFlexGrid-Control ein Bild in seiner korrekten Größe anzeigen kann, das erfahren Sie hier. | ||
Autor: Dieter Otter | Bewertung: | Views: 21.049 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Folgendes Szenario: Sie verwenden das MSFlexGrid-Control und möchten in einer bestimmten Zelle zusätzlich ein Bild anzeigen. Das Bild selbst befindet sich hierbei entweder in einem ImageList-Control oder soll bspw. direkt aus einer Icon-Datei geladen werden.
' Bild aus ImageList in FlexGrid anzeigen With MSFlexGrid1 .Row = 1 .Col = 1 Set .CellPicture = ImageList1.ListImages(1).Picture End With
' Bild aus Datei in FlexGrid anzeigen With MSFlexGrid1 .Row = 1 .Col = 1 Set .CellPicture = LoadPicture(App.Path & "\email.ico") End With
Egal, wie man's auch anstellt: das kleine 16x16 Icon wird im FlexGrid immer viel zu groß dargestellt
Nachfolgend möchten wir Ihnen eine Prozedur vorstellen, mit der sich Bilder im FlexGrid-Control ab sofort in der gewünschten Größe anzeigen lassen!
' Bild im FlexGrid in beliebiger Größe anzeigen Public Sub flx_ShowPicture(oForm As Object, _ oGrid As Object, _ oPicture As StdPicture, _ ByVal nRow As Long, ByVal nCol As Long, _ Optional ByVal nWidth As Long = 16, _ Optional ByVal nHeight As Long = 16, _ Optional ByVal nBackColor As Long = vbWhite) Dim oPicBox As Control ' temporäre PictureBox auf der Form erstellen On Error Resume Next Set oPicBox = oForm.Controls("tmpPictureBox") If Err <> 0 Then Set oPicBox = oForm.Controls.Add("VB.PictureBox", "tmpPictureBox") oPicBox.BorderStyle = 0 End If On Error GoTo 0 With oGrid ' Zeile und Spalte festlegen .Row = nRow .Col = nCol ' Bild in die PictureBox zeichnen With oPicBox .BackColor = nBackColor .Width = nWidth * Screen.TwipsPerPixelX .Height = nHeight * Screen.TwipsPerPixelY .AutoRedraw = True .PaintPicture oPicture, 0, 0, .ScaleWidth, .ScaleHeight .AutoRedraw = False End With ' Bild der Zelle im FlexGrid zuweisen Set .CellPicture = oPicBox.Image End With ' temporäre PictureBox wieder entfernen oForm.Controls.Remove "tmpPictureBox" End Sub
Aufrufbeispiel:
' Bild aus ImageList in FlexGrid anzeigen flx_ShowPicture Me, MSFlexGrid1, ImageList1.ListImages(1).Picture, 1, 1
' Bild aus Datei in FlexGrid anzeigen flx_ShowPicture Me, MSFlexGrid1, LoadPicture(App.Path & "\email.ico", 1, 1
Über die optionalen Parameter nWidth und nHeight lässt sich die Größe festlegen, sollte sie von 16x16 abweichen. Weiterhin kann über den letzten optionalen Parameter die gewünschte Hintergrundfarbe angegeben werden.