Ich heb mal nichmal vorsichtig den Finger! ![]()
Hat jemand ne Idee?
Besten Dank im voraus!
R@iner
Ich heb mal nichmal vorsichtig den Finger! ![]()
Hat jemand ne Idee?
Besten Dank im voraus!
R@iner
Hallo Andy,
hab mich heute mal dem Thema angenommen und Deinen Beispiel-Code genommen.
Bei Downloads via http vom AVM-Server bekomme ich brav das Last-Modification-Date und ich kann das auch rausfiltern.
Beispiel-File: http://www.avm.de/de/Service/Ser…labor-16352.zip
Wenn ich jetzt aber eine Datei via http vom Telekom-Server runterladen will, werden mir die Infos im Header erst garnicht angezeigt ![]()
Beispiel-File: http://hilfe.telekom.de/dlp/eki/downlo…v34.04.57.image
Muss der Aufruf/Header irgendwie modifiziert werden?
Besten Dank schon mal!
R@iner
Super, damit sollte ich in der Lage sein, mir für ftp und http was zu basteln!
Allen vielen Dank und viele Grüße!
R@iner
Hallo,
besten Dank, damit könnte ich den Teil mit ftp-Files lösen. Wie kann ich das bei http-Links machen? Gibt es da auch eine Lösung oder ne Idee,
Besten Dank und viele Grüße!
R@iner
Hallo,
danke für Deinen Code, aber das funktioniert leider nicht.
Mein Wunsch ist ne Funktion, die mir das FileDatum der Datei auf dem Server zurück liefert.
Also FileGetSize() liefert mir die Größe der Datei und ich hätte gerne das vergleichbar mit "FileGetDate()", oder wie die Funktion auch immer heissen mag ![]()
Machen wir es anhand von 2 konkreten Beispielen:
FTP:
Geh auf folgende Seite: ftp://ftp.avm.de/fritz.box/frit…rmware/deutsch/
Jetzt siehst Du 2 Dateien, die Firmware und die info.txt
Local $erg = _HTTPGetDate("ftp://ftp.avm.de/fritz.box/fritzbox.fon_wlan_7270/firmware/deutsch/FRITZ.Box_Fon_WLAN_7270.54.04.80.image")
_ArrayDisplay($erg) ; Sollte folgendes irgendwie rauskommen: 15.12.2009, 10:16:00
HTTP:
Geh auf folgende Seite: http://download.avm.de/fritz.box/frit…rmware/deutsch/
Jetzt siehst Du ebenfalls 2 Dateien, die Firmware und die info.txt
Local $erg = _HTTPGetDate("http://download.avm.de/fritz.box/fritzbox.fon_wlan_7270/firmware/deutsch/FRITZ.Box_Fon_WLAN_7270.54.04.80.image")
Auch ohne http:// funktioniert es nicht.
Local $erg = _HTTPGetDate("download.avm.de/fritz.box/fritzbox.fon_wlan_7270/firmware/deutsch/FRITZ.Box_Fon_WLAN_7270.54.04.80.image")
_ArrayDisplay($erg) ; Sollte folgendes irgendwie rauskommen: 15.12.2009, 11:16:00 (Achtung: +1 Stunde)
Alle Arrays zeigen mir das aktuelle Datum an, nicht aber das gewünschte Datum/Uhrzeit der Datei auf dem Server.
Besten Dank und viele Grüße!
R@iner
Genau das ist ja das Problem, daß die heruntergeladene Datei das Datum hat, zu dem Zeitpunkt, wo der Download abgeschlossen wurde.
Ich muß irgendwie das Datum/Uhrzeit der Datei auf dem Server "auslesen" und dann die runtergeladene Datei mit FileSetTime umsetzen.
Happy computing!
R@iner
Hallo Zusammen,
mit InetGetSize kann man ja die Größe einer Datei ermitteln, egal ob http oder ftp, und mit InetGet kann ich die Datei runterladen.
Ich würde aber gerne anschliessend das Dateidatum auf das Datum umsetzen, was sie auf dem FTP-Server hat.
In der neuen Beta-Version 3.3.5.1 habe ich auch nichts gefunden. Gibt es sowas nicht und wenn nein, kann ich das irgendwie anders realisieren?
Besten Dank im voraus!
R@iner
Super, vielen Dank. Oben vor dem GUISetState(@SW_SHOW, $MyGui) hatte ich GUICtrlCreateTabItem("") schon drin, aber unten nicht!
Merci nochmal für die schnelle Hilfe und weiterhin happy computing!
R@iner
Hallo Zusammen,
ich such jetzt schon seit 2 Stunden nach einer Lösung, aber irgendwie hab ich bisher nicht den richtigen Befehl oder Option zum Refreshen gefunden.
In einem normalen Fenster ohne Tabs funktioniert das GUICtrlCreateGraphic und GUICtrlDelete per Knopfdruck. Sobald ich aber mit Tabs arbeite, klappt es nicht mehr. Oft reicht ein Umschalten der Tabs oder ein Minimieren mit anschließendem Maximieren. Ich hätte das aber gerne ohne diesen Workaround ![]()
Was ist die entscheidende Option oder Befehl?
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]TestOhneTab()
TestMitTabs()
; Gui ohne Tabs
Func TestOhneTab()
Local Const $MyGuiWidth = 400
Local Const $MyGuiHeight = 300
Local Const $SignSize = 15
Local $MySign1 = -1
Local $MySign2 = -1
Local $msg
Local $MyGui = GUICreate("Test ohne Tab", $MyGuiWidth, $MyGuiHeight)
[/autoit] [autoit][/autoit] [autoit]$MySign1 = GUICtrlCreateGraphic(50, 50, $SignSize, $SignSize)
GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FF00, 0x00FF00)
GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)
$MySign2 = GUICtrlCreateGraphic(50, 100, $SignSize, $SignSize)
GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FFFF, 0x00FFFF)
GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)
Local $MyTestButtonAdd = GUICtrlCreateButton("Add", $MyGuiWidth - 100, 50, 50, 20)
[/autoit] [autoit][/autoit] [autoit]Local $MyTestButtonDelete = GUICtrlCreateButton("Delete", $MyGuiWidth - 100, 100, 50, 20)
[/autoit] [autoit][/autoit] [autoit]GUISetState(@SW_SHOW, $MyGui)
[/autoit] [autoit][/autoit] [autoit]; Run the GUI until the dialog is closed
While 1
$msg = GUIGetMsg()
Switch $msg
[/autoit] [autoit][/autoit] [autoit]Case $GUI_EVENT_CLOSE
ExitLoop
Case $MyTestButtonDelete
If $MySign1 == -1 Then
MsgBox(16 + 262144, "Fehler", "Signs sind bereits gelöscht!")
Else
GUICtrlDelete($MySign1)
$MySign1 = -1
GUICtrlDelete($MySign2)
$MySign2 = -1
EndIf
Case $MyTestButtonAdd
If $MySign1 == -1 Then
$MySign1 = GUICtrlCreateGraphic(50, 50, $SignSize, $SignSize)
GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FF00, 0x00FF00)
GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)
$MySign2 = GUICtrlCreateGraphic(50, 100, $SignSize, $SignSize)
GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FFFF, 0x00FFFF)
GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)
Else
MsgBox(16 + 262144, "Fehler", "Signs sind bereits da!")
EndIf
EndSwitch
WEnd
GUIDelete($MyGui)
[/autoit] [autoit][/autoit] [autoit]EndFunc ;==>TestOhneTab
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]; Gui mit Tabs
Func TestMitTabs()
Local Const $MyGuiWidth = 400
Local Const $MyGuiHeight = 300
Local Const $SignSize = 15
Local $MySign1 = -1
Local $MySign2 = -1
Local $msg
Local $MyGui = GUICreate("Test mit Tabs", $MyGuiWidth, $MyGuiHeight)
[/autoit] [autoit][/autoit] [autoit]Local $MyTabs = GUICtrlCreateTab(0, 0, $MyGuiWidth - 10, $MyGuiHeight - 10)
[/autoit] [autoit][/autoit] [autoit]Local $MyTabOne = GUICtrlCreateTabItem("Tab 1")
[/autoit] [autoit][/autoit] [autoit]$MySign1 = GUICtrlCreateGraphic(50, 50, $SignSize, $SignSize)
GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FF00, 0x00FF00)
GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)
GUICtrlSetState(-1, $GUI_ONTOP) ; <--
$MySign2 = GUICtrlCreateGraphic(50, 100, $SignSize, $SignSize)
GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FFFF, 0x00FFFF)
GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)
GUICtrlSetState(-1, $GUI_ONTOP) ; <--
Local $MyTestButtonAdd = GUICtrlCreateButton("Add", $MyGuiWidth - 100, 50, 50, 20)
[/autoit] [autoit][/autoit] [autoit]Local $MyTestButtonDelete = GUICtrlCreateButton("Delete", $MyGuiWidth - 100, 100, 50, 20)
[/autoit] [autoit][/autoit] [autoit]Local $MyTabTwo = GUICtrlCreateTabItem("Tab 2")
[/autoit] [autoit][/autoit] [autoit]Local $MyTestButtonClose = GUICtrlCreateButton("Close", $MyGuiWidth - 150, $MyGuiHeight - 150, 50, 20)
[/autoit] [autoit][/autoit] [autoit]GUICtrlCreateTabItem("") ; close tabitem creation
[/autoit] [autoit][/autoit] [autoit]GUISetState(@SW_SHOW, $MyGui)
[/autoit] [autoit][/autoit] [autoit]; Run the GUI until the dialog is closed
While 1
$msg = GUIGetMsg()
Switch $msg
[/autoit] [autoit][/autoit] [autoit]Case $GUI_EVENT_CLOSE, $MyTestButtonClose
ExitLoop
Case $MyTestButtonDelete
If $MySign1 == -1 Then
MsgBox(16 + 262144, "Fehler", "Signs sind bereits gelöscht!")
Else
; GUISwitch($MyGui, $MyTabs)
GUISwitch($MyGui, $MyTabOne)
GUICtrlDelete($MySign1)
$MySign1 = -1
GUICtrlDelete($MySign2)
$MySign2 = -1
EndIf
Case $MyTestButtonAdd
If $MySign1 == -1 Then
; GUISwitch($MyGui, $MyTabs)
GUISwitch($MyGui, $MyTabOne)
$MySign1 = GUICtrlCreateGraphic(50, 50, $SignSize, $SignSize)
GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FF00, 0x00FF00)
GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)
GUICtrlSetState(-1, $GUI_ONTOP) ; <--
$MySign2 = GUICtrlCreateGraphic(50, 100, $SignSize, $SignSize)
GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x00FFFF, 0x00FFFF)
GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, $SignSize, $SignSize)
GUICtrlSetGraphic(-1, $GUI_GR_REFRESH)
GUICtrlSetState(-1, $GUI_ONTOP) ; <--
; GUISetState(@SW_SHOW, $MyGui)
Else
MsgBox(16 + 262144, "Fehler", "Signs sind bereits da!")
EndIf
EndSwitch
WEnd
GUIDelete($MyGui)
[/autoit] [autoit][/autoit] [autoit]EndFunc ;==>TestMitTabs
[/autoit]Besten Dank und happy computing!
R@iner
@FunHocker:
Der Code ist ja verschlimmbessert. Die "&" sind bei Text schon besser wie das "+".
Aber das ist nicht das eigentliche Problem. Geh in deine Windows-Dienste und deaktivere den Dienst "Universeller Plug&Play Gerätehost" und ruf anschließend das Script nochmal auf. Dann siehste das Problem Nummer 1, ganz easy ![]()
Happy computing!
R@iner
Hallo,
argl, ja der Dienst stand auf "Manuell". TuneUp-Gedönse kommen definitiv nicht an meine Rechner!
Trotzdem sehr erschrecken, daß gleich das Programm abstürzt, nur weil der Dienst nicht läuft.
Einige Programme finden trotzdem alle die UPnP-Devices, auch mit abgeschaltenem Windows-Dienst UPnP. Ich hab da auch schon ne Vermutung, wie das realisiert wird und im autoscript-Forum hab ich einen Ansatz gefunden, den ich jetzt mal ausprobieren werde.
Besten Dank und happy computing!
R@iner
Hallo Oscar,
danke für die Antwort. Daß die Variable $Devices dann leer sein würde, könnte ich ja noch verstehen, wenn angenommen keine solchen Devices vorhanden sind, aber das dann gleich das Programm abstürzt?!
Das klingt mir eher nach einem syntaktischen Fehler. Funktioniert das bei Dir?
Ich habe in meinem Netz mehrere Geräte die UPnP sprechen und auch darauf antworten. Ich hab auch mal verschiedene Einträge bei $DeviceType durchprobiert, aber es kommt immer der gleiche Fehler. Und das auf 3 unterschiedlichen Rechnern.
Happy computing!
R@iner
Hallo Zusammen,
ich wollte das mal ausprobieren und bekomme dann in der Zeile
$Devices = $deviceFinder.FindByType($DeviceType, 0)
folgenden Fehler:
Zitat
==> Variable must be of type "Object".:
$Devices = $deviceFinder.FindByType($DeviceType, 0)
$Devices = $deviceFinder^ ERROR
Was mache ich falsch?
Besten Dank im voraus!
R@iner
Hallo Zusammen,
ja, es scheint die Hintergrundfarbe zu sein. Wenn die die Höhe des ListViewControlls verändere, dann paßt es irgendwann.
Eine abschließende Frage habe ich jetzt noch, bevor ich alles in meinem ursprünglichen Programm ändern muß.
Derzeit benutze ich
GUICtrlCreateListView
_GUICtrlListView_InsertColumn
_GUICtrlListView_AddItem
Wenn ich jetzt die abwechselnden Farben benutzen will, muß ich mein Script auf
GUICtrlCreateListViewItem
umstellen, oder?
Ich habe keine vergleichbaren Funktionen gefunden und in meinem Schnelltest ging das colorieren bei den oben genannten Befehlen mit
GUICtrlSetBkColor(-1, 0xFFFF23) ; Farbe gerade Zeilen
nicht
Happy computing!
R@iner
Hallo BugFix,
danke Dir für deine Beschleunigung. Es ist schon viel besser. Ich werd das heute mal austesten und schauen, ob das flüssig genug ist.
Mir war dann schon klar, daß die eigentliche Funktion das WM_NOTIFY ist. In dem von mir fälschlich ausgewähltem alten Beispiel von Dir gibt es aber viele Funktionen drumherum. Aber das ist ja nicht mehr notwendig
Ich kann mir jetzt auch ungefähr zusammenreimen, was die WM_NOTIFY macht.
Nochmal zu Deinem Beispiel zurück und meiner Leerzeile. In Deinem Original-Beispiel mit der einfachen toogle-Variante ist es bei 10 Zeilen sogar ein großer Leerbereich unten.
Das verstehe ich ja noch, da das ListView größer ist und die 10 Zeilen den Bereich nicht einnehmen. Erhöhe ich aber die Zeilenanzahl sehe ich trotzdem einen Leerbereich. Leerzeile ist wohl wieder unglücklich ausgedrückt. Besser ist Leerbereich.
Hier das Beispiel:
#include <GuiListView.au3>
#include <GUIConstantsEx.au3>
GUICreate('Test')
$ListView1 = GUICtrlCreateListView("Spalte 1|Spalte 2", 15, 15, 300, 250)
GUICtrlSetBkColor(-1, 0xFF4400) ; Farbe ungerade Zeilen
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_LV_ALTERNATE)
_GUICtrlListView_SetColumnWidth($ListView1, 0, 148)
_GUICtrlListView_SetColumnWidth($ListView1, 1, 148)
For $i = 1 To 21
GUICtrlCreateListViewItem(Random(10000, 1000000, 1) & '|' & Random(10000, 1000000, 1), $ListView1)
GUICtrlSetBkColor(-1, 0xFFFF23) ; Farbe gerade Zeilen
Next
GUISetState()
[/autoit] [autoit][/autoit] [autoit]Do
Until GUIGetMsg() = -3
Hier mal ein Screenshot:
Woher kommt dieser Leerbereich?
Happy computing!
R@iner
Hallo Bugfix,
vielen herzlichen Dank für den neuen Code!
Ich habe ihn mal mit mehr Reihen und Spalten versehen. Aber auf meinem 1,8 GHz P4 ist das Scrollen grausam rucklig und sehr langsam
Speziell horizontal, also links-rechts. Von der Geschwindigkeit an meinem Notebook, P3, 648 Mhz will ich erst garnicht reden.
#include <FontConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <StructureConstants.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
Opt("MustDeclareVars", 1)
; --- Spalten und Reihen ---
Global $my_rows = 90
Global $my_colms = 18
Global $my_colWidth=240
Global $Content
#Region - GUI
; Gui erzeugen
Global $GUI = GUICreate("Test", 600, 440)
GUISetOnEvent($GUI_EVENT_CLOSE, '_exit')
; ListView 1 erzeugen
Global $cListView1 = GUICtrlCreateListView("", 2, 2, 290, 250, -1, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
Global $hListView1 = GUICtrlGetHandle($cListView1)
; ListView 2 erzeugen
Global $cListView2 = GUICtrlCreateListView("", 300, 2, 290, 250, -1, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
Global $hListView2 = GUICtrlGetHandle($cListView2)
; Beide Tabellen "füllen"
For $c = 0 To $my_colms-1
; Überschriften LV1 erzeugen
_GUICtrlListView_InsertColumn($hListView1, $c, "Column " & $c, $my_colWidth)
; Überschriften LV2 erzeugen
_GUICtrlListView_InsertColumn($hListView2, $c, "Column " & $c, $my_colWidth)
; Zeilen "füllen"
For $r = 0 To $my_rows-1
$Content = "Row" & $r & ": Col " & $c
If $c == 0 Then
; Spalte 0
_GUICtrlListView_AddItem($hListView1, $Content, $r)
_GUICtrlListView_AddItem($hListView2, $Content, $r)
Else
; Spalte >0
_GUICtrlListView_AddSubItem($hListView1, $r, $Content, $c)
_GUICtrlListView_AddSubItem($hListView2, $r, $Content, $c)
EndIf
Next
Next
#EndRegion - GUI
#Region - Global settings
Global $hFont, $defColLV = 0x000000
; Array mit Farben für jede Zeile:
Global $aColor[$my_rows] = [ _
0x0033FF, 0xCCFFFF, 0x3333FF, 0x99FFFF, 0x6633FF, 0xFF99FF, 0x0099FF, 0xCC99FF, 0x00FFFF, 0xFF33FF, _
0xFFFF00, 0x003300, 0x99FF00, 0x663300, 0xFF9900, 0x009900, 0xFF3300, 0x669900, 0x00BFFF, 0xDAA520, _
0x87CEEB, 0xD2691E, 0xFFDEAD, 0x7B68EE, 0xDEB887, 0xEE82EE, 0x3CB371, 0xF4A460, 0xADD8E6, 0x00FF7F, _
0x0033FF, 0xCCFFFF, 0x3333FF, 0x99FFFF, 0x6633FF, 0xFF99FF, 0x0099FF, 0xCC99FF, 0x00FFFF, 0xFF33FF, _
0xFFFF00, 0x003300, 0x99FF00, 0x663300, 0xFF9900, 0x009900, 0xFF3300, 0x669900, 0x00BFFF, 0xDAA520, _
0x87CEEB, 0xD2691E, 0xFFDEAD, 0x7B68EE, 0xDEB887, 0xEE82EE, 0x3CB371, 0xF4A460, 0xADD8E6, 0x00FF7F, _
0x0033FF, 0xCCFFFF, 0x3333FF, 0x99FFFF, 0x6633FF, 0xFF99FF, 0x0099FF, 0xCC99FF, 0x00FFFF, 0xFF33FF, _
0xFFFF00, 0x003300, 0x99FF00, 0x663300, 0xFF9900, 0x009900, 0xFF3300, 0x669900, 0x00BFFF, 0xDAA520, _
0x87CEEB, 0xD2691E, 0xFFDEAD, 0x7B68EE, 0xDEB887, 0xEE82EE, 0x3CB371, 0xF4A460, 0xADD8E6, 0x00FF7F _
]
#EndRegion - Global settings
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
GUISetState(@SW_SHOW, $GUI)
While True
Sleep(100)
WEnd
; ---------- Funktions-Definitionen ----------
[/autoit] [autoit][/autoit] [autoit]Func _exit()
_WinAPI_DeleteObject($hFont)
Exit
EndFunc ;==>_exit
Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam)
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hListView1, $hListView2
Switch $iCode
Case $NM_CUSTOMDRAW
If Not _GUICtrlListView_GetViewDetails($hWndFrom) Then Return $GUI_RUNDEFMSG
Local $tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam)
Local $iDrawStage, $iItem, $hDC
$iDrawStage = DllStructGetData($tCustDraw, 'dwDrawStage')
Switch $iDrawStage
Case $CDDS_ITEMPREPAINT
Return $CDRF_NOTIFYSUBITEMDRAW
Case BitOR($CDDS_ITEMPREPAINT, $CDDS_SUBITEM)
$iItem = DllStructGetData($tCustDraw, 'dwItemSpec')
DllStructSetData($tCustDraw, 'clrTextBk', RGB2BGR($aColor[$iItem])) ; Hintergrundfarbe aus Array
DllStructSetData($tCustDraw, 'clrText', RGB2BGR($defColLV)) ; Standardschriftfarbe
$hFont = _WinAPI_CreateFont(14, 0, 0, 0, $FW_NORMAL, False, False, False, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, _
$CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Arial')
_WinAPI_SelectObject($hDC, $hFont)
Return $CDRF_NEWFONT
EndSwitch
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
Func RGB2BGR($iColor)
Local $sH = Hex($iColor, 6)
Return '0x' & StringRight($sH, 2) & StringMid($sH, 3, 2) & StringLeft($sH, 2)
EndFunc ;==>RGB2BGR
Wenn ich dagegen auf die 2 Farben-Lösung umsteigen würde, wie Du es auch oben schon mal vorgeschlagen hast, dann habe ich keine Ruckler und alles geht zügig.
Hier mal ein Vergleich mit gleicher Anzahl an Reihen und Spalten.
#include <GuiListView.au3>
#include <GUIConstantsEx.au3>
GUICreate('Test')
; 18 Spalten
; 90 Reihen
; --- Spalten und Reihen ---
Global $my_rows = 90
Global $my_colms = 18
Global $my_colWidth = 240
Global $headline = "Col 0"
Global $line
; Headline erzeugen
For $c = 1 To $my_colms - 1
$headline &= "|Col " & $c
Next
; ListView mit Headline erzeugen
$ListView1 = GUICtrlCreateListView($headline, 15, 15, 300, 250)
GUICtrlSetBkColor(-1, 0xFF4400) ; Farbe ungerade Zeilen
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_LV_ALTERNATE)
; Auf Breite einstellen
For $c = 0 To $my_colms - 1
_GUICtrlListView_SetColumnWidth($ListView1, $c, $my_colWidth)
Next
; Zeilen hinzufügen
For $r = 0 To $my_rows - 1
; Zeile erzeugen
$line = "Reihe " & $r
For $c = 1 To $my_colms - 1
$line &= "|" & Random(10000, 1000000, 1)
Next
; Zeile hinzufügen
GUICtrlCreateListViewItem($line, $ListView1)
GUICtrlSetBkColor(-1, 0xFFFF23) ; Farbe gerade Zeilen
Next
GUISetState()
[/autoit] [autoit][/autoit] [autoit]Do
Until GUIGetMsg() = -3
Ich würde schon gerne Deine Mehrfarbenlösung benutzen. Hast Du noch ne Idee, wie man das beschleunigen kann?
Besten Dank und viele Grüße!
R@iner
PS. Weißt Du warum am Ende meines zweiten Beispiels unten ein Leerzeile sichtbar ist?
Hallo BugFix,
danke für deine Antwort. Ich hab mich wohl etwas unglücklich ausgedrückt. Besser sollte es heissen:
Mein eigentliches Ziel ist es, in meiner Tabelle (ca. 70 Zeilen, 15 Spalten), jede zweite Reihe farbig mit irgendeiner Farbe zu versehen. Nicht abwechselnd 2 Farben.
Z.B. Zeile 1 in rot, Zeile 2 weiß, Zeile 3 orange, Zeile 4 weiß, Zeile 5 in grün, ....
Und genau dafür brauche ich deinen Lösung, oder kann man das anders auch lösen?
Happy computing!
R@iner
Hallo BugFix,
das hab ich alles gelesen, trotzdem hat es mich gewundert, das die letzte Version abgespeckt und vor allem ohne Kommentare war. Egal.
Ich hab Dein Script jetzt mal als Basis genommen um zu verstehen, wie das colorieren funktioniert. So richtig verstanden habe ich es nicht, aber den Aufruf von _SetItemParam hab ich verstanden. ![]()
Mein eigentliches Ziel ist es, in meiner Tabelle (ca. 70 Zeilen, 15 Spalten), jede zweite Reihe farbig mit einer Farbe zu versehen. Font ist mir derzeit nicht wichtig.
Ich hab jetzt mal dein Script genommen und es etwas erweitert, allerdings ist das Scrollen der Listen, egal ob horizontal oder vertikal, sehr träge.
Deaktiviere ich den WM_NOTIFY, werden die Felder logischerweise nicht mehr farbig gemacht, aber der Geschwindigkeitsunterschied ist schon sehr deutlich.
Gut, mein Rechner ist alt, aber vielleicht haste noch ne Idee, wo man was noch schneller machen könnte.
Hier mein Wurf:
; Original von User BugFix aus Thread http://www.autoit.de/index.php?page=Thread&threadID=10104
#cs Änderungen:
- Mehr Kommentare eingefügt
- Spalten und Zeilen starten bei 0, also auch in der Bezeichnung
- Funktionen gruppiert (Region)
- MustDeclareVars gesetzt
- Anzahl Reihen und Spalten definierbar gemacht
- Neue Funktionen: _ColorRow, _ColorColumn
Für einen Test:
70 Reihen, 18 Spalten
LV1: Wahllos irgendwelche Reihe einfärben
LV2: Jede zweite Reihe einfärben
#ce
#include <FontConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <StructureConstants.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
Opt("MustDeclareVars", 1)
#cs
#Region Funktions-Definitionen
#Region Knoepfe aus der Gui
Func _exit() ; Programm-Exit
Func _GetLV() ; Liefert die selektierte ListView zurück
Func _SetInput($aRet) ; Schreibt in die Gui das selektierte Feld zurück (Reihe, Spalte)
Func _btSet() ; Knopf "Set"
Func _btOff() ; Knopf "Off"
Func _btDo() ; Knopf "Do"
#EndRegion Knoepfe aus der Gui
#Region LV-Funktionen
Func _ColorRow($hWnd, $row, $iBkCol = -1, $iCol = -1) ; Färbt eine Reihe. Font wird nicht berücksichtigt!
Func _ColorColumn($hWnd, $col, $iBkCol = -1, $iCol = -1) ; Färbt eine Spalte. Font wird nicht berücksichtigt!
Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam) ; Window-Handler
Func _SetItemParam($hWnd, $iItem, $iSubitem, $iBkCol = -1, $iCol = -1, $iSize = -1, $iWeight = -1, $sFont = -1) ; eigentliche Funktion zum Setzen
Func _DrawItemCol(ByRef $hDC, ByRef $tCustDraw, $hWnd, $iItem, $iSubitem) ; ???
Func _DrawDefault(ByRef $hDC, ByRef $tCustDraw) ; ???
Func RGB2BGR($iColor)
#EndRegion LV-Funktionen
#Region Help-Functions
Func dd($a, $b = "", $c = "", $d = "", $e = "", $f = "") ; Debug-Ausgabe in Console
#EndRegion Help-Functions
#EndRegion Funktions-Definitionen
#ce
; --- Spalten und Reihen ---
Global $my_rows = 70 ; Starts with 0
Global $my_colms = 18 ; Starts with 0
; Farben
; Global $my_rowBKColor = 0xFFFFC6 ; ganz helles Gelb
Global $my_rowBKColor = 0xAEFFFF ; helles Blau
Global $my_rowColor = 0x0000FF ; Blau
; Global $my_rowColor = 0x000000 ; Schwarz
; Temp
Global $Content
#Region - GUI
; Gui erzeugen
Global $GUI = GUICreate("Listview Custom Draw [ You can choose element by leftclick ]", 600, 440)
GUISetOnEvent($GUI_EVENT_CLOSE, '_exit')
; ListView 1 erzeugen
Global $cListView1 = GUICtrlCreateListView("", 2, 2, 290, 250, -1, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
Global $hListView1 = GUICtrlGetHandle($cListView1)
; ListView 2 erzeugen
Global $cListView2 = GUICtrlCreateListView("", 300, 2, 290, 250, -1, BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT))
Global $hListView2 = GUICtrlGetHandle($cListView2)
; Beide Tabellen "füllen"
For $c = 0 To $my_colms
; Überschriften LV1 erzeugen
_GUICtrlListView_InsertColumn($hListView1, $c, "Column " & $c, 90)
; Überschriften LV2 erzeugen
_GUICtrlListView_InsertColumn($hListView2, $c, "Column " & $c, 90)
; Zeilen "füllen"
For $r = 0 To $my_rows
$Content = "Row" & $r & ": Col " & $c
If $c == 0 Then
; Spalte 0
_GUICtrlListView_AddItem($hListView1, $Content, $r)
_GUICtrlListView_AddItem($hListView2, $Content, $r)
Else
; Spalte >0
_GUICtrlListView_AddSubItem($hListView1, $r, $Content, $c)
_GUICtrlListView_AddSubItem($hListView2, $r, $Content, $c)
EndIf
Next
Next
; Group: Settings for
GUICtrlCreateGroup(' Settings for ', 2, 255, 590, 40)
Global $rLV1 = GUICtrlCreateRadio('ListView 1', 130, 270, 150, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
Global $rLV2 = GUICtrlCreateRadio('ListView 2', 430, 270, 150, 17)
GUICtrlCreateGroup('', -99, -99, 1, 1)
; Group: Settings
GUICtrlCreateGroup(' Settings ', 2, 315, 290, 120)
GUICtrlCreateLabel('Item', 32, 332, 50, 17)
GUICtrlCreateLabel('or Row', 32, 344, 50, 17)
Global $inItem = GUICtrlCreateInput('10', 80, 334, 25, 20)
GUICtrlCreateLabel('SubItem', 116, 332, 45, 17)
GUICtrlCreateLabel('or Column', 116, 344, 50, 17)
Global $inSubItem = GUICtrlCreateInput('1', 175, 334, 25, 20)
GUICtrlCreateLabel('( 0-Index )', 215, 337, 50, 17)
GUICtrlCreateLabel('Bk-Color', 32, 366, 40, 17)
GUICtrlCreateLabel('or odd', 32, 378, 40, 17)
Global $inBkCol = GUICtrlCreateInput('0x3DF8FF', 80, 368, 60, 20)
GUICtrlCreateLabel('Color', 160, 366, 40, 17)
GUICtrlCreateLabel('or even', 160, 378, 40, 17)
Global $inCol = GUICtrlCreateInput('0xFF0000', 200, 368, 60, 20)
GUICtrlCreateLabel('Font', 32, 405, 40, 17)
Global $inFont = GUICtrlCreateInput('14,600,Comic Sans MS', 80, 402, 180, 20)
GUICtrlCreateGroup('', -99, -99, 1, 1)
; Group: Single Item
GUICtrlCreateGroup(' Single Item ', 320, 315, 90, 120)
Global $btSet = GUICtrlCreateButton('Set', 340, 350, 50, 20)
GUICtrlSetOnEvent(-1, '_btSet')
Global $btOff = GUICtrlCreateButton('Off', 340, 390, 50, 20)
GUICtrlSetOnEvent(-1, '_btOff')
GUICtrlCreateGroup('', -99, -99, 1, 1)
; Group; Columns or rows
GUICtrlCreateGroup(' Columns or rows ', 440, 315, 150, 120)
; Global $rRows = GUICtrlCreateRadio('Rows rotatory', 445, 330, 130)
; $rCols = GUICtrlCreateRadio('Columns rotatory', 445, 350, 130)
Global $rOneRow = GUICtrlCreateRadio('Single Row', 445, 370, 130)
GUICtrlSetState(-1, $GUI_CHECKED)
Global $rOneCol = GUICtrlCreateRadio('Single Column', 445, 390, 130)
Global $btDo = GUICtrlCreateButton('Do', 450, 412, 50, 18)
GUICtrlSetOnEvent(-1, '_btDo')
; $btOff2 = GUICtrlCreateButton('Off', 530,
GUICtrlCreateGroup('', -99, -99, 1, 1)
#EndRegion - GUI
#Region - Global settings (needed, whenever you want to use formatting)
; create an array for every LV with same count of elements like in LV
; IMPORTANT:
; By deleting an LV-Item it's required to delete also the according item from array!
; Also by insert an item in LV or sort LV you must modulate the array!
; [Item][SubItem][0] = iBkCol
; [Item][SubItem][1] = iCol
; [Item][SubItem][2] = iSize
; [Item][SubItem][3] = iWeight
; [Item][SubItem][4] = sFont
Global $aLV1[_GUICtrlListView_GetItemCount($hListView1)][_GUICtrlListView_GetColumnCount($hListView1)][5]
Global $aLV2[_GUICtrlListView_GetItemCount($hListView2)][_GUICtrlListView_GetColumnCount($hListView2)][5]
; create array to hold ListView-handle and accordingly array
Global $ahWndSets[2][2] = [[$hListView1, $aLV1],[$hListView2, $aLV2]]
Global $hFont, $defColLV = 0x000000, $defBkColLV = 0xFFFFFF
#EndRegion - Global settings (needed, whenever you want to use formatting)
; Windows-Handler registrieren
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
; Fenster zeigen
GUISetState(@SW_SHOW, $GUI)
; -- Hauptschleife --
; Wahllos irgendwelche Reihen einfärben - LV1
_GUICtrlListView_BeginUpdate($hListView1) ; Refresh stoppen
Local $max = 10
If $max > $my_rows Then $max = $my_rows
For $a = 1 To $max
_ColorRow($hListView1, Random(0, $my_rows, 1), $my_rowBKColor, $my_rowColor)
Next
_GUICtrlListView_EndUpdate($hListView1) ; Refresh wieder erlauben
; Jede zweite Reihe einfärben - LV2
_GUICtrlListView_BeginUpdate($hListView2) ; Refresh stoppen
For $a = 0 To $my_rows
If Mod($a, 2) Then _ColorRow($hListView2, $a, $my_rowBKColor, $my_rowColor)
Next
_GUICtrlListView_EndUpdate($hListView2) ; Refresh wieder erlauben
; GUIRegisterMsg($WM_NOTIFY, "") ; Zum Deaktivieren des Handlers
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While True
Sleep(100)
WEnd
#Region Funktions-Definitionen
[/autoit] [autoit][/autoit] [autoit]#Region Knoepfe aus der Gui
Func _exit() ; Programm-Exit
_WinAPI_DeleteObject($hFont)
Exit
EndFunc ;==>_exit
Func _GetLV() ; Liefert die selektierte ListView zurück
If BitAND(GUICtrlRead($rLV1), $GUI_CHECKED) Then
Return $hListView1
Else
Return $hListView2
EndIf
EndFunc ;==>_GetLV
Func _SetInput($aRet) ; Schreibt in die Gui das selektierte Feld zurück (Reihe, Spalte)
If $aRet[0] = $hListView1 Then
GUICtrlSetState($rLV1, $GUI_CHECKED)
Else
GUICtrlSetState($rLV2, $GUI_CHECKED)
EndIf
GUICtrlSetData($inItem, $aRet[1])
GUICtrlSetData($inSubItem, $aRet[2])
EndFunc ;==>_SetInput
Func _btSet() ; Knopf "Set"
Local $setIndex = GUICtrlRead($inItem) ; Row
Local $setSubIndex = GUICtrlRead($inSubItem) ; Column
If ($setIndex <> '' And $setSubIndex <> '') Then
Local $aFont = StringSplit(GUICtrlRead($inFont), ',')
_SetItemParam(_GetLV(), $setIndex, $setSubIndex, GUICtrlRead($inBkCol), GUICtrlRead($inCol), $aFont[1], $aFont[2], $aFont[3])
EndIf
EndFunc ;==>_btSet
Func _btOff() ; Knopf "Off"
Local $setIndex = GUICtrlRead($inItem)
Local $setSubIndex = GUICtrlRead($inSubItem)
If ($setIndex <> '' And $setSubIndex <> '') And BitAND(_GUICtrlListView_GetItemParam(_GetLV(), $setIndex), 2 ^ $setSubIndex) Then _
_SetItemParam(_GetLV(), $setIndex, $setSubIndex, -1, -1, -1, -1, -1)
EndFunc ;==>_btOff
Func _btDo() ; Knopf "Do"
[/autoit] [autoit][/autoit] [autoit]Local $setIndex = GUICtrlRead($inItem)
Local $setSubIndex = GUICtrlRead($inSubItem)
Local $SelectedLV = _GetLV()
_GUICtrlListView_BeginUpdate($SelectedLV)
[/autoit] [autoit][/autoit] [autoit]; Eine Reihe einfärben
If BitAND(GUICtrlRead($rOneRow), $GUI_CHECKED) Then ; Single Row
; If ($setIndex <> '' And $setSubIndex <> '') And BitAND(_GUICtrlListView_GetItemParam($SelectedLV, $setIndex), 2 ^ $setSubIndex) Then _
If $setIndex <> '' And $setSubIndex <> '' Then _
_ColorRow($SelectedLV, $setIndex, GUICtrlRead($inBkCol), GUICtrlRead($inCol))
ElseIf BitAND(GUICtrlRead($rOneCol), $GUI_CHECKED) Then ; Single Column
; If ($setIndex <> '' And $setSubIndex <> '') And BitAND(_GUICtrlListView_GetItemParam($SelectedLV, $setIndex), 2 ^ $setSubIndex) Then _
If $setIndex <> '' And $setSubIndex <> '' Then _
_ColorColumn($SelectedLV, $setSubIndex, GUICtrlRead($inBkCol), GUICtrlRead($inCol))
EndIf
_GUICtrlListView_EndUpdate($SelectedLV) ; Refresh wieder erlauben
[/autoit] [autoit][/autoit] [autoit]EndFunc ;==>_btDo
#EndRegion Knoepfe aus der Gui
#Region LV-Funktionen
[/autoit] [autoit][/autoit] [autoit]Func _ColorRow($hWnd, $row, $iBkCol = -1, $iCol = -1) ; Färbt eine Reihe. Font wird nicht berücksichtigt!
[/autoit] [autoit][/autoit] [autoit]dd("_ColorRow", $hWnd, $row, $iBkCol, $iCol) ; Console-Ausgaben
[/autoit] [autoit][/autoit] [autoit]For $c = 0 To _GUICtrlListView_GetColumnCount($hWnd) - 1
_SetItemParam($hWnd, $row, $c, $iBkCol, $iCol, -1, -1, -1)
Next
EndFunc ;==>_ColorRow
Func _ColorColumn($hWnd, $col, $iBkCol = -1, $iCol = -1) ; Färbt eine Spalte. Font wird nicht berücksichtigt!
[/autoit] [autoit][/autoit] [autoit]dd("_ColorColumn", $hWnd, $col, $iBkCol, $iCol) ; Console-Ausgaben
[/autoit] [autoit][/autoit] [autoit]For $r = 0 To _GUICtrlListView_GetItemCount($hWnd) - 1
_SetItemParam($hWnd, $r, $col, $iBkCol, $iCol, -1, -1, -1)
Next
EndFunc ;==>_ColorColumn
Func WM_NOTIFY($hWnd, $Msg, $wParam, $lParam) ; Window-Handler
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hListView1, $hListView2
Switch $iCode
Case $NM_CLICK ; only to set index to input in example
Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $lParam)
Local $aRet[3] = [$hWndFrom, DllStructGetData($tInfo, "Index"), DllStructGetData($tInfo, "SubItem")]
Return _SetInput($aRet)
Case $NM_CUSTOMDRAW
If Not _GUICtrlListView_GetViewDetails($hWndFrom) Then Return $GUI_RUNDEFMSG
Local $tCustDraw = DllStructCreate($tagNMLVCUSTOMDRAW, $lParam)
Local $iDrawStage, $iItem, $iSubitem, $hDC, $tRect
$iDrawStage = DllStructGetData($tCustDraw, 'dwDrawStage')
Switch $iDrawStage
Case $CDDS_ITEMPREPAINT
Return $CDRF_NOTIFYSUBITEMDRAW
Case BitOR($CDDS_ITEMPREPAINT, $CDDS_SUBITEM)
$iItem = DllStructGetData($tCustDraw, 'dwItemSpec')
$iSubitem = DllStructGetData($tCustDraw, 'iSubItem')
If BitAND(_GUICtrlListView_GetItemParam($hWndFrom, $iItem), 2 ^ $iSubitem) Then
_DrawItemCol($hDC, $tCustDraw, $hWndFrom, $iItem, $iSubitem)
Else
_DrawDefault($hDC, $tCustDraw)
EndIf
Return $CDRF_NEWFONT
EndSwitch
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
; use _SetItemParam() with defaults to set off
; to mark an SubItem as set, 2^SubItem-index are stored in ItemParam as sum for all SubItem,
; so the max. count of columns are 31 !!
Func _SetItemParam($hWnd, $iItem, $iSubitem, $iBkCol = -1, $iCol = -1, $iSize = -1, $iWeight = -1, $sFont = -1) ; eigentliche Funktion zum Setzen
Local $accArray, $sumParam = 0
For $i = 0 To UBound($ahWndSets) - 1
If $ahWndSets[$i][0] = $hWnd Then
$accArray = $ahWndSets[$i][1] ; temp array
ExitLoop
EndIf
Next
If $iBkCol = -1 Then
$iBkCol = $defBkColLV
$sumParam += 1
EndIf
If $iCol = -1 Then
$iCol = $defColLV
$sumParam += 1
EndIf
If $iSize = -1 Then
$iSize = 14
$sumParam += 1
EndIf
If $iWeight = -1 Then
$iWeight = 400
$sumParam += 1
EndIf
If $sFont = -1 Then
$sFont = 'Arial'
$sumParam += 1
EndIf
$accArray[$iItem][$iSubitem][0] = $iBkCol
$accArray[$iItem][$iSubitem][1] = $iCol
$accArray[$iItem][$iSubitem][2] = $iSize
$accArray[$iItem][$iSubitem][3] = $iWeight
$accArray[$iItem][$iSubitem][4] = $sFont
$ahWndSets[$i][1] = $accArray ; write back to original array
; if SubItem not registered in IParam OR all values by -1 (delete Sub from IParam) ==> switch Sub value in IParam
If (Not BitAND(_GUICtrlListView_GetItemParam($hWnd, $iItem), 2 ^ $iSubitem)) Or ($sumParam = 5) Then _
_GUICtrlListView_SetItemParam($hWnd, $iItem, BitXOR(_GUICtrlListView_GetItemParam($hWnd, $iItem), 2 ^ $iSubitem))
If BitAND(_GUICtrlListView_GetItemParam($hWnd, $iItem), 2 ^ $iSubitem) Then _WinAPI_InvalidateRect($hWnd) ; only if values changed
EndFunc ;==>_SetItemParam
Func _DrawItemCol(ByRef $hDC, ByRef $tCustDraw, $hWnd, $iItem, $iSubitem) ; ???
Local $accArray
For $i = 0 To UBound($ahWndSets) - 1
If $ahWndSets[$i][0] = $hWnd Then
$accArray = $ahWndSets[$i][1]
ExitLoop
EndIf
Next
Local $aDefFont[14] = [14, 0, 0, 0, $FW_NORMAL, False, False, False, _
$DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, $CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Arial']
$aDefFont[0] = $accArray[$iItem][$iSubitem][2]
$aDefFont[4] = $accArray[$iItem][$iSubitem][3]
$aDefFont[13] = $accArray[$iItem][$iSubitem][4]
$hDC = DllStructGetData($tCustDraw, 'hdc')
DllStructSetData($tCustDraw, 'clrText', RGB2BGR($accArray[$iItem][$iSubitem][1]))
DllStructSetData($tCustDraw, 'clrTextBk', RGB2BGR($accArray[$iItem][$iSubitem][0]))
$hFont = _WinAPI_CreateFont($aDefFont[0], $aDefFont[1], $aDefFont[2], $aDefFont[3], $aDefFont[4], $aDefFont[5], $aDefFont[6], _
$aDefFont[7], $aDefFont[8], $aDefFont[9], $aDefFont[10], $aDefFont[11], $aDefFont[12], $aDefFont[13])
_WinAPI_SelectObject($hDC, $hFont)
EndFunc ;==>_DrawItemCol
Func _DrawDefault(ByRef $hDC, ByRef $tCustDraw) ; ???
$hDC = DllStructGetData($tCustDraw, 'hdc')
DllStructSetData($tCustDraw, 'clrText', RGB2BGR($defColLV))
DllStructSetData($tCustDraw, 'clrTextBk', RGB2BGR($defBkColLV))
$hFont = _WinAPI_CreateFont(14, 0, 0, 0, $FW_NORMAL, False, False, False, $DEFAULT_CHARSET, $OUT_DEFAULT_PRECIS, _
$CLIP_DEFAULT_PRECIS, $DEFAULT_QUALITY, 0, 'Arial')
_WinAPI_SelectObject($hDC, $hFont)
EndFunc ;==>_DrawDefault
Func RGB2BGR($iColor)
Local $sH = Hex($iColor, 6)
Return '0x' & StringRight($sH, 2) & StringMid($sH, 3, 2) & StringLeft($sH, 2)
EndFunc ;==>RGB2BGR
#EndRegion LV-Funktionen
[/autoit] [autoit][/autoit] [autoit]#Region Help-Functions
[/autoit] [autoit][/autoit] [autoit]Func dd($a, $b = "", $c = "", $d = "", $e = "", $f = "") ; Debug-Ausgabe in Console
ConsoleWrite($a)
If $b <> "" Then ConsoleWrite(", " & $b)
If $c <> "" Then ConsoleWrite(", " & $c)
If $d <> "" Then ConsoleWrite(", " & $d)
If $e <> "" Then ConsoleWrite(", " & $e)
If $f <> "" Then ConsoleWrite(", " & $f)
ConsoleWrite(@CRLF)
EndFunc ;==>dd
#EndRegion Help-Functions
[/autoit] [autoit][/autoit] [autoit]#EndRegion Funktions-Definitionen
[/autoit]Besten Dank im voraus!
R@iner
Hallo BugFix,
nette Funktionen, aber irgendwie stimmt da was nicht mit deinen Dateien.
Du schreibst, daß die aktuellste Version in der Datei "FormatSubItemLV_new.au3" zu finden ist. Die ist aber viel kleiner als "FormatSubItemLVex.au3" (10 anstatt 18kb).
Obendrein ist nichts kommentiert und es fehlen Funktionen, wie z.B. _OneRowSetCol.
Ist das Absicht, oder Versehen?
Besten Dank im voraus und weiterhin happy computing!
R@iner