Laden einer Grakfik in ein Listicongadget.

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Laden einer Grakfik in ein Listicongadget.

Beitrag von dysti »

Hallo,
kann man eine Grafik/Foto in einem Listicongadget laden und anzeigen?
Wenn ja, wie geht das?
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
Vallan
Beiträge: 223
Registriert: 20.01.2006 19:34
Kontaktdaten:

Beitrag von Vallan »

ja:

Code: Alles auswählen

loadimage(...)
AddGadgetItem(#Gadget, Position, Text$ [, ImageID [, Flags]])
Drück mal im Editor F1, da ist das näher erklärt.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Er meint ein richtiges (Hintergrund-)Bild, kein 16x16 ICO!! Jadas geht, aber nur mit API. Musst mal gucken!
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Marvin
Beiträge: 497
Registriert: 17.07.2005 14:42
Wohnort: Krikkit

Beitrag von Marvin »

Benutzeravatar
Rubiko
Beiträge: 943
Registriert: 25.02.2005 19:43
Computerausstattung: Intel i7 2600k
8GB Ram
GeForce GTX 560 Ti
Wohnort: Schwabach

Beitrag von Rubiko »

Code: Alles auswählen

; English forum: http://purebasic.myforums.net/viewtopic.php?t=5208&highlight=
; Author: El_Choni  (updated for PB3.92+ by Andre)
; Date: 25. February 2003

#LVBKIF_SOURCE_NONE = 0
#LVBKIF_SOURCE_HBITMAP = 1
#LVBKIF_SOURCE_URL = 2
#LVBKIF_SOURCE_MASK = 3
#LVBKIF_STYLE_NORMAL = 0
#LVBKIF_STYLE_TILE = $10
#LVBKIF_STYLE_MASK = $10
#LVM_SETBKIMAGE = #LVM_FIRST + 68
#LVM_SETBKIMAGEW = #LVM_FIRST + 138
#LVM_GETBKIMAGE = #LVM_FIRST + 69
#LVM_GETBKIMAGEW = #LVM_FIRST + 139


Structure LVBKIMAGE
  ulFlags.l
  hbm.l
  pszImage.l
  cchImageMax.l
  xOffsetPercent.l
  yOffsetPercent.l
EndStructure

OleInitialize_(0)
If OpenWindow(0, 384, 288, 640, 480, "", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget)
  LVWidth = WindowWidth(0)
  LVCWidth = Int(LVWidth/4)-1
  If CreateGadgetList(WindowID(0))
    ListIconGadget = ListIconGadget(0, 0, 0, LVWidth, WindowHeight(0), "Column 0", LVCWidth, #PB_ListIcon_GridLines|#PB_ListIcon_FullRowSelect)
    AddGadgetColumn(0, 1, "Column 1", LVCWidth)
    AddGadgetColumn(0, 2, "Column 2", LVCWidth)
    AddGadgetColumn(0, 3, "Column 3", LVCWidth)
    AddGadgetItem(0, 0, "Aaa 1"+Chr(10)+"Bcc 3"+Chr(10)+"Cdd 2"+Chr(10)+"Eee 3"+Chr(10), 0)
    AddGadgetItem(0, 1, "Aab 2"+Chr(10)+"Bbc 2"+Chr(10)+"Ddd 3"+Chr(10)+"Dde 1"+Chr(10), 0)
    AddGadgetItem(0, 2, "Abb 3"+Chr(10)+"Baa 1"+Chr(10)+"Ccd 1"+Chr(10)+"Dee 2"+Chr(10), 0)
    SendMessage_(ListIconGadget, #LVM_SETTEXTCOLOR, 0, $ff0000)
    SendMessage_(ListIconGadget, #LVM_SETBKCOLOR, 0, #CLR_NONE)
    SendMessage_(ListIconGadget, #LVM_SETTEXTBKCOLOR, 0, #CLR_NONE)
    Buffer = AllocateMemory(512)
    GetModuleFileName_(GetModuleHandle_(0), Buffer, 512)
    InitialDir$ = GetPathPart(PeekS(Buffer))
    FreeMemory(Buffer)
    File$ = OpenFileRequester("Select image", InitialDir$, "ListIcon supported images|*.bmp;*.ico;*.gif;*.jpg;*.wmf;*.emf", 0)
    If File$
      lbk.LVBKIMAGE
      lbk\ulFlags = #LVBKIF_STYLE_NORMAL|#LVBKIF_SOURCE_URL;|#LVBKIF_STYLE_TILE
      lbk\pszImage = @File$
;      lbk\xOffsetPercent;
;      lbk\yOffsetPercent;
      SendMessage_(ListIconGadget, #LVM_SETBKIMAGE, 0, lbk)
    EndIf
    Repeat
      EventID = WaitWindowEvent()
    Until EventID = #PB_Event_CloseWindow
  EndIf
EndIf
OleUninitialize_()
End

; ExecutableFormat=Windows
; FirstLine=1
; EnableXP
; EOF
so sollte der Code an pb 4.0 angepasst sein.
Aber warum meldet der Debugger einen Invalid memory access?
Ich wollte die Welt verändern, doch Gott gab mir nicht den Quelltext.
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

Hey,

Vallan hat es erkannt. ich möchte kein Hintergrundbild laden, sondern Fotos.
Auch keine Icons. Als Beispiel eine Schüleradressdatei mit Foto. So kann man dann seine Schüler schneller in einem neuen Schuljahr kennenlernen als wenn man nur eine normale Adressdatenbank hat. Access kann Bilddaten speichern und da kommt höchstwahrscheinlich das nächste Problem: Wie lese ich die Bilddaten aus der Accessdatei. Mit GetDatabaseLong. Aber erstmal das Problem mit der Fotodarstellung in einem Listicongadget lösen, dann sehen wir weiter. Werde erstmal mit den Vorschlag von Vallan weiterprobieren. Mal sehen ob es klappt.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

Vallan: Ich glaube so geht es. Zumindest sehe ich etwas, aber es ist viel zu klein. Wie kann ich ddie Höhe und Breite des Gadgets einstellen, damit das Bild größer angezeigt wird?
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Antworten