Beiträge von autoBert
-
-
Hallo SiLenCa,
habe kein Problem in deinem Programm gefunden. Ich mußte allerdings eine andere DLL mit Bildern nehmen, da du deine nicht beigelegt hast. Ich dafür die shell32.dll genommen, genau wie in der Hilfe auch.
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. By the way kannst du mir erklären wie ich meine Icons in eine DLL bekomme, weil das habe ich auch noch vor mir
mfg (Auto)Bert
-
Hallo Commander21,
habe dein Skript nach den Posts meiner Vorgänger abgeändert.
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. @Der Doc: die Schleife muß aber mit 1 anfangen da in $Split[0] die Anzahl der Textzeilen steht
@Commander21: außerdem hattest du immer Leerzeilen am Ende der Datei erzeugt:
mfg (Auto)Bert
-
Hallo zusammen,
ist es möglich ein GUI-Fenster zu erstellen, das sich auf Programmanforderung in das aufrufende Fenster integriert bzw. daraus lößt und wieder eigenständig ist. Beide Fenster können und sollen in der selben AU3 definiert werden. Es geht eigentlich zum einem nur darum das Programm nicht unnötig aufzublähen und zum anderen läßt es sich auch leichter pflegen, oder ist es einfacher die Steuerelemente in beiden Fenstern zu erstellen und dann mit den gleichen Event-Methoden zu bearbeiten.
Bin dankbar für jeden Tipp
mfg
(Auto)Bert
-
Hallo MacroStop,
ich seh zwar du hast eine Lösung gefunden, aber da ich nochmal etwas weitergemacht habe ist hier mein Stand:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Den Tip den ich dir gegeben habe für $ToDo mußte genau anders herum lauten, ist in diesem Stand berücksichtigt.
Schau einfach mal hinein, vielleicht kannst du es ja gebrauchen.Edit hab gesehen, dass du wissen möchtest wie man Steuerelemente versteckt, hab ich an Hand von $Button (START/CANCEL) eingefügt.
mfg (Auto)Bert
-
Hallo MacroStop,
die Prozentbestimmung hab ich ausgelagert, damit die eigentliche Do While schleife übersichtlicher wird, die DEMO Funktion musst du dir narürlich an deine Bedürfnisse/Gegebenheiten anpassen ($toDo = $percent-100 anstelle $toDo = $toDo -1 sollte reichen) .
Die Labels erhalten Ihre neue Bschriftung natürlich mit GUICtrlSetData (und nicht State), damit arbeitest du ja schon beim $button (START/CANCEL). Sorry, muß wohl an der Uhrzeit gelegen haben
mfg
(Auto)Bert
-
Hallo MacroStop,
muß natürlich GUICtrlSetData (und nicht State) heisen, damit arbeitest du ja schon beim $button (START/CANCEL).
Sorry muß wohl an der Uhrzeit gelegen haben
mfg
(Auto)Bert
-
versuchs mal so:
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. mfg (Auto)Bert
-
Oscar vielen Dank,
Das von mir frisch kompilierte Programm wird auch angemeckert. ClamWinPortable meldet aber nichts (läuft zwar noch aber AutoIT ist schon durch); hatte so etwas schon erwartet, wundere mich allerdings über PCTools; anstatt dass die Signaturen besser werden (verschiedene PortableApps Programme werden seit 2 Wochen angemeckert) kommen zurzeit jeden 2. Tag neue Trojaner-Meldungen.
Andere sind nur für kurze Zeit vewrschwunden.@alle
gibt es AV-Programme die nicht so vorschnell urteilen, aber trotzdem noch zeitnah auf neue Viren, Malware etc. reagieren, wäre für Erfahrungen dankbar
mfg
(Auto)Bert
-
Hallo zusammen,
heute hat PC-Tools einen geplante Vollsuche ausgeführt. Leider wurden dabei verschiedene Trojaner gefunden. Da ich die Software aber schon längere Zeit unbeanstandet auf meinem Netbook habe gehe ich (noch) von Falschmeldungen aus; ClamWinPortable läuft im Moment aber noch.
Hat jemand Erfahrung mit PC-Tools und warum sind hauptsächlich AutoIT- (CT-Offline Update ist meines Wissens auch ein AutoIT-Programm, ich hoffe ich täusche mich da nicht) und PortableApps-Programme betroffen siehe Bilder:Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Oscar wärs du so nett und würdest Digitaluhr215.zip auf Echtheit überprüfen
Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. mfG
(Auto)Bert
-
nach dem Beitrag von Ashpool habe ich die CHMs in der Zip geöffnet und siehe da es klappt. Nach Kopieren der CHMs aus der Zip in den AutoIT-Ordner tritt der Fehler auch nicht mehr auf. Fehler (ist reproduzierbar) tritt nur auf wenn ich mit Rechts-Click alle extrahieren lasse.
An meinem NetBook liegt es sicher nicht tippe eher auf XP (Extrahierassistent) oder IE7, Problem ist aber für mich durch kopieren gelöst
. Hat außerdem den Vorteil, dass das Orginal-Datum erhalten bleibt.
mfg
(Auto)Bert
-
Hallo,
habe mir heute die neueste Hilfe-Version heruntergeladen, diese hilft mir leider gar nicht mehr: Die Details zu dem ausgewählten Eintrag werden nicht angezeigt (siehe Datei: AutoITimage.jpg) Statt dessen kommt eine Fehlermeldung: Die Adresse ist ungültig.
In dem Zip, das ich nach C:\Programme\AutoIT3\ entpackt habe befinden sich folgende Dateien:
AutoIT.chm, AutoIT3.chm und UDFs3.chm alle vom vom 21.03.2009 20:36
Ich arbeite an einem Acer NetBook mit Windows XP und SP3
Hat jemand eine Idee woran es liegen könnte. Vielen Dank im Voraus
mfg (Auto)Bert
-
Oscar na dieses Beispiel aus deinem THread TreeView-(Un)Checked-Example
Bei "normalen" Checkboxen gibt es den "3STATE"-Modus. Dieser ist aber für ein Treeview von AutoIt nicht vorgesehen.
Vielleicht kennt einer der Anwesenden einen Trick diesen Modus auch für ein Treeview benutzen zu können?Edit: Man könnte den Bold-Style für einen 3State-Modus benutzen:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <GuiTreeView.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>Global $hGui = GUICreate('TreeView-(Un)Checked-Example', 400, 600)
[/autoit] [autoit][/autoit] [autoit]
Global $hTreeView = GUICtrlCreateTreeView(5, 5, 390, 590, BitOR($GUI_SS_DEFAULT_TREEVIEW, $TVS_CHECKBOXES), $WS_EX_CLIENTEDGE)
Global $hRoot = GUICtrlCreateTreeViewItem('Root', $hTreeView)
_GUICtrlTreeView_BeginUpdate($hTreeView)
For $x = 1 To 3
$hItem1 = _GUICtrlTreeView_AddChild($hTreeView, GUICtrlGetHandle($hRoot), StringFormat('[%02d] Child 1st Gen.', $x))
For $y = 1 To 3
$hItem2 = _GUICtrlTreeView_AddChild($hTreeView, $hItem1, StringFormat('[%02d] Child 2nd Gen.', $y))
For $z = 1 To 2
$hItem3 = _GUICtrlTreeView_AddChild($hTreeView, $hItem2, StringFormat('[%02d] Child 3rd Gen.', $z))
Next
Next
Next
_GUICtrlTreeView_EndUpdate($hTreeView)
_GUICtrlTreeView_Expand($hTreeView)GUISetState()
[/autoit] [autoit][/autoit] [autoit]
While True
Switch GUIGetMsg()
Case $GUI_EVENT_PRIMARYDOWN ; (*)
$aInfo = GUIGetCursorInfo($hGui) ; (*)
If $aInfo[4] = $hTreeView Then ; (*)
$aAdjust = ControlGetPos($hGui, '', $hTreeView) ; (*)
If BitAND(_GUICtrlTreeView_HitTest($hTreeView, $aInfo[0]-$aAdjust[0]-2, $aInfo[1]-$aAdjust[1]-2), 64) Then ; (*)
$hSelect = _GUICtrlTreeView_GetSelection($hTreeView)
$checked = _GUICtrlTreeView_GetChecked($hTreeView, $hSelect)
If $checked Then
_VerifySiblingItems($hTreeView, $hSelect)
Else
_SetParentItemsUnchecked($hTreeView, $hSelect)
EndIf
$hItem = _GUICtrlTreeView_GetFirstChild($hTreeView, $hSelect)
If $hItem Then
_SetChildItemsChecked($hTreeView, $hItem, $checked)
_GUICtrlTreeView_SetBold($hTreeView, $hSelect, False)
EndIf
EndIf
EndIf
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
; (*) = diese Konstruktion ist notwendig, weil man sonst nicht zwischen einem Mausklick
; auf den Item-Text und der Checkbox unterscheiden kann; Überprüft (rekursiv) ob alle Sibling-Items angehakt sind und setzt, wenn zutreffend, den Haken beim Parent-Item
[/autoit] [autoit][/autoit] [autoit]
Func _VerifySiblingItems($hTreeView, $hItem)
Local $hTmp, $hSave = $hItem, $iCount = _GUICtrlTreeView_GetSiblingCount($hTreeView, $hItem)
While True
$hTmp = _GUICtrlTreeView_GetNextSibling($hTreeView, $hItem)
If Not $hTmp Then ExitLoop
$hItem = $hTmp
WEnd
Do
If _GUICtrlTreeView_GetChecked($hTreeView, $hItem) Then $iCount -= 1
$hItem = _GUICtrlTreeView_GetPrevSibling($hTreeView, $hItem)
Until Not $hItem
If Not $iCount Then
Local $hParent = _GUICtrlTreeView_GetParentHandle($hTreeView, $hSave)
If $hParent Then
_GUICtrlTreeView_SetChecked($hTreeView, $hParent)
_GUICtrlTreeView_SetBold($hTreeView, $hParent, False)
_VerifySiblingItems($hTreeView, $hParent)
EndIf
Else
Local $hParent = _GUICtrlTreeView_GetParentHandle($hTreeView, $hSave)
If $hParent Then
_GUICtrlTreeView_SetBold($hTreeView, $hParent, True)
_VerifySiblingItems($hTreeView, $hParent)
EndIf
EndIf
EndFunc; Setzt (rekursiv) den Haken bei allen Child-Items, wenn der Haken bei einem Item gesetzt wurde
[/autoit] [autoit][/autoit] [autoit]
Func _SetChildItemsChecked($hTreeView, $hItem, $checked)
_GUICtrlTreeView_SetBold($hTreeView, $hItem, False)
Do
Local $hNewItem = _GUICtrlTreeView_GetFirstChild($hTreeView, $hItem)
If $hNewItem Then _SetChildItemsChecked($hTreeView, $hNewItem, $checked)
_GUICtrlTreeView_SetChecked($hTreeView, $hItem, $checked)
_GUICtrlTreeView_SetBold($hTreeView, $hItem, False)
$hItem = _GUICtrlTreeView_GetNextChild($hTreeView, $hItem)
Until Not $hItem
EndFunc; Entfernt (rekursiv) den Haken bei allen Parents, wenn der Haken von einem Item entfernt wurde
[/autoit]
Func _SetParentItemsUnchecked($hTreeView, $hItem)
Local $hTmp, $hSave = $hItem, $iCount = 0
While True
$hTmp = _GUICtrlTreeView_GetNextSibling($hTreeView, $hItem)
If Not $hTmp Then ExitLoop
$hItem = $hTmp
WEnd
Do
If _GUICtrlTreeView_GetChecked($hTreeView, $hItem) Or _GUICtrlTreeView_GetBold($hTreeView, $hItem) Then $iCount += 1
$hItem = _GUICtrlTreeView_GetPrevSibling($hTreeView, $hItem)
Until Not $hItem
$hItem = $hSave
Local $hParent = _GUICtrlTreeView_GetParentHandle($hTreeView, $hItem)
If $iCount Then
_GUICtrlTreeView_SetBold($hTreeView, $hParent, True)
Else
_GUICtrlTreeView_SetBold($hTreeView, $hParent, False)
EndIf
If $hParent Then _SetParentItemsUnchecked($hTreeView, $hParent)
_GUICtrlTreeView_SetChecked($hTreeView, $hItem, False)
EndFuncWenn nicht alle Siblings angehakt sind, dann wird der Parent in Fettschrift dargestellt. Falls Dir das ausreicht!?
Kommt aber noch in deiner Form oder über StateImages hinein. Aber zuerst muß noch das Problem mit _SQLite_QuerySingleRow gelöst werden.
mfg (Auto)Bert
-
Hallo,
ich bin gerade dabei eine kleine Adressenverwaltung zu erstellen. Wenn man darin auf den Button klickt um den vorhergehenden bzw. nachfolgenden Datensatz anzuzeigen steigt mein Script aus. Der Fehler ist reproduzierbar und in folgendem kleinen Skript tritt er auch auf
Spoiler anzeigen
[autoit]#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
[/autoit] [autoit][/autoit] [autoit]
#AutoIt3Wrapper_Add_Constants=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <SQLite.au3>
#include <SQLite.dll.au3>Opt('GUIOnEventMode', 1)
[/autoit] [autoit][/autoit] [autoit]
Opt('MUSTDECLAREVARS' ,1)Global $sqldb = @ScriptDir & '\AutoAdress.s3db'
[/autoit] [autoit][/autoit] [autoit]_Main()
[/autoit] [autoit][/autoit] [autoit]func _Main()
[/autoit] [autoit][/autoit] [autoit]
_DatenbankAnlegen()_dsFind('Select * from Adressen where Such<"SCHMITT" order by Such DESC') ;diese Zeile funktioniert
[/autoit] [autoit][/autoit] [autoit]
_dsFind('Select * from Adressen where Such<"HUBER" order by Such DESC') ;diese nichtWhile 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(1000)
WEnd
EndFuncFunc _DatenbankAnlegen()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Local $sql, $res
_FileCreate($sqldb)
_SQLite_Startup ()
If @error > 0 Then
MsgBox(16, "SQLite Fehler", "SQLite.dll kann nicht geladen werden!")
Exit
EndIf
_SQLite_Open($sqldb)
If @error > 0 Then
MsgBox(16, "SQLite Fehler", "Kann Datenbank nicht öffnen")
Exit
EndIf
$sql = "CREATE TABLE [Adressen] ([AdrNr] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,[Such] VARCHAR(20) UNIQUE NOT NULL)"
$res = _SQLite_Exec (-1, $sql)
$sql = "CREATE UNIQUE INDEX [idAdr] ON [Adressen]([Such] ASC,[AdrNr] ASC)"
$res = _SQLite_Exec (-1, $sql)
$sql = "INSERT INTO Adressen (Such) VALUES ('MAIER');"
$res = _SQLite_Exec (-1, $sql)
$sql = "INSERT INTO Adressen (Such) VALUES ('SCHULZE');"
$res = _SQLite_Exec (-1, $sql)
$sql = "INSERT INTO Adressen (Such) VALUES ('SCHMITT');"
$res = _SQLite_Exec (-1, $sql)
$sql = "INSERT INTO Adressen (Such) VALUES ('HUBER');"
$res = _SQLite_Exec (-1, $sql)
$sql = "INSERT INTO Adressen (Such) VALUES ('MÜLLER');"
$res = _SQLite_Exec (-1, $sql)
$sql = "CREATE TABLE [Gruppen] ([GrpNr] INTEGER NOT NULL PRIMARY KEY,[Bezeichnung] VARCHAR(30) NOT NULL,[Vorfahre] INTEGER NOT NULL)"
$sql = $sql & ";CREATE UNIQUE INDEX [idKinder] ON [Gruppen]([Vorfahre] ASC,[GrpNr] ASC)"
$res = _SQLite_Exec (-1, $sql)
$sql = "INSERT INTO Gruppen(GrpNr,Bezeichnung,Vorfahre) VALUES ('1','Test1','0');"
$res = _SQLite_Exec (-1, $sql)
$sql = "Insert into Gruppen(GrpNr,Bezeichnung,Vorfahre) Values ('2','Test2','0');"
$res = _SQLite_Exec (-1, $sql)
$sql = "Insert into Gruppen(GrpNr,Bezeichnung,Vorfahre) Values ('3','Test1.1','1');"
$res = _SQLite_Exec (-1, $sql)
$sql = "Insert into Gruppen(GrpNr,Bezeichnung,Vorfahre) Values ('4','Test1.2','1');"
$res = _SQLite_Exec (-1, $sql)
$sql = "Insert into Gruppen(GrpNr,Bezeichnung,Vorfahre) Values ('5','Test2.1','2');"
$res = _SQLite_Exec (-1, $sql)
$sql = "Insert into Gruppen(GrpNr,Bezeichnung,Vorfahre) Values ('6','Test2.2','2');"
$res = _SQLite_Exec (-1, $sql)
$sql = "INSERT INTO Gruppen(GrpNr,Bezeichnung,Vorfahre) VALUES ('7','Test7','0');"
$res = _SQLite_Exec (-1, $sql)
$sql = "INSERT INTO Gruppen(GrpNr,Bezeichnung,Vorfahre) VALUES ('8','Test8','0');"
$res = _SQLite_Exec (-1, $sql)
_SQLite_Close()
_SQLite_Shutdown()
EndFuncfunc _dsFind($sql='');
[/autoit]
Local $aRow[2]
;if $dsButtonsUpdate=True Then Exit
$sql = $sql & ' LIMIT 1'
_SQLite_Startup ()
If @error > 0 Then
MsgBox(16, "SQLite Fehler", "SQLite.dll kann nicht geladen werden!")
Exit
EndIf
_SQLite_Open($sqldb)
If @error > 0 Then
MsgBox(16, "SQLite Fehler", "Kann Datenbank nicht öffnen")
Exit
EndIf
;*******************************************************************************************************
;*************** wenn dieser Ausschnitt nicht aktiv funktioniert der Zugriff auf ********************
;*************** die Zugriffstasten auch bei Dauer-Feuer ********************
;*************** $hPrevious und $hNext-Taste (Auslöser für _dsPrevious/_dsNext) ********************
;*************** Fehler wird ausgelöst, wenn SQLite keine Daten zurückliefern kann ********************
;*************** weil es keinen Datensatz gibt der kleiner/größer ist ********************
;*******************************************************************************************************
;#cs
If _SQLite_QuerySingleRow(-1,$sql,$aRow) =$SQLITE_OK Then
if $aRow<>"" Then
MsgBox(0,"Ergebnis: " & $sql,$aRow[1])
;Else nichts gefunden
EndIf
EndIf
;#ce
;*******************************************************************************************************
;_dsCheckBrowseButtons() ;soll verhindern das man vor bzw. hinter den letzten Datensatz blättern kann
_SQLite_Close ()
_SQLite_Shutdown ()
EndFuncwas mach ich da verkehrt?
Im Anhang ist außerdem noch mein bisheriger Programmstand, das ReSizen einzelner Controlls funktioniert überraschend einfach
Oscar der TreeView mit 3 Zuständen ist noch nicht drin.
MFG (Auto)Bert
Edit BugFix: AutoIt-Tags gesetzt.
BugFix Danke
EDIT1: Im kleinen Beispiel war das SQLite Statement leider 2 mal mit Limit 1 angegeben korrigiert
EDIT2: benutze jetzt _SQLite_Query zusammen mit_ SQLite_FetchDATA (durch LIMIT 1 kommt eh nur ein Datensatz)
Programmanhang wurde upgedatedEDIT3: Anhang herausgenommen (waren zu viele Fehler drin)
Werde wenn das Programm (1. mit AutoIT) fertig ist in Scripte vorstellen
mfg (Auto)Bert
-
Hallo Oscar,
erstmal danke für deinen Lösung, würde mir reichen, ob dem DAU auch?
Nach dem ich auch dein Directory-Treeview-Beispiel gefunden habe,ist mir eine eine anderer Ansatz eingefallen. Man nehme _GUICtrlTreeView_SetIcon, wenn man den auch noch auslesen kann (ImageIndex?) kann ich dies auch abspeichern und beim nächsten Aufruf wieder abbilden.
PS. Die Hilfe in diesem Forum ist ja schneller, als ich das von früheren Zeiten von kommerzieller Software gewohnt bin
mit freundlichem Gruß aus demTaubertal
AutoBert
-
Hallo Oscar,
habe dein TreeView-Beispiel gefunden, funktioniert super
, für meinen Zweck benötige ich etwas ähnliches, nur müssten da 3 Möglichkeiten vorhanden sein
- nicht angekreuzt (ist nicht in dieser Gruppe und in keiner Untergruppe)
- leicht angekreuzt mit hellerer Farbe (ist in irgendeiner Untergruppe)
- voll angekreuzt (ist in allen Untergruppen)
Hast du eine Idee, wie ich ansetzen muss um das zu realisieren. Mit CHECKED kann es ja nicht klappen, gibt es eine andere Möglichkeit um das visuell darzustellen.
Spoiler anzeigen
[autoit]#Region ### START Koda GUI section ### Form=
[/autoit]
$Form1 = GUICreate("Form1", 633, 447, 193, 125)
$TreeView1 = GUICtrlCreateTreeView(94, 29, 175, 251)
$TreeView1_0 = GUICtrlCreateTreeViewItem("Verein", $TreeView1)
$TreeView1_1 = GUICtrlCreateTreeViewItem("Vorstandsmitglieder", $TreeView1_0)
$TreeView1_2 = GUICtrlCreateTreeViewItem("Fussballabteilung", $TreeView1_0)
$TreeView1_3 = GUICtrlCreateTreeViewItem("Aktive Spieler", $TreeView1_2)
$TreeView1_4 = GUICtrlCreateTreeViewItem("1. Mannschaft", $TreeView1_3)
$TreeView1_5 = GUICtrlCreateTreeViewItem("2. Mannschaft", $TreeView1_3)
$TreeView1_6 = GUICtrlCreateTreeViewItem("Handballabteilung", $TreeView1_0)
$TreeView1_7 = GUICtrlCreateTreeViewItem("", $TreeView1_0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEndEDIT
Das obige Script ist nur dazu da, damit man erkennt warum ich gerne 3 Möglichkeiten hätte, würde mich freuen wenn du hierzu eine Idee hättest.
mfg AutoBert
-
Hallo Apfeltasche,
das flackern liegt daran, daß die Gui SetState fortwährend ausführt, habe dein Script etwas verändert um dies abzustellen
mfg
die Lösung von anno2008 ist sauberer
-
Hallo Oscar,
dein Beispiel ist genau das richtige was ich für eine kleine Adressenverwaltung brauche. Selbst als absoluter AutoIT-Anfänger komm ich damit super zurecht.
Mir ist aufgefallen, dass man:
- a) auch leere Einträge anlegen kann
- b) die Sortierung nach Neualage bzw. Änderung nicht mehr stimmt
deshalb hab ich die function NewItem für meine Testzwecke abgeändert. Dies geht sicher schöner aber ich beschäftige mich erst seit 2 Tagen mit AutoIT, bin mir aber jetzt schon sicher, dass die Sprache zu mir passt
mfg