Deutsch
Units

Einfachstes ListView erzeugen (Unit) - Download

 
- Seite 1 -



Michael
Dell
plv.pcu v2.4

Befehlsliste:

plv.CreateListView()
plv.DelLView()
plv.SetHeader()
plv.SetRow()
plv.ReSetItem()
plv.GetRow()
plv.DelAll()
plv.DelRow()
plv.gSelItems()
plv.gCheckItems()
plv.sCheckItem()
plv.BKCol()
plv.tCol()
plv.tBKCol()
plv.UpDate()
plv.SetFnt()
plv.ResFnt()
plv.gImgXY()
plv.Ico2Lst()
plv.GetHeader()
plv.GetHeaderOrder()
plv.SetHeaderOrder()
plv.Version$()
plv.HitSortsLV()

Autoren: Richard Maurukas, Michael Dell, Rolf Koch, Carlo Keil, efisch, Thomas R. & Dieter Zornow

Geändert am: 05.12.2007

Änderungen v2.4: XProfan v11 Problem gelöst. Dank, Dieter Zornow!!!
plv als Include plv.pinc inkl. Beispiel beigelegt.

56 kB
Kurzbeschreibung: pöv v2.4
Hochgeladen:05.12.2007
Ladeanzahl563
Herunterladen
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
22.10.2004  
 



 
- Seite 3 -



Michael
Dell
Das isses ja, die sollte mit Icons sein

Hab das ganze mal n bisserl umgestrickt, vieleicht lag das Problem darin das die Imagelist vor dem Listview erzeugt wurde.
Jetzt wird sie danach erzeugt allerdings intern (heißt in einem Befehl) und direkt dem Listview zugeordnet, mal sehn ob das jetzt läuft.

Gruß

Michael...
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
02.11.2004  
 




Rolf
Koch
Sorry, aber immer noch das gleiche. Keine Icons zu sehen.

Rolf
 
02.11.2004  
 




Michael
Dell
Hrrmpff! Gnade, naja kreig ich schon noch hin.

Gruß...
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
02.11.2004  
 




Rolf
Koch
:+D)-- Jo, das kenne ich.
Man hat gerade das Gefühl, daß es perfekt läuft und siehe da: Nein, Bill G. macht einem mit den verschiedenen Windows Versionen mal wieder einen Strich durch die Rechnung.
Von jedem Programmierer wird erwartet, daß man kompatibel bleibt - jedoch Mircosoft hat dies von Version zu Version nicht nötig. Ist ja wie bei Nintendo. Jede Konsole die auf den Markt kam, hatte ein anderes Medium - nicht wie bei der PS und PS2 von Sony. Dies einfach nur mal am Rande. Huch jetzt hab ich mich aber weit vom Thema entfernt
Rolf
 
02.11.2004  
 




Frank
Abbing
Hi.

Michael, schick mir dein Stück Code doch mal zu und ich vergleiche es mal mit meinem Maschinencode.
 
02.11.2004  
 




Normann
Strübli
Hi,

Wenn Du den Quelltext nicht rausrücken willst dann guck Dir den Folgenden mal an.
Bei mir funktioniert das ganze.
Nebenbei sind da auch Subitem-Images enthalten -kannst Du ja gleich mit
einbauen :biggrin:

Vielleicht findest Du den Fehler ja so...
KompilierenMarkierenSeparieren
 $H commctrl.ph
