Forum | | | | | Hi Folks, Folgender Code färbt jede zweite Zeile eines Listviews mittels einer &Loop Schleife ein. Funktioniert prächtig. Aber wenn man die Liste zum dritten Mal aufruft wird nicht mehr eingefärbt. Experimente mit den WhileLoop Parametern brachten keine Besserung. KompilierenMarkierenSeparierenSetErrorlevel 0
Declare bereich#,listview&,lvdll&,text$,bytes&,bereich#,x&,y&,z&,Dlg&,But1&,But2&,But3&,ende%,e%
$I Listview_Funktionen.inc
lvdll&=usedll(Listview.dll)
Proc Raise_Linie
WhileLoop 1,1024,2
RaiseLine(Listview&,(&Loop+1000000),0,Rgb(255,255,120))
Endwhile
RaiseLine(Listview&,(1025),0,Rgb(255,255,120))
EndProc
Proc NeuerTitel
x&=GetColumns(listview&)
y&=GetLines(listview&)
text$=Listview, farbige Spalten... [Spalten +Str$(x&)+] [Zeilen +Str$(y&)+]
SetText Dlg&,text$
EndProc
Proc Liste
Dlg& = @Create(Dialog,%Hwnd,,0,0,800,600)
listview&=CreateListView(Dlg&,%hinstance,0,Rgb(100,160,255),-1,$31)
InsertColumn listview&,Lagercode,64,0
InsertColumn listview&,Artikelnummer,64,0
InsertColumn listview&,Warengruppe,148,0
InsertColumn listview&,Artikelbezeichnung,200,0
InsertColumn listview&,Artikelbeschreibung,150,0
InsertColumn listview&,Preis,50,1
AutoSortListview listview&,1,1,1,1,1,2
text$=LVData/C64.csv
bytes&=@FileSize(text$)
If bytes&>0
Dim bereich#,bytes&
ReadFileQuick(addr(text$),bereich#,0,bytes&)
CsvToListview(listview&,bereich#,bytes&,6)
Dispose bereich#
EndIf
Raise_Linie
ShowListView(listview&,32,32,728,384)
InitMessages(Dlg&)
~~~~~~~~~~~~~~~~~~~
2 Spalten einfärben
~~~~~~~~~~~~~~~~~~~
x&=MixRGBs(Rgb(100,160,255),$ffffffff)
text$=00000
RaiseColumns(listview&,addr(text$),$00000000,x&)
NeuerTitel
text$=Ein Beispiel für verschieden farbige Spalten und Zeilen in Listviews:
text$=text$+Das erhöht die Lesbarkeit einer Tabelle enorm.
Create(TEXT,Dlg&,text$,32,476,728,72)
text$=Neuer Text Der neue Text
x&=2 Nummer der Spalte
Dim bereich#,40
Clear bereich#
Long bereich#,0=4 LVCF_TEXT
Long bereich#,12=Addr(text$) Adresse des neuen Texts
Long bereich#,16=256 Maximale Textlänge
@SendMessage(listview&,4122,x&,bereich#) LVM_SETCOLUMN
Dispose bereich#
But3& = @Create(Button,Dlg&,Zurück,300,500,100,50)
E% = 0
WhileNot E%
WAITINPUT
If @Clicked(But3&)
e%=1
DestroyWindow(Dlg&)
EndIf
EndWhile
CloseMessages(Dlg&)
EndProc
Windowstyle 543
Windowtitle Listview, farbige Spalten...
Window 0,0-800,600
Cls
Usefont MS Sans Serif,10,0,0,0,0
SetDialogFont 1
But1& = @Create(Button,%Hwnd,Liste,300,300,100,50)
But2& = @Create(Button,%Hwnd,Ende,300,370,100,50)
Ende% = 0
WhileNot Ende%
WAITINPUT
If @Clicked(But1&)
Liste
ElseIf @Clicked(But2&)
freedll lvdll&
$I Listview_Dispose.inc
End
EndIf
EndWhile
End
Was mache ich falsch?
Lutz Krüger |
| | | | |
| | Gerd Telzerow | Hallo Lutz,
das Zauberwort heist EraseListview() und DestroyWindow(%hwnd) ! KompilierenMarkierenSeparierenSeterrorlevel 0
Declare Bereich#,Listview&,Lvdll&,Text$,Bytes&,Bereich#,X&,Y&,Z&,Dlg&,But1&,But2&,But3&,Ende%,E%
$I Listview_funktionen.inc
Lvdll&=Usedll(Listview.dll)
Proc Raise_linie
Whileloop 1,1024,2
Raiseline(Listview&,(&Loop+1000000),0,Rgb(255,255,120))
Endwhile
Raiseline(Listview&,(1025),0,Rgb(255,255,120))
Endproc
Proc Neuertitel
X&=Getcolumns(Listview&)
Y&=Getlines(Listview&)
Text$=Listview, farbige Spalten... [Spalten +Str$(X&)+] [Zeilen +Str$(Y&)+]
Settext Dlg&,Text$
Endproc
Proc Liste
Dlg& = @Create(Dialog,%Hwnd,,0,0,800,600)
Listview&=Createlistview(Dlg&,%Hinstance,0,Rgb(100,160,255),-1,$31)
Insertcolumn Listview&,Lagercode,64,0
Insertcolumn Listview&,Artikelnummer,64,0
Insertcolumn Listview&,Warengruppe,148,0
Insertcolumn Listview&,Artikelbezeichnung,200,0
Insertcolumn Listview&,Artikelbeschreibung,150,0
Insertcolumn Listview&,Preis,50,1
Autosortlistview Listview&,1,1,1,1,1,2
SetItem Listview&,,,,,
SetItem Listview&,,,,,
SetItem Listview&,,,,,
Text$=LVData/C64.csv
Bytes&=@Filesize(Text$)
If Bytes&>0
Dim Bereich#,Bytes&
Readfilequick(Addr(Text$),Bereich#,0,Bytes&)
Csvtolistview(Listview&,Bereich#,Bytes&,6)
Dispose Bereich#
Endif
Raise_linie
Showlistview(Listview&,32,32,728,384)
Initmessages(Dlg&)
~~~~~~~~~~~~~~~~~~~
2 Spalten einfärben
~~~~~~~~~~~~~~~~~~~
X&=Mixrgbs(Rgb(100,160,255),$Ffffffff)
Text$=00000
Raisecolumns(Listview&,Addr(Text$),$00000000,X&)
Neuertitel
Text$=Ein Beispiel für verschieden farbige Spalten und Zeilen in Listviews:
Text$=Text$+Das erhöht die Lesbarkeit einer Tabelle enorm.
Create(TEXT,Dlg&,Text$,32,476,728,72)
Text$=Neuer Text Der neue Text
X&=2 Nummer der Spalte
Dim Bereich#,40
Clear Bereich#
Long Bereich#,0=4 LVCF_TEXT
Long Bereich#,12=Addr(Text$) Adresse des neuen Texts
Long Bereich#,16=256 Maximale Textlänge
@Sendmessage(Listview&,4122,X&,Bereich#)LVM_SETCOLUMN
Dispose Bereich#
But3& = @Create(Button,Dlg&,Zurück,300,500,100,50)
E% = 0
Whilenot E%
Waitinput
If @Clicked(But3&)
E%=1
Destroywindow(Dlg&)
Endif
Endwhile
EraseListview(Listview&)
Closemessages(Dlg&)
Endproc
Windowstyle 543
Windowtitle Listview, farbige Spalten...
Window 0,0-800,600
Cls
Usefont MS Sans Serif,10,0,0,0,0
Setdialogfont 1
But1& = @Create(Button,%Hwnd,Liste,300,300,100,50)
But2& = @Create(Button,%Hwnd,Ende,300,370,100,50)
Ende% = 0
Whilenot Ende%
Waitinput
If @Clicked(But1&)
Liste
Elseif @Clicked(But2&)
Freedll Lvdll&
$I Listview_dispose.inc
End
Endif
Endwhile
DestroyWindow(%hwnd)
End
Gerd |
| | | | |
|
AntwortenThemenoptionen | 510 Betrachtungen |
ThemeninformationenDieses Thema hat 2 Teilnehmer: |