Seite 1 von 1

Bild in bestimmter Spalte eines listicon einbauen

Verfasst: 02.02.2014 23:51
von derschutzhund
Kann mir jemand sagen wie ich ein Foto in einer bestimmten Spalte eines Listicon einbaue.
Zwar schaffe ich es ein Image in der gewünschten Zeile einzubauen aber das Image ist dann immer in der ersten Spalte!

Re: Bild in bestimmter Spalte eines listicon einbauen

Verfasst: 03.02.2014 00:00
von RSBasic

Re: Bild in bestimmter Spalte eines listicon einbauen

Verfasst: 03.02.2014 00:54
von derschutzhund
Habe versucht es in mein Programm einzubauen aber bekomme es nicht zu laufen.
Hier sind mal die pbf, pb und die csv die ich einlese.
Für einen Test müsste ich noch ein bmp mit anhängen geht ja aber so nicht.

Vielleicht kannst du mir da einen Tip geben, wo der Fehler liegt, was den Einbau eines bmp in der Spalte 4 angeht.
Möchte die Bilder am liebsten in der Zeile:
---------
AddGadgetItem(ListIcon_teile, -1, msg$,ImageID(0))
----------
gleich mit einbauen.


Kalul_2014.pbf

Code: Alles auswählen

Global Window_0

Global Panel_0, ListIcon_teile, Button_ende, Button_1

Enumeration FormFont
  #Font_Window_0_0
EndEnumeration

LoadFont(#Font_Window_0_0,"Tahoma", 10)

Declare teilelesen(EventType)
Declare ende(EventType)

Procedure OpenWindow_0(x = 0, y = 0, width = 885, height = 425)
  Window_0 = OpenWindow(#PB_Any, x, y, width, height, "KALKUL 2014 Bauteilekalkulationsprogramm", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  Panel_0 = PanelGadget(#PB_Any, 5, 5, 875, 320)
  AddGadgetItem(Panel_0, -1, "Bauteiledatenbank")
  ListIcon_teile = ListIconGadget(#PB_Any, 5, 35, 865, 253, "Nr.", 50, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_LargeIcon)
  AddGadgetColumn(ListIcon_teile, 1, "Bezeichnung", 400)
  AddGadgetColumn(ListIcon_teile, 2, "Preis", 50)
  AddGadgetColumn(ListIcon_teile, 3, "Foto", 100)
  AddGadgetColumn(ListIcon_teile, 4, "Lieferant", 100)
  AddGadgetColumn(ListIcon_teile, 5, "BestellNr", 100)
  AddGadgetColumn(ListIcon_teile, 6, "Bestand", 60)
  SetGadgetFont(ListIcon_teile, FontID(#Font_Window_0_0))
  CloseGadgetList()
  Button_ende = ButtonGadget(#PB_Any, 485, 370, 100, 25, "beenden")
  Button_1 = ButtonGadget(#PB_Any, 180, 350, 100, 25, "teilelesen")
EndProcedure

Procedure Window_0_Events(event)
  Select event
    Case #PB_Event_CloseWindow
      ProcedureReturn #False

    Case #PB_Event_Menu
      Select EventMenu()
      EndSelect

    Case #PB_Event_Gadget
      Select EventGadget()
        Case Button_ende
          ende(EventType())          
        Case Button_1
          teilelesen(EventType())          
      EndSelect
  EndSelect
  ProcedureReturn #True
EndProcedure
Kalkul_2014.pb

Code: Alles auswählen

EnableExplicit
 
IncludeFile "kalkul_2014.pbf"
 
Define event, EventGadget, EventType, EventMenu, EventWindow, prglauf

Structure teileliste
   nr.i
   gruppe.s
   bild.s
   bez.s
   preis.f
   lieferant.s
   bestnr.s
   lbestand.i
EndStructure

NewList teile.teileliste()

Structure fertigteileliste
   nr.i
   bild.s
   bez.s
   preis.f
   lbestand.i
EndStructure

NewList fertigteile.fertigteileliste()

OpenWindow_0()

; ----- hier etwas das sofort beim Start erledigt werden soll eintragen
 
Repeat
  Event = WaitWindowEvent()
  EventGadget = EventGadget()
  EventType = EventType()
  EventMenu = EventMenu()
  EventWindow = EventWindow()
 
  prglauf=Window_0_Events(Event)
Until prglauf=#False
End
 
;-------- ab hier die Proceduren für Buttons, etc. -----------------
 
Procedure ende(EventType)
 
EndProcedure

Procedure SetGadgetItemIcon(iGadgetNr.i, iRow.i, iCol.i, iIcon.i, iSet.i)
  Protected lvi.lv_item
  lvi\mask     = #LVIF_IMAGE
  lvi\iItem    = iRow     ; row number for change
  lvi\iSubItem = iCol     ; 2nd subitem
  lvi\pszText  = #Null   ; text to change to
   If iSet
     lvi\iImage   = iIcon   ; Icon setzen
   Else
     lvi\iImage   = -1            ; Icon löschen
   EndIf
  SendMessage_(GadgetID(iGadgetNr), #LVM_SETITEM, 0, @lvi)
EndProcedure

Procedure teilelesen(EventType)
Define zeile$, msg$, nr, foto$
   
nr = 1 
foto$ = "-"
LoadImage(0, "widerstand.bmp")    

   If ReadFile(0, "preise-bauteile.csv")   ; wenn die Datei geöffnet werden konnte, setzen wir fort...
    While Eof(0) = 0           ; sich wiederholende Schleife bis das Ende der Datei ("end of file") erreicht ist
      zeile$ = ReadString(0)      ; Zeile für Zeile im Debugger-Fenster anzeigen
      zeile$ = ReplaceString(zeile$,Chr(34),"")
      msg$ = Str(nr) + Chr(10) + ReplaceString(zeile$,";",Chr(10))
    
    ; Hinzufügen der Zeile zum Listen-Gadget.
    AddGadgetItem(ListIcon_teile, -1, msg$,ImageID(0))
    nr = nr +1  
   Wend
    CloseFile(0)               ; schließen der zuvor geöffneten Datei
    SetGadgetItemIcon(ListIcon_teile,4,4,ImageID(0),#True)
  Else
    MessageRequester("Information","Konnte Datei nicht öffnen!")
  EndIf

EndProcedure
Hier ein paar Zeilen aus der "preise-bauteile.csv"

Code: Alles auswählen

"Steckboard";2,95;;"Reichelt";"STECKBOARD 1K2V"
"Mignonaccu AA";2,24;;"onlinehandel";"0083-1"
"Kupferdraht versilbert 1mm";2,55;;"Reichelt";"silber 1,0mm"
"Schweißdraht 1 mm Länge 1m";0,14;;"Fau";"M0500"
"Schweißdraht 2 mm Länge 1m";0,15;;"Fau";"M0510"
"Platine, Epoxyd, einseitig, 160x100mm";1,5;;"Reichelt";"EPCU 160X100"
"Halter für 4 Mignonzellen AA";0,28;;"Reichelt";"Halter 4XUM3-QDK"
"Batterieclip 9V";0,35;;"Reichelt";"Halter 9V"
"Mignonzellen Paket mit 40 Stk.";8,5;;"Reichelt";"ANS AL 40 Pack"
"Renata Knopfzelle, 3 Volt, 210 mAh, 20,0x3,2mm";0,95;;"Reichelt";"CR 2032 REN"
"Prüfkabel mit Krokoklemmen (10Kabel)";1,1;;"Reichelt";"MK 612S"