Deutsch
Forum

Fotos in einem Listview darstellen

 

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.
 
SUSE 10.3 / Listview.dll
06.11.2006  
 



[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...

109 kB
Kurzbeschreibung: Foto in Adressenverwaltung
Hochgeladen:06.11.2006
Ladeanzahl102
Herunterladen
 
06.11.2006  
 



Na Horst, das ist aber kein Listvieweintrag, sondern das Foto ist außerhalb des Listview.
 
06.11.2006  
 




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.
 
06.11.2006  
 




Fred
Matthiesen
Hallo Frank,
wie gross darf max. das Icon sein und wie wird es eingefügt. Welcher Befehl?
 
SUSE 10.3 / Listview.dll
06.11.2006  
 



...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
 
06.11.2006  
 




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.
 
06.11.2006  
 




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...

47 kB
Hochgeladen:06.11.2006
Ladeanzahl109
Herunterladen
 
06.11.2006  
 



[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
 
07.11.2006  
 




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.
 
07.11.2006  
 




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.
 
SUSE 10.3 / Listview.dll
07.11.2006  
 



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.
 
07.11.2006  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

5.834 Betrachtungen

Unbenanntvor 0 min.
Alibre25.01.2024
Uwe Lang13.04.2020
AndreasS26.12.2018
Member 154727723.09.2018
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie