Hintergrund:
Die IP-Controls erhalten keine ID sondern ein Handle. Dadurch sind sie nicht in der Hierarchie der Controlerstellung gebunden sondern rein auf das Fenster fixiert. D.h. sie befinden sich nur auf dem Tab, weil das Tab auf dem Fenster ist. Blendest du das Tab aus, sind sie weiter dort. ![]()
Beiträge von BugFix
-
-
Ist ganz simpel: Die Controls nur anzeigen lassen, wenn das Tab aktiv ist:
Spoiler anzeigen
[autoit]#include <ButtonConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
#include <ComboConstants.au3>
#include <GuiIPAddress.au3>#Region ### START Koda GUI section ### Form=
[/autoit] [autoit][/autoit] [autoit]
$Form1 = GUICreate("Form1");, 378, 354, 377, 548)
$Tabs = GUICtrlCreateTab(0, 0, 377, 25);Tab 1 Allgemein
[/autoit] [autoit][/autoit] [autoit]
$Allgemein = GUICtrlCreateTabItem("Allgemein")
$Combo1 = GUICtrlCreateCombo("Combo1", 48, 48, 185, 25);Tab 2 Einstellunegn
[/autoit] [autoit][/autoit] [autoit]
$Einstellungen = GUICtrlCreateTabItem("Einstellungen")
$IP = GUICtrlCreateLabel("IP-Adresse", 48, 200, 55, 17)
$IPAddress1 = _GUICtrlIpAddress_Create($Form1, 104, 200, 129, 17)
_GUICtrlIpAddress_Set($IPAddress1, "192.168.223.100")
_GUICtrlIpAddress_ShowHide ($IPAddress1, @SW_HIDE)
$IPAddress2 = _GUICtrlIpAddress_Create($Form1, 104, 232, 129, 17)
_GUICtrlIpAddress_Set($IPAddress2, "192.168.223.255")
_GUICtrlIpAddress_ShowHide ($IPAddress2, @SW_HIDE)
$Input1 = GUICtrlCreateInput("Input1", 48, 128, 185, 21)
$Input2 = GUICtrlCreateInput("Input2", 48, 160, 185, 21)
$Broadcast = GUICtrlCreateLabel("Broadcast", 48, 232, 52, 17)
GUICtrlCreateTabItem("")GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Tabs
$current = GUICtrlRead($Tabs)
Switch $current
Case 0
_GUICtrlIpAddress_ShowHide ($IPAddress1, @SW_HIDE)
_GUICtrlIpAddress_ShowHide ($IPAddress2, @SW_HIDE)
Case 1
_GUICtrlIpAddress_ShowHide ($IPAddress1, @SW_SHOW)
_GUICtrlIpAddress_ShowHide ($IPAddress2, @SW_SHOW)
EndSwitch
EndSwitch
WEnd -
Die werden ja nich ständig ihre Position tauschen, also brauchst du doch nur den Suchbereich genauer festlegen.
-
Warum wird die Funktion _GUICtrlListView_SortItems eigl. nirgends in der hilfe angezeigt?
Also in meiner Hilfe (AutoIt 3.3.0.0) steht es drin.
Edit:
Hier mal die Lösung:
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#Include <GuiListView.au3>
Global $SelDia
Global $bDesc = True ; <== Sortparameter ist ByRef, muß vorab deklariert werden#Region ### START Koda GUI section ### Form=
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$Form1_1 = GUICreate("Löschomat", 777, 447, 195, 126)
GUISetFont(8, 800, 0, "MS Sans Serif")
GUISetBkColor(0x878787)
$ListView1 = GUICtrlCreateListView("Dateiname|Größ (KB)|Endung|Pfad", 0, 0, 605, 445)
GUICtrlSendMsg(-1, 0x101E, 0, 200)
GUICtrlSendMsg(-1, 0x101E, 1, 80)
GUICtrlSendMsg(-1, 0x101E, 2, 70)
GUICtrlSendMsg(-1, 0x101E, 3, 250)
GUICtrlCreateGroup("Handlungen", 612, 4, 157, 189)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Button1 = GUICtrlCreateButton("Auswahl löschen", 620, 32, 143, 33)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Checkbox1 = GUICtrlCreateCheckbox("Löschanfrage ein/aus", 620, 168, 145, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Button2 = GUICtrlCreateButton("Aktuallisieren", 620, 112, 143, 25)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Button3 = GUICtrlCreateButton("Ordner aufrufen", 620, 140, 143, 25)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button3
_DirSelect ($ListView1, 0)
Case $Button1
$Read1 = GUICtrlRead ($Checkbox1)
If $Read1 = $GUI_CHECKED Then
$Ch = 1
Else
$Ch = 0
EndIf
_Delete ($ListView1, $Ch)
Case $Button2
_DirSelect ($ListView1, 1)
EndSwitch
WEndFunc _DirSelect ($Handle, $Update)
[/autoit] [autoit][/autoit] [autoit]
$hLV = GUICtrlGetHandle($Handle)
If $Update = 0 Then
$SelDia = FileSelectFolder ("Bitte wählen Sie einen Ordner aus.", "", 4)
EndIf
If Not @Error Then
_GUICtrlListView_DeleteAllItems($hLV)
$Search = FileFindFirstFile ($SelDia & "\*.*")
$FileCount = DirGetSize ($SelDia, 1)
For $i = 1 To $FileCount[1] Step 1
$NextFile = FileFindNextFile ($Search)
$Split = StringRight ($NextFile, 3)
GUICtrlCreateListViewItem ($NextFile & "|" & Round (FileGetSize ($SelDia & "\" & $NextFile) /1024, 4) & "|" & $Split & "|" & $SelDia, $Handle)
Next
_GUICtrlListView_SimpleSort ($hLV, $bDesc, 3)
EndIf
EndFunc ;==> _DirSelectFunc _Delete ($Handle, $Checked)
[/autoit]
$hLV = GUICtrlGetHandle($Handle)
$i1 = _GUICtrlListView_GetSelectedIndices ($hLV, True)
$i2 = _GUICtrlListView_GetItem ($hLV, $i1[1], 0)
$i3 = _GUICtrlListView_GetItem ($hLV, $i1[1], 2)
If $Checked = 1 Then
If MsgBox (4, "Wirklich löschen?", "Soll die folgende Datei wirklich gelöscht werden:" & @CRLF & $i3[3] & "\" & $i2[3]) = 6 Then
FileDelete ($i3[3] & "\" & $i2[3])
_GUICtrlListView_DeleteItemsSelected ($hLV)
EndIf
Else
FileDelete ($i3[3] & "\" & $i2[3])
_GUICtrlListView_DeleteItemsSelected ($hLV)
EndIf
EndFunc ;==> _Delete -
Na dann such mal schön mit PixelSearch nach deinem farbigen Button. Kannst ja den Bereich zum Suchen sicher etwas eingrenzen.
Falls nix gefunden wird, da Button weiter unten im nicht sichtbaren Bereich, sendest du einfach {PageDown} und suchst erneut. -
Neben anderen, zutreffenden Threads, findest du bei "Ressourcen" als Suchbegriff u.a. https://autoit.de/index.php?page…70059#post70059.
Ich denke, da ist alles drin, was du wissen möchtest. -
Betreff Chrome: Lies mal hier nach.
Zu deiner Frage: OK, da ist ein Button auf der Seite. Denn willst du per Namen identifizieren. - Und dann? Automatisiert klicken kannst du ihn in Chrome nicht, falls das dein Wunsch ist.
-
Ich benutze Google Chrome (ff ist kaputt troz reinstall, IE ist dumm)
Du hast vergessen: Und Google Chrome macht mich zum gläsernen Menschen!!Wenn du Chrome nutzen möchtest, da wirklich schnell, dann bitte Iron. Der hat nämlich all die Sammelleidenschaft und Nachhausetelefoniererei aus Google Chrome entfernt und ist nur ein Browser.
Deine Frage allerdings habe ich nicht verstanden: Wort - Button - in die Länge ziehen...
Ich versteh nur Bahnhof.
-
Du kannst Ressourcen z.B. in eine leere Dll schreiben und diese verwenden. Dazu findest du im Forum einige Beispiele. Gib einfach mal "Ressourcen" in die SuFu ein.
-
Habe auch asuprobirt habe fehler meldung
Was soll diese völlig sinnfreie Äußerung?1. Hast du mal auf das Datum des Threads geschaut? (Samstag, 8. Dezember 2007, 15:15)
Seitdem haben wir einige Versionsschritte in AutoIt hinter uns. Das Skript muß sehr wahrscheinlich angepaßt werden.2. Wenn du Fehlermeldungen bekommst, lies sie. Und wenn du wünscht, dass wir dir dazu Hilfe leisten, dann Poste Code und Fehlermeldungen - aber dann bitte auch im richtigen Forum.
3. Wenn du Probleme mit der deutschen Sprache hast, schalte bitte die Rechtschreibprüfung in deinem Editor an! Es ist eine Zumutung dein Kauderwelsch zu Lesen!
-
Es kann sein, dass zusätzlich vom Programm geprüft wird, ob im Eingabefeld der Schreibcursor sich bewegt. Setze doch mal zusätzlich nach dem Senden der Daten den Cursor an Pos1 und dann an End und bestätige zusätzlich mit Enter den Schreibvorgang. Vielleicht löst das dann das nötige Event aus.
-
so, hat jemand ne ahnung was das soll und was ich dagengen mache kann, weil das is ja ne datei aus den includes, da kann ich ja schlecht was veränderen
Der Fehler kommt aber, weil ein übergebener Parameter "badly formatted" ist. Also schau auf deine Parameter, ob sie den Erfordernissen der Funktion entsprechen.
Da du keinen Code gepostet hast, kann ich das nicht beurteilen. -
Könntest du so machen:
Spoiler anzeigen
[autoit]#include <File.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include <Array.au3>Local $path = 'C:\test' ; Pfad mit den Unterordnern
[/autoit] [autoit][/autoit] [autoit]
Local $log = 'log.ini'
Local $aFolder = _FileListToArray($path, '*', 2)
Global $aLV_Item[1][2] = [['']]
Local $ind, $aInd, $text$gui = GUICreate('test')
[/autoit] [autoit][/autoit] [autoit]
$LV = GUICtrlCreateListView('INI', 20, 20, 150, 150)
GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER)
$hLV = GUICtrlGetHandle($LV)
$button = GUICtrlCreateButton('Zeige INI-Pfad', 20, 200, 100, 20)For $i = 1 To UBound($aFolder) -1
[/autoit] [autoit][/autoit] [autoit]
If FileExists($path & '\' & $aFolder[$i] & '\' & $log) Then
If $aLV_Item[UBound($aLV_Item)-1][0] <> '' Then ReDim $aLV_Item[UBound($aLV_Item)+1][2]
$aLV_Item[UBound($aLV_Item)-1][0] = $path & '\' & $aFolder[$i] & '\' & $log
$aLV_Item[UBound($aLV_Item)-1][1] = $aFolder[$i] & '.ini'
GUICtrlCreateListViewItem($aFolder[$i] & '.ini', $LV)
EndIf
NextGUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit]
$msg = GUIGetMsg()
Switch $msg
Case -3
Exit
Case $button
$ind = _GUICtrlListView_GetSelectedIndices($hLV)
If $ind Then
$text = _GUICtrlListView_GetItemText($hLV, $ind)
$aInd = _ArraySearch($aLV_Item, $text, 0, 0, 0, 0, 1, 1)
If Not @error Then MsgBox(0, 'Pfad', 'Der Pfad zur INI lautet:' & @lf & $aLV_Item[$aInd][0])
EndIf
EndSwitch
WEnd -
1. Für die UDF bitte das Handle des Listview und nicht die ID verwenden.
2. Nach meiner Erfahrung ist die Verwendung von True/False als Parameter für Descending/Ascending fehlerhaft. Ich verwende dort die in der Hilfe angegebene Variante: Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($hListView)] -
Stimmt, ist wirklich nicht die Offenbarung

Probier mal folgendes:
[autoit]
Ändere deine Funktion _insLine() so ab:Func _insLine()
[/autoit][autoit][/autoit][autoit]
For $i = 27 To 3 Step -1
$string = StringReplace(GuiCtrlRead($Edit1), _multiLine($i) , @CRLF & @CRLF)
GuICtrlSetData($Edit1, $string)
Next
Switch @GUI_CtrlId
Case 5
$stringAdd = @crlf & "Satz 1" & @CRLF & @CRLF
Case 6
$stringAdd = @crlf & "Satz 2" & @CRLF & @CRLF
Case 7
$stringAdd = @crlf & "Satz 3" & @CRLF & @CRLF
EndSwitch
$string = StringReplace(GuiCtrlRead($Edit1), @crlf & @CRLF ,$stringAdd)
GuICtrlSetData($Edit1, $string)
EndFuncFunc _multiLine($count)
[/autoit]
Local $ret = ''
For $i = 1 To $count
$ret &= @CRLF
Next
Return $ret
EndFuncUngetestet, aber sollte laufen.
-
Erinnert mich stark an das, was ich mal vor 2 1/2 Jahren gemacht hab

https://autoit.de/index.php?page…D=7629#post7629 -
Falls du es aber zeitgleich in beiden Varianten benötigst, klone es doch:
[autoit]#Include <GDIPlus.au3>
[/autoit][autoit][/autoit][autoit]
Local $path = "C:\WINDOWS\system32\oobe\images\oemlogo.gif"
_GDIPlus_Startup()
Local $hImage = _GDIPlus_ImageLoadFromFile($path)
Local $tmpPath = @TempDir & '\oemlogo.gif'
_GDIPlus_ImageSaveToFile($hImage, $tmpPath)$gui = GUICreate("test")
[/autoit][autoit][/autoit][autoit]
$pic = GUICtrlCreatePic($tmpPath, 20, 20, 255, 40)
GUISetState()Do
[/autoit]
Sleep(50)
Until GUIGetMsg() = -3 -
Nicht wirklich, da mit ReDim auch kein dynamischer Array realieren kannst sondern einfach einem bestehenden eine neue Grenze vergibst.
Reine Definitionsfrage
Wenn ich zur Laufzeit ein Array in seiner Größe verändere ist das eine Dynamik. Ergo: Wir haben ein dynamisches Array.
Was du meinst, ist die faulheitsbasierte Arrayvariante, die sich selbst Platz im Speicher verschafft, wenn nötig.
Aber wir sind doch fleißig, darum gibt es in AutoIt so etwas nicht.
-
Du kannst auch meine Funktion _GetIntersection() dazu verwenden (basiert ebenfalls auf Dictionary Objekt). Findest du hier: https://autoit.de/index.php?page…60542#post60542
-
Erweiterung der Funktionalität:
- Bei Anzeige von Bildern braucht die Bildgröße nicht mehr übergeben werden, dies wird in der Funktion selbst ermittelt. (s. Post 1)