DEf LockWindowUpdate(1) ! "USER32","LockWindowUpdate"
Def InitCommonControls(0) !"COMCTL32","InitCommonControls"
InitCommonControls()
DEF ExtractIcon(3) !"SHELL32","ExtractIconA"
window 30,30-550,300
usefont "MS Sans Serif",15,7,0,0,0
setdialogfont 1
settruecolor 1
----------------------------------------------------------------ImageList
declare IcoList&
Def SetWindowlong(3) ! "USER32.DLL","SetWindowLongA" zum Ändern des Fensterstils
def ImageList_Create(5) !"COMCTL32","ImageList_Create"
def ImageList_AddIcon(2) !"COMCTL32","ImageList_AddIcon"
def ImageList_Destroy(1) !"COMCTL32","ImageList_Destroy"
def LoadIcon(2) !"USER32","LoadIconA"
Def ImageList_Add(3) !"COMCTL32","ImageList_Add"
declare himagelist&,e%,datei#,imagehandle&
DECLARE PictureObject&
IcoList&=ImageList_Create(18,18,1,1,0)---Parameter 1+2: Grösse der Icons
ImageList_AddIcon(IcoList&,PictureObject&)---SystemIcons laden
ImageList_AddIcon(IcoList&,LoadIcon(0,32512))---SystemIcons laden
ImageList_AddIcon(IcoList&,LoadIcon(0,32513))
ImageList_AddIcon(IcoList&,LoadIcon(0,32514))
Declare LVColumntext#,LVCOLUMN#
Dim LVColumntext#,255
Dim LVCOLUMN#,300

