| |
|
|
Fred Matthiesen | Wie kann ich eigene Fotos/Bilder in einem Listview darstellen. Z.B. eine Adressverwaltung mit Vorname,Name,Foto,..... oder Foto,Vorname,Name,..... Die Reihenfolge ist egal. |
|
|
| |
|
|
|
| [quote:6fef3db1e6]Wie kann ich eigene Fotos/Bilder in einem Listview darstellen.[/quote:6fef3db1e6] In meiner Adressenverwaltung ADRESSOR kann ich zu jedem Eintrag einen Steckbrief erstellen. In dem ist dann auch das zugehörende Foto - siehe Bild Runterladen kannst Du den ADRESSOR von meiner Homepage - siehe unten... |
|
|
| |
|
|
|
| Na Horst, das ist aber kein Listvieweintrag, sondern das Foto ist außerhalb des Listview. |
|
|
| |
|
|
|
Frank Abbing | Listviews können keine Fotos beinhalten, nur ein Hintergrundsbild. Machbar wären Icons, die ein Foto zeigen, aber hier ist die Grösse sehr eingeschränkt. |
|
|
| |
|
|
|
Fred Matthiesen | Hallo Frank, wie gross darf max. das Icon sein und wie wird es eingefügt. Welcher Befehl? |
|
|
| |
|
|
|
| ...ich bin zwar nicht Frank, aber auf deine Frage eine Antwort von mir: Wenn du die Listview.dll hast, hast du auch die Hilfe. In der Hilfe ist ein Unterverzeichnis mit PRF-Demo-Code. Schau dir da mal den Code profan_icons.prf an - hier siehst du, wie Icons geladen werden. Die Grösse richtet sich nach der Zeilenhöhe - wenn das bis zu 32x32 Pixel geht, ist die Darstellung für ein Foto denkbar besch... - besser ist, wenn du so wie ich, eine Unterdatei erstellst, in dem dann Fotos geladen werden |
|
|
| |
|
|
|
Frank Abbing | Die Grösse der Icons ist unter den verschiedenen Betriebssystemen verschieden. XP kann - soweit ich weiss - 256x256 Pixel grosse Icons verarbeiten, 98 nur 32x32 Pixel. Alles ohne Gewähr. Dazu musst du eine Imagelist erstellen, eine Liste, in der Icons gesammelt werden. Es ist aber durchaus möglich, auch Bitmaps in die Imagelist zu laden, anstelle von Icons. Diese Liste jedenfalls weisst du nachher mit der Listview.dll-Funktion SetImageList() einem Listview zu. Einem Item oder Subitem ein Icon aus der Liste zuweisen geht dann mit SetIconColumn(), SetIcon(), SetIconMode(), SetIconsFromMem() und/oder SetIconsWith(). Die Listview.dll besitzt auch Funktionen, um Imagelisten automatisch zu generieren, allerdings nicht welche mit so grossen Icons. Die APIs hierzu sind aber leicht selber zu benutzen. ImageList_Create und ImageList_Add. Wenn ich mal Zeit habe, versuche ich mal ein Demo mit Riesengrafiken zu basteln. |
|
|
| |
|
|
|
Frank Abbing | So, hatte grade ne Viertelstunde Zeit zum Ausprobieren. Geht tatsächlich mit allen Bitmapbildern, und das sogar sehr einfach. Hier ein Testcode, der mit 80x80 Pixel grossen Bildern arbeitet. Muss noch vervollständigt werden (Bilder freigeben usw.), zeigt aber, wie es geht. KompilierenMarkierenSeparieren!Declare lvdll&,listview&,text$,x&,y&,z&,ilist&,bild1&,bild2&
$I Listview_Funktionen.inc
lvdll&=usedll("Listview.dll")
Cls GetSysColor(15)
Def ImageList_Create(5) !"comctl32.dll","ImageList_Create"
Def ImageList_Destroy(1) !"comctl32.dll","ImageList_Destroy"
Def ImageList_Add(3) !"comctl32.dll","ImageList_Add"
Usefont "MS Sans Serif",10,0,0,0,0
SetDialogFont 1
InitMessages(%hwnd)
ilist&=ImageList_Create(80,80,33,0,0)
listview&=CreateListView(%hwnd,%hinstance,0,GetSysColor(24),-1,$3)
bild1&=Create("hPic",-1,"testpic.bmp")
ImageList_Add(ilist&,bild1&,0)
bild2&=Create("hPic",-1,"testpic2.bmp")
ImageList_Add(ilist&,bild2&,0)
SetImageList(listview&,ilist&)
InsertColumn listview&,"Name",200,0
InsertColumn listview&,"Index",160,0
SetItem listview&,"Test","Test"
SetItem listview&,"Test","Test"
SetItem listview&,"Test","Test"
SetIcon(listview&,0,0)
SetIcon(listview&,1,1)
SetIcon(listview&,2,0)
SetIconColumn(1)
SetIcon(listview&,0,1)
SetIcon(listview&,1,0)
SetIcon(listview&,2,1)
ShowListView(listview&,8,8,480,320)
While 1
waitinput
Case %key=2:BREAK
EndWhile
ImageList_Destroy(ilist&)
DestroyWindow(%hwnd)
freedll lvdll&
End
Hey, ohne Texte ist das schon ne schöne Bilderanzeige... |
|
|
| |
|
|
|
| [quote:9e3b6fe95e]So, hatte grade ne Viertelstunde Zeit zum Ausprobieren. Geht tatsächlich mit allen Bitmapbildern, und das sogar sehr einfach. Hier ein Testcode, der mit 80x80 Pixel grossen Bildern arbeitet. Muss noch vervollständigt werden (Bilder freigeben usw.), zeigt aber, wie es geht.[/quote:9e3b6fe95e] @Hallo Frank
Die Idee ist Super - jetzt habe ich wieder Beschäftigung bis zum Frühling - werde mein ADRESSOR-Programm umschreiben |
|
|
| |
|
|
|
Frank Abbing | Hallo.
[quote:08ca1262e0]Die Idee ist Super - jetzt habe ich wieder Beschäftigung bis zum Frühling - werde mein ADRESSOR-Programm umschreiben [/quote:08ca1262e0] Werde bei Gelegenheit noch ein bischen damit experimentieren. Dass die Geschichte mit Bitmaps auch so gut klappt, hätte ich beim Lesen dieser Postingfrage nicht gedacht. |
|
|
| |
|
|
|
Fred Matthiesen | Danke Frank für die Antworten, aber: Ich habe das Programm in Profan9 gestartet und den Befehl: Cls GetSysColor(15) kennt er nicht. Habe dann Getsyscolor gelöscht, dann ging es weiter. Dann blieb er in dieser Zeile stecken: listview&=CreateListView(%hwnd,%hinstance,0,GetSysColor(24),-1,$3) Auch hier habe ich GetSysColor einfach durch 0 ersetzt. Jetzt zeigt er zwar ein Listview an, aber alle Felder sind schwarz. Nun ja, ich habe jetzt versucht das nach Purebasic zu konvertieren. Die Image_list-Befehle kennt er nicht. Allerdings die Hilfe zur Listview.dll auch nicht.Es scheinen also Profan-Befehle zu sein. Aber auch in dieser Hilfe bin ich nicht fündig geworden. Anscheinen sind das Sendmassage-Befehle. Ich vermute das mal. Also: in welcher Hilfe stehen diese Befehle? Diesen Befehl habe ich in der Listview.dll-Hilfe gefunden: CreateImageList(F,B). Das ist aber auch alles. |
|
|
| |
|
|
|
| getsyscolor ist eine user32dll api - in PB dann glaube einfach nur GetSysColor_ schreiben. Kannst auch ersetzen in Xprofan in rgb(r&,g&,b&) bzw. rgb(255,0,0) für Rot - oder direkt in die Konstante ersetzen $00FF0000 für Blau. 0 (Null) ist natürlich schwarz!
Wenn Du jedoch mit XProfan mit Prekompiler XPSE arbeitest kannst auch einfach so getsyscolor schreiben, alle Apis aus den Standardheaders werden korrekt umgesetzt in entsprechende call s.
Also nimmst einfach XPSE dann geht auch getsyscolor, oder getsyscolor per def definieren. |
|
|
| |
|
|