OK, Danke für die schnelle Antwort !
Da muß ich mein Script wohl umbauen...
OK, Danke für die schnelle Antwort !
Da muß ich mein Script wohl umbauen...
Hallo,
ich habe das Forum schon durchsucht aber nix wirklich passendes gefunden.
Ich möchte gerne in einer Listbox beim Einlesen der Elemente für bestimmte Elemente die Farbe ändern.
Für ein ListView Control scheint es ja zu funktionieren. Da mein Script aber schon fertig ist und jetzt nur nachträglich geändert werden soll würde ich gerne bei
der Listbox bleiben. Hat jemand eine Lösung für mich ?
Gruß
Markus
Hallo Forum,
gibt es bei der Listbox eine Möglichkeit bestimmte Items auf nicht auswählbar zu setzen bzw. Ihre Ansicht "auszugrauen" ?
Gruß
Markus
Woow ! Ich weiß gar nicht was ich sagen soll... Wie macht man das so schnell ??
Vielen Dank, Du hast mir sehr geholfen. Vielleicht ist das ja für den ein oder anderen auch interessant..
Gruß
Markus
Hallo Forum,
folgendes Problem...
ich habe ein AutoIT Script geschrieben bei dem ich unter anderem eine Auto-IT Funktion benötige mit der ich einen Code String für einen Barcode erzeugen kann.
Also nicht den fertigen Barcode sondern nur den Code String. Der Code String wird dann später in einem Word Serienbrief eingesetzt und dort über die Schriftart Code128.ttf der eigentliche Strichcode erzeugt. Auf der Seite "https://grandzebu.net/informatique/codbar-en/code128.htm" gibt es ein VBA Script daß genau die Funktion beschreibt die ich benötige. Ich kenne mich aber mit VBA überhaupt nicht aus und bin auch nicht ein wirklich guter Programmierer. Könnte mir vielleicht jemand dabei helfen die Funktion nach AutoIT umzuschreiben ? Vielleicht wäre es ja auch für andere Auto-ITler ganz hilfreich...
Hier mal das VBA Script:
Public Function Code128$(chaine$)
'V 2.0.0
'Parametres : une chaine
'Parameters : a string
'Retour : * une chaine qui, affichee avec la police CODE128.TTF, donne le code barre
' * une chaine vide si parametre fourni incorrect
'Return : * a string which give the bar code when it is dispayed with CODE128.TTF font
' * an empty string if the supplied parameter is no good
Dim i%, checksum&, mini%, dummy%, tableB As Boolean
Code128$ = ""
If Len(chaine$) > 0 Then
'Verifier si caracteres valides
'Check for valid characters
For i% = 1 To Len(chaine$)
Select Case Asc(Mid$(chaine$, i%, 1))
Case 32 To 126, 203
Case Else
i% = 0
Exit For
End Select
Next
'Calculer la chaine de code en optimisant l'usage des tables B et C
'Calculation of the code string with optimized use of tables B and C
Code128$ = ""
tableB = True
If i% > 0 Then
i% = 1 'i% devient l'index sur la chaine / i% become the string index
Do While i% <= Len(chaine$)
If tableB Then
'Voir si interessant de passer en table C / See if interesting to switch to table C
'Oui pour 4 chiffres au debut ou a la fin, sinon pour 6 chiffres / yes for 4 digits at start or end, else if 6 digits
mini% = IIf(i% = 1 Or i% + 3 = Len(chaine$), 4, 6)
GoSub testnum
If mini% < 0 Then 'Choix table C / Choice of table C
If i% = 1 Then 'Debuter sur table C / Starting with table C
Code128$ = Chr$(210)
Else 'Commuter sur table C / Switch to table C
Code128$ = Code128$ & Chr$(204)
End If
tableB = False
Else
If i% = 1 Then Code128$ = Chr$(209) 'Debuter sur table B / Starting with table B
End If
End If
If Not tableB Then
'On est sur la table C, essayer de traiter 2 chiffres / We are on table C, try to process 2 digits
mini% = 2
GoSub testnum
If mini% < 0 Then 'OK pour 2 chiffres, les traiter / OK for 2 digits, process it
dummy% = Val(Mid$(chaine$, i%, 2))
dummy% = IIf(dummy% < 95, dummy% + 32, dummy% + 105)
Code128$ = Code128$ & Chr$(dummy%)
i% = i% + 2
Else 'On n'a pas 2 chiffres, repasser en table B / We haven't 2 digits, switch to table B
Code128$ = Code128$ & Chr$(205)
tableB = True
End If
End If
If tableB Then
'Traiter 1 caractere en table B / Process 1 digit with table B
Code128$ = Code128$ & Mid$(chaine$, i%, 1)
i% = i% + 1
End If
Loop
'Calcul de la cle de controle / Calculation of the checksum
For i% = 1 To Len(Code128$)
dummy% = Asc(Mid$(Code128$, i%, 1))
dummy% = IIf(dummy% < 127, dummy% - 32, dummy% - 105)
If i% = 1 Then checksum& = dummy%
checksum& = (checksum& + (i% - 1) * dummy%) Mod 103
Next
'Calcul du code ASCII de la cle / Calculation of the checksum ASCII code
checksum& = IIf(checksum& < 95, checksum& + 32, checksum& + 105)
'Ajout de la cle et du STOP / Add the checksum and the STOP
Code128$ = Code128$ & Chr$(checksum&) & Chr$(211)
End If
End If
Exit Function
testnum:
'si les mini% caracteres a partir de i% sont numeriques, alors mini%=0
'if the mini% characters from i% are numeric, then mini%=0
mini% = mini% - 1
If i% + mini% <= Len(chaine$) Then
Do While mini% >= 0
If Asc(Mid$(chaine$, i% + mini%, 1)) < 48 Or Asc(Mid$(chaine$, i% + mini%, 1)) > 57 Then Exit Do
mini% = mini% - 1
Loop
End If
Return
End Function
Alles anzeigen
Gruß
Markus
Ok, Danke, werde ich mir mal ansehen...
Nachtrag...
Mit "#RequireAdmin" funktioniert es...
Ich brauch das aber ohne Admin-Rechte ![]()
Hallo,
ich versuche gerade per AutoIt-Script den Button "OK" beim Internet Explorer Einrichtungsassistent gedrückt zu bekommen... vergebens...
Hat jemand eine Tipp für mich ?
Im Anhang noch 2 Hardcopys, eins vom Internet Explorer Einrichtungsassistenten und eins von AutoIT Windows Info.
Hier noch mein Script Versuch:
$hHwd = WinWait("Internet Explorer 11")
WinActivate($hHwd,"")
ControlClick($hHwd, "", "[CLASS:Button; INSTANCE:1]","left", 1)
Gruß
Markus
Hast Du eine Erklärung warum ich in meinem Script wenn ich eigentlich nur ein einzelnes SubItem
einfärben möchte zusätzlich noch jedes andere Subitem angehen muß damit später beim Verschieben
der Spalten die Schriftgröße gleich bleibt ?
So, ich hab's jetzt hinbekommen.
Hier der geänderte Code...
Die Änderung findet Ihr im Abschnitt ;*** Chrw(1004) und Chrw(1006) in ListView2 einfärben und ;*** Chrw(1004) und Chrw(1006) in ListView1 einfärben
Ich habe dort einfach für jedes Subitem nochmal Schriftart und Größe gesetzt. Warum ich das machen muss hab ich aber nicht verstanden ??
;*** Einbinden der Includes ***
#include <GUIConstantsEx.au3>
#include <Constants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <LV_Format_include.au3>
;******************************
_Showdate ()
[/autoit][autoit][/autoit][autoit]Func _Showdate () ;*** Anzeige der letzten Sicherung
Local $hGUIShow, $hListView1, $hListView2, $k, $l, $hButton, $hLabel1ListView, $hLabel2ListView
Local $aInfos1, $aInfos2, $hLVHandl1, $hLVHandl2, $nAnzItem, $sItemText
;*** GUI definieren
$hGUIShow = GUICreate("letzte Sicherung ...",1040,300,-1,-1,-1,-1)
$hLabel1ListView = GUICtrlCreateLabel("Sicherung1",10,10,120,30,1,-1)
GUICtrlSetFont(-1,14,700,0,"Times New Roman")
$hLabel2ListView = GUICtrlCreateLabel("Sicherung2",530,10,120,30,1,-1)
GUICtrlSetFont(-1,14,700,0,"Times New Roman")
$hListView1 = GUICtrlCreatelistview("Quellpfad|Zeitpunkt|Medium|Status",10,50,500,150,-1,$LVS_EX_SNAPTOGRID)
$hLVHandl1 = GUICtrlGetHandle($hListView1)
$hListView2 = GUICtrlCreatelistview("Quellpfad|Zeitpunkt|Medium|Status",530,50,500,150,-1,$LVS_EX_SNAPTOGRID)
$hLVHandl2 = GUICtrlGetHandle($hListView2)
$hButton = GUICtrlCreateButton("Ok",400,230,50,30,-1,-1)
GUICtrlSetFont(-1,11,700,0,"Times New Roman")
Local $aHWnd[2] = [$hLVHandl1,$hLVHandl2]
_GUICtrlListView_Formatting_Startup($hGUIShow, $aHWnd)
;***
;*** ListView befüllen
_GUICtrlListView_AddOrIns_Item($hLVHandl1,"C:\Test|01.01.2014 10:00:00|G: USB|" & Chrw(10004))
_GUICtrlListView_AddOrIns_Item($hLVHandl1,"C:\Daten|01.02.2014 11:00:00|G: USB|" & Chrw(10004))
_GUICtrlListView_AddOrIns_Item($hLVHandl2,"C:\Test|01.03.2014 16:00:00|G: USB|" & Chrw(10006))
_GUICtrlListView_AddOrIns_Item($hLVHandl2,"C:\Test1|01.06.2014 17:00:00|G: USB|" & Chrw(10004))
;***
;*** Chrw(1004) und Chrw(1006) in ListView1 einfärben
$nAnzItem = _GUICtrlListView_GetItemCount($hLVHandl1)
For $k = 0 To $nAnzItem -1
$sItemText = _GUICtrlListView_GetItemText($hLVHandl1, $k , 3)
If $sItemText = Chrw(10004) Then
_GUICtrlListView_FormattingCell($hLVHandl1, $k, 0, -1, 0x000000, 20, -1, 'Times New Roman')
_GUICtrlListView_FormattingCell($hLVHandl1, $k, 1, -1, 0x000000, 20, -1, 'Times New Roman')
_GUICtrlListView_FormattingCell($hLVHandl1, $k, 2, -1, 0x000000, 20, -1, 'Times New Roman')
_GUICtrlListView_FormattingCell($hLVHandl1, $k, 3, -1, 0x00FF00, 20, -1, 'Times New Roman')
EndIf
If $sItemText = Chrw(10006) Then
_GUICtrlListView_FormattingCell($hLVHandl1, $k, 0, -1, 0x000000, 20, -1, 'Times New Roman')
_GUICtrlListView_FormattingCell($hLVHandl1, $k, 1, -1, 0x000000, 20, -1, 'Times New Roman')
_GUICtrlListView_FormattingCell($hLVHandl1, $k, 2, -1, 0x000000, 20, -1, 'Times New Roman')
_GUICtrlListView_FormattingCell($hLVHandl1, $k, 3, -1, 0xFF0000, 20, -1, 'Times New Roman')
EndIf
Next
;***
;*** Chrw(1004) und Chrw(1006) in ListView2 einfärben
$nAnzItem = _GUICtrlListView_GetItemCount($hLVHandl2)
For $l = 0 To $nAnzItem -1
$sItemText = _GUICtrlListView_GetItemText($hLVHandl2, $l , 3)
If $sItemText = Chrw(10004) Then
_GUICtrlListView_FormattingCell($hLVHandl2, $l, 0, -1, 0x000000, 20, -1, 'Times New Roman')
_GUICtrlListView_FormattingCell($hLVHandl2, $l, 1, -1, 0x000000, 20, -1, 'Times New Roman')
_GUICtrlListView_FormattingCell($hLVHandl2, $l, 2, -1, 0x000000, 20, -1, 'Times New Roman')
_GUICtrlListView_FormattingCell($hLVHandl2, $l, 3, -1, 0x00FF00, 20, -1, 'Times New Roman')
EndIf
If $sItemText = Chrw(10006) Then
_GUICtrlListView_FormattingCell($hLVHandl2, $l, 0, -1, 0x000000, 20, -1, 'Times New Roman')
_GUICtrlListView_FormattingCell($hLVHandl2, $l, 1, -1, 0x000000, 20, -1, 'Times New Roman')
_GUICtrlListView_FormattingCell($hLVHandl2, $l, 2, -1, 0x000000, 20, -1, 'Times New Roman')
_GUICtrlListView_FormattingCell($hLVHandl2, $l, 3, -1, 0xFF0000, 20, -1, 'Times New Roman')
EndIf
Next
;***
GUISetState(@SW_SHOW,$hGUIShow)
[/autoit][autoit][/autoit][autoit]While 1
$nMsgShow = GUIGetMsg()
Switch $nMsgShow
Case $GUI_EVENT_CLOSE
GUIDelete($hGUIShow)
ExitLoop
Case $hButton
GUIDelete($hGUIShow)
ExitLoop
EndSwitch
WEnd
EndFunc
So, hab jetzt Version 3.3.8.1 installiert bekommen.
Da bekomme ich folgende Fehlermeldung (siehe Anhang)...
Jetzt bin ich komplett verwirrt ...
Hi,
ich hab jetzt mal auf einer meiner Virtual-Machines AutoIt Version 3.3.12.0 installiert.
Dort hab ich das Problem nicht mehr, die Einfärbung funktioniert dann aber auch nicht mehr.
Ich wollte mir eigentlich nochmal die Version 3.3.8.1. installieren, aber egal was ich unter Downloads runterlade
wird immer 3.3.12.0 installiert....
Hi,
das ist ja verrückt...
Ich hab mal 2 Hardcopys als Anhang eingestellt.
Edit: Hab's gerade noch an einem anderen Rechner getestet. Dort hab ich das gleiche Problem
BugFix : Welche AutoIt-Version setzt Du ein ? Ich benutze 3.3.10.2
Hi,
ich hab es dank der UDF von Bugfix hinbekommen einzelne Items in meiner ListView farbig darzustellen.
Jetzt hab ich nur noch ein Problem dass ich nicht ganz nachvollziehen kann.
Wenn ich in der Listview die Spalten per Maus verändere ändert sich plötzlich die Schriftgröße in der kompletten Spalte und wird winzig klein.
Ich hab mal ein Teil meines Scriptes modifiziert und eingestellt:
;*** Einbinden der Includes ***
#include <GUIConstantsEx.au3>
#include <Constants.au3>
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <LV_Format_include.au3>
;******************************
_Showdate ()
Func _Showdate () ;*** Anzeige der letzten Sicherung
Local $hGUIShow, $hListView1, $hListView2, $k, $l, $hButton, $hLabel1ListView, $hLabel2ListView
Local $aInfos1, $aInfos2, $hLVHandl1, $hLVHandl2, $nAnzItem, $sItemText
;*** GUI definieren
$hGUIShow = GUICreate("letzte Sicherung ...",1040,300,-1,-1,-1,-1)
$hLabel1ListView = GUICtrlCreateLabel("Sicherung1",10,10,120,30,1,-1)
GUICtrlSetFont(-1,14,700,0,"Times New Roman")
$hLabel2ListView = GUICtrlCreateLabel("Sicherung2",530,10,120,30,1,-1)
GUICtrlSetFont(-1,14,700,0,"Times New Roman")
$hListView1 = GUICtrlCreatelistview("Quellpfad|Zeitpunkt|Medium|Status",10,50,500,150,-1,$LVS_EX_SNAPTOGRID)
$hLVHandl1 = GUICtrlGetHandle($hListView1)
$hListView2 = GUICtrlCreatelistview("Quellpfad|Zeitpunkt|Medium|Status",530,50,500,150,-1,$LVS_EX_SNAPTOGRID)
$hLVHandl2 = GUICtrlGetHandle($hListView2)
$hButton = GUICtrlCreateButton("Ok",400,230,50,30,-1,-1)
GUICtrlSetFont(-1,11,700,0,"Times New Roman")
Local $aHWnd[2] = [$hLVHandl1,$hLVHandl2]
_GUICtrlListView_Formatting_Startup($hGUIShow, $aHWnd)
;***
;*** ListView befüllen
_GUICtrlListView_AddOrIns_Item($hLVHandl1,"C:\Test|01.01.2014 10:00:00|G: USB|" & Chrw(10004), $hListView1)
_GUICtrlListView_AddOrIns_Item($hLVHandl1,"C:\Daten|01.02.2014 11:00:00|G: USB|" & Chrw(10004), $hListView1)
_GUICtrlListView_AddOrIns_Item($hLVHandl2,"C:\Test|01.03.2014 16:00:00|G: USB|" & Chrw(10006), $hListView2)
_GUICtrlListView_AddOrIns_Item($hLVHandl2,"C:\Test1|01.06.2014 17:00:00|G: USB|" & Chrw(10004), $hListView2)
;***
;*** Chrw(1004) und Chrw(1006) in ListView1 einfärben
$nAnzItem = _GUICtrlListView_GetItemCount($hLVHandl1)
For $k = 0 To $nAnzItem -1
$sItemText = _GUICtrlListView_GetItemText($hLVHandl1, $k , 3)
If $sItemText = Chrw(10004) Then _GUICtrlListView_FormattingCell($hLVHandl1, $k, 3, -1, 0x00FF00, 20, -1, 'Times New Roman')
If $sItemText = Chrw(10006) Then _GUICtrlListView_FormattingCell($hLVHandl1, $k, 3, -1, 0xFF0000, 20, -1, 'Times New Roman')
Next
;***
;*** Chrw(1004) und Chrw(1006) in ListView2 einfärben
$nAnzItem = _GUICtrlListView_GetItemCount($hLVHandl2)
For $l = 0 To $nAnzItem -1
$sItemText = _GUICtrlListView_GetItemText($hLVHandl2, $l , 3)
If $sItemText = Chrw(10004) Then _GUICtrlListView_FormattingCell($hLVHandl2, $l, 3, -1, 0x00FF00, 20, -1, 'Times New Roman')
If $sItemText = Chrw(10006) Then _GUICtrlListView_FormattingCell($hLVHandl2, $l, 3, -1, 0xFF0000, 20, -1, 'Times New Roman')
Next
;***
GUISetState(@SW_SHOW,$hGUIShow)
While 1
$nMsgShow = GUIGetMsg()
Switch $nMsgShow
Case $GUI_EVENT_CLOSE
GUIDelete($hGUIShow)
ExitLoop
Case $hButton
GUIDelete($hGUIShow)
ExitLoop
EndSwitch
WEnd
EndFunc
Was mache ich falsch ?
Gruß
Markus
Hi,
sorry da war ich etwas zu schnell mit meiner Mailschreiberei...
Ich habe aber mittlerweile meinen Fehler gefunden.
Also mit der UDF von Bugfix funktioniert's problemlos !
Gruß
Markus
Hi,
ja das mit der Zeile war bekannt.
Die UDF von Bugfix hab ich auch schon gefunden. Hab's auch ausprobiert bekomme aber ne Fehlermeldung.
Ich denke ich mache da was falsch. Habe Bugfix ne Nachricht geschrieben, mal sehen ...
Trotzdem Danke !
Markus
also ich komme nicht ganz klar mit Deinem Beispielscript.
Vielleicht gebe ich einfach mal ein paar Codezeilen vor ...
;*** GUI definieren
$hGUIShow = GUICreate("ListView ...",1040,300,-1,-1,-1,-1)
$hListView = GUICtrlCreatelistview("Spalte1|Spalte2|Spalte3|Spalte4",10,50,500,150,-1,$LVS_EX_SNAPTOGRID)
$hButton = GUICtrlCreateButton("Ok",400,230,50,30,-1,-1)
GUISetState(@SW_SHOW,$hGUIShow)
;*** ListView befüllen
GUICtrlCreateListViewItem("Eintrag1|Eintrag2|Eintrag3|Eintrag4", $hListView)
;***
So, wie bekomme ich es jetzt hin daß zum Beispiel" Eintrag4" (Text) grün dargestellt wird oder wenn das nicht funtioniert das die ganze Zeile ("Eintrag1 - Eintrag4")
grün dargestellt wird ?
Hi,
ich würde gerne in einer ListView in ganz bestimmten Feldern die Textfarbe ändern,
also nicht ne komplette Spalte.
Hat jemand eine Idee wie das funktioniert ? Oder geht das vielleicht gar nicht ?
Markus
Danke, hat gepasst ...