PROC LVINSERTCOLUMN --------------------HEADER-für ReportStil--------------------------

    string LVColumnText#,0 = @$(5)      Der Übergebene Text in @$(4)        ok
    long LVCOLUMN#,0 = $000F            MAsk,Text|Format|Width|Subitem      ok
    long LVCOLUMN#,4 = @&(3)            Ausrichtung                In @&(2) ok
    long LVCOlumn#,8 = @&(4)            Width of Column in Pixeln. In @&(3) ok
    Long LVColumn#,12= LVColumnText#    die Adresse aus LVColumntext#       ok
    sendmessage(@&(1),$101B,@&(2),LVColumn#) Insertcolumn. in @&(1)        ok
    ENDPROC -------------------------------------------------------------------------
    def LvInsertColumn(2) sendmessage( &(1),~LVM_INSERTCOLUMN,%(2),Lvc# )
    def LvInsertItem(1) if(Lv#.SubItem&,sendmessage(&(1),~LVM_SETITEMTEXT,Lv#.Item&,Lv#),sendmessage(&(1),~LVM_INSERTITEM,0,Lv#))
    def LvGetSelect(2) sendmessage( &(1),~LVM_GETNEXTITEM,&(2),~LVIS_SELECTED )
    def LvGetItemText(2) sendmessage( &(1),~LVM_GETITEMTEXT,&(2),Lv# )
    def LvSetItem(1) sendmessage( &(1),~LVM_SETITEM,0,Lv# )
    Declare LV_Handle&    Handle des Aktuellen listviews
    ---------------------------------------------------------------------------------Funktionen

    proc InsertColumn

        Parameters LV_Handle&,mask&,Fmt&,Cx&,Text$,Textmax&,Subitem&,Image&,Order&
        LvInsertColumn(@&(1),0)

    Endproc

    >>> Setzt die Eigenschaften für das Listview...

    Proc SetItem

        Parameters LV_Handle&,mask&,state&,statemask&,image&,item&,subitem&,text$
        Lv#.Mask&   = @&(2)
        Lv#.state&  = @&(3)
        Lv#.statemask&  = @&(4)
        Lv#.Image&   = @&(5)
        Lv#.Item&    = @&(6)
        Lv#.SubItem& = @&(7)
        Lv#.Text$    = @$(8)
        LvInsertItem(Lv1&)
        Lv#.Mask&   =~LVIF_IMAGE
        LvSetItem(Lv1&)

    endproc

    declare Lvc#,Lv#,Lv1&
    Lv1&=control("SysListView32","",$54010009,0,0,550,300,%hwnd,1,%hinstance,$200)
    sendmessage(Lv1&,~LVM_SETIMAGELIST,1,IcoList&)--------ListView mit ImageList verbinden
    sendmessage(Lv1&,~LVM_SETEXTENDEDLISTVIEWSTYLE,0,~LVS_EX_GRIDLINES | ~LVS_EX_SUBITEMIMAGES | ~LVS_EX_CHECKBOXES | ~LVS_EX_FULLROWSELECT | ~LVS_EX_HEADERDRAGDROP | ~LVS_EX_FLATSB | ~LVS_EX_INFOTIP)
    sendmessage(lv1&,$1001,0,$00AAAAAA)     Hintergrund-Farbe ok |
    sendmessage(lv1&,$1024,0,$000000FF)     Text-Farbe        ok |
    sendmessage(lv1&,$1026,0,$FFFFFFFF)     TextHintergrund-Farbe transparent? -1
    -----------------Font des Headers ändern
    declare Font&,Header&
    Font&=Create("Font","Arial",18,0,1,0,0)
    Header&=sendmessage(Lv1&,~LVM_GETHEADER,0,0)
    setfont Header&,Font&
    struct Lvc=Mask&,Fmt&,Cx&,Text&,TextMax&,SubItem&,Image&,Order&,Text$(20)
    dim Lvc#,Lvc
    clear Lvc#
    Lvc#.Mask&    =~LVCF_TEXT | ~LVCF_IMAGE | ~LVCF_WIDTH
    Lvc#.Text&    =Lvc#+32
    Lvc#.TextMax& =200
    Lvc#.Cx&   =180   Breite
    Lvc#.Image&=1
    Lvc#.Text$ ="Spalte 1"
    LvInsertColumn(Lv1&,0)
    Lvc#.Cx&   =120
    Lvc#.Image&=0
    Lvc#.Text$ ="Spalte 2"
    LvInsertColumn(Lv1&,1)
    Lvc#.Cx&   =120
    Lvc#.Image&=1
    Lvc#.Text$ ="Spalte 3"
    LvInsertColumn(Lv1&,2)
    dispose Lvc#
    struct Lvi=Mask&,Item&,SubItem&,State&,StateMask&,Text&,TextMax&,Image&,Param&,Text$(200)
    dim Lv#,Lvi
    clear Lv#
    Lv#.Text&   =(Lv#+36)
    Lv#.TextMax&=200----Maximal zu erwartende Textlänge entspricht Länge von Lv#.Text$
    -------------------------------------------------Item 1
    Lv#.Mask&   =~LVIF_TEXT | ~LVIF_PARAM | ~LVIF_STATE
    Lv#.Image&   =2
    Lv#.Item&    =0
    Lv#.SubItem& =0
    Lv#.Text$    ="Eintrag 1"
    LvInsertItem(Lv1&)
    Lv#.SubItem& =1
    Lv#.Text$    ="Eintrag 2"
    LvInsertItem(Lv1&)
    Lv#.Mask&   =~LVIF_IMAGE
    Lv#.Image&  =2
    LvSetItem(Lv1&)
    Lv#.Mask&   =~LVIF_TEXT | ~LVIF_PARAM | ~LVIF_STATE
    Lv#.Image&   =1
    Lv#.Item&    =1
    Lv#.SubItem& =0
    Lv#.Text$    ="Eintrag 3"
    LvInsertItem(Lv1&)
    Lv#.SubItem& =1
    Lv#.Text$    ="Eintrag 4"
    LvInsertItem(Lv1&)
    Lv#.Mask&   =~LVIF_IMAGE
    Lv#.Image&  =7
    LvSetItem(Lv1&)
    Lv#.Mask&   =~LVIF_STATE
    Lv#.Image&   =1
    Lv#.Item&    =0
    Lv#.SubItem& =0
    Lv#.state&  = 12092
    Lv#.statemask&  = $F000
    sendmessage(lv1&,~LVM_SETITEM,0,lv#)  Neue Attribute setzen
    setitem lv1&,~LVIF_TEXT | ~LVIF_PARAM | ~LVIF_STATE | ~LVIF_IMAGE,0,0,0,2,0,"Text1"
    setitem lv1&,~LVIF_TEXT | ~LVIF_PARAM | ~LVIF_STATE | ~LVIF_IMAGE,0,0,0,2,1,"Text2"
    setitem lv1&,~LVIF_TEXT | ~LVIF_PARAM | ~LVIF_STATE,0,0,0,2,2,"Text3"

    while 1

        waitinput

    wend

    destroywindow(Lv1&)
    ImageList_Destroy(IcoList&)
    DeleteObject Font&
    dispose Lv#
 
02.11.2004  
 




Michael
Dell
Hallo Normann,

auf die Gefahr hin dich zu enttäuschen ich verwende die selben APIs und Messages wie in deinem und einigen anderen
Beispielen auch!!!

Die folgenden Strukuren sind sicher bekannt:
KompilierenMarkierenSeparieren
Struct LV_COLUMN = Maske&,Formate&,SpaltenBreite&,pointerText&,TextLen&,Spalte&
Struct LV_Item   = Maske&,Zeile&,Spalte&,Status&,StatusMaske&,pointerText&,TextLen&,ImgIndex&,lParam&

Lediglich das auslesen der ListView_CheckBoxen ist nicht so bekannt: (oder ich habs einfach nicht entdeckt!)
KompilierenMarkierenSeparieren
Proc IsItemChecked

    Parameters lvHndl&,Row&
    Declare Item#,erg&
    Dim Item#,LV_Item

    With Item#

        .Maske&       = $0008
        .Zeile&       = Row&
        .Spalte&      = 0  (Col&)
        .Status&      = 2
        .StatusMaske& = $F000

    EndWith

    SendMessage(lvHndl&,$1005,Row&,Item#)
    erg& = Equ(Item#.Status&,8192)
    Dispose Item#
    Return erg&

EndProc


Und damit ist alles bekannt, ich verwende keine geheimen Tricks oder so!

Gruß

Michael...
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
03.11.2004  
 




Manfred
Barei
Hallo Michael,

Funktioniert unter NT4.0 (Servicepack 6) Einwand Frei, Icons werden alle Angezeigt. :+)--

Grus aus der Lüneburger Heide von Manfred ( weiter so )
 
Zu wenig Wissen ist gefärlich, zu viel auch.(XProfan X4) | Win 10 Pro 64 | Win7 Ultimate 32/64 | AMD FX-8320, 16GB, GeForce GT 630 |
03.11.2004  
 




Normann
Strübli
Mppff!

Michael, ich wollte mit dem Beispiel ja auch nicht zeigen WIE Du es machen sollst.
(is klar das Du das weißt)
Es geht darum das dieses Beispiel im gegensatz zu Deiner Exe bei
mir einwandfrei funktioniert!

Also muß da doch irgendeine Kleinigkeit anders sein oder :?:

Gruß
Normann
 
03.11.2004  
 




Rolf
Koch
Ja, stimmt, Normans Beispiel funktioniert komischerweise mit Icons auch bei mir.
Rolf
 
03.11.2004  
 




Michael
Dell
Ja, nach meiner kleinen Reise ins WinXP Land (Besuch bei Mom!) hatte ich nach dem ichs mal selbst gesehen hab das Gefühl das WinXP meinen Stil nicht mag , meinen Control- Stil genau gesagt.

Hab das mal entsprechend geändert und hochgeladen, auf WinXP testen kann ichs aber erst Morgen.

Gruß...
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
03.11.2004  
 




Rolf
Koch
Images im Listview: 0

Leider immer noch nicht. Komisch, oder?

Rolf
 
03.11.2004  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

59.172 Betrachtungen

Unbenanntvor 0 min.
Gast.081512.10.2024
Erhard Wirth14.06.2024
Axel Berse03.12.2023
RudiB.08.04.2022
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