1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. mirko2002

Beiträge von mirko2002

  • iMsgBox - Alpha

    • mirko2002
    • 7. November 2012 um 15:17

    Finde das ganze sehr interessant!

    Style gefällt mir schon sehr gut, wobei die Box selber evtl etwas gross wirkt. Kommt aber natürlich auf den Verwendungsort an.

    Mir ist aufgefallen, dass die Bestätigungsbuttons (OK, Abbrechen oder was auch immer) kurz flackern, wenn man mit der Maus darüber fährt. Denke mal das liegt ja daran, weil er beim Hover ein neues Bild rein lädt, aber das flackern - auch wenn's kurz ist - würde mich nerven :D

    Ansonsten finde ich das Thema gut, da die GUI im allgemeinen von Autoit ja sehr spärlich aussieht und meist nur mit sehr viel Aufwand grafisch angepasst werden kann.

    Wenn man nun die einfachen Befehle weiterverwendet (_iMsgBox) wie Du es tust, dann seh ich da viel potential in Deinem Vorhaben...

    LG
    Mirko

  • _GUICtrlEdit_GetLineCount Problem

    • mirko2002
    • 12. Juli 2012 um 10:56

    Super vielen Dank....

    hat wunderbar funktioniert ;)

    Zwar zählt er erst ab dem 2. Zeichen, aber das ist nicht weiter wild, da pro Zeile eh längere Zahlen zum Reporting eingetragen werden müssen.

    Gruss Mirko

  • _GUICtrlEdit_GetLineCount Problem

    • mirko2002
    • 2. Juli 2012 um 18:33

    Hallo AutoIT'ler,

    ich habe folgendes Problem. Ich hab mir für Arbeit ein kleines Tool geschrieben welches unter anderem ein Edit-Feld beinhaltet. In diesem Editfeld werden eigentlich nur Zahlen eingetragen und das Zeile für Zeile. Dadrunter hab ich ein Label gemacht, welches die Anzahl der Zeilen regelmäßig aktualisiert. Verwendet habe ich dafür _GUICtrlEdit_GetLineCount

    Ansich funktioniert das wunderbar... habe ich 5 Zahlen eingetragen zählt der Counter auch auf 5 hoch. So soll es eigentlich sein.

    Da diese Zahlen aber für Reportingzwecke benötigt werden, müssen sie immer(!!) stimmen. Das "System" kann aber durch leere Zeilen umgehen :(

    Als Beispiel:

    123456
    123456
    123456
    123456

    Counter zeigt 4. So weit, so gut.

    123456
    123456

    123456
    123456

    Counter zeigt 5. Nicht gut - denn er zählt die Leerzeile natürlich als Zeile mit - AutotIt ist mit dieser Funktion ja erstmal vollkommen egal ob in der Zeile auch wirklich was drin steht. Es kann also durchaus auch passieren das die Leerzeile am Ende des Editfelds auftaucht wo man es gar nicht mitbekommen würde, es sei denn der Cursor blinkt dort.

    [autoit]


    $zeilen_addcust = _GUICtrlEdit_GetLineCount($AddCust)
    $zeilen_supplies = _GUICtrlEdit_GetLineCount($Supplies)

    If $read_addcust <> GUICtrlRead($AddCust) Then
    GUICtrlSetData($label1, $zeilen_addcust)
    If $zeilen_addcust < 10 Then
    GUICtrlSetColor($label1, 0xFF0000)
    ElseIf $zeilen_addcust > 10 AND $zeilen_addcust < 20 Then
    GUICtrlSetColor($label1, 0xFFAA00)
    ElseIf $zeilen_addcust > 20 Then
    GUICtrlSetColor($label1, 0x33CC33)
    If _IsPressed("0D") Then
    FileDelete(@TempDir & "\addcusts.txt")
    FileDelete(@TempDir & "\supplies.txt")
    FileWrite(@TempDir & "\addcusts.txt", $read_addcust)
    FileWrite(@TempDir & "\supplies.txt", $read_supplies)
    EndIf
    EndIf
    EndIf

    [/autoit]

    So sieht der Codeschnipsel aus - da muss es doch auch eine Lösung für geben oder?
    Meine Tools die ich für Arbeit schreibe erweitern sich immer erst nach und nach und werden meist aus vielen Codeschnipseln irgendwie zusammengesetzt^^ habt daher etwas nachsehen.

    LG
    Mirko

  • xml problem beim auslesen

    • mirko2002
    • 19. März 2012 um 00:23

    Ok ich muss hier doch leider nochmal nachhaken - nach weiter "Umarbeitung" funktionierts doch nicht wie gehofft :(

    Das auslesen in die Console erfolgt korrekt - er kann aus einer Zeile mehrere Attribute auslesen. Nun möchte ich diese Attribute jedoch in einer(!) Zeile wieder schreiben und da haperts. Ich hoffe ich kanns einigermassen erklären - fällt mir grad nur sehr schwer ;)

    Wenn man den Code sieht wirds man evtl verstehen:

    Spoiler anzeigen
    [autoit]


    Func _LINKLISTE_BUTTON()
    $XML = @ScriptDir & "\links.xml"
    $XMLopen = _XMLFileOpen ($XML)
    Dim $aAttrName[1], $aAttrValue[1]
    $XMLcount = _XMLGetAllAttribNodeCount ('//links/linkData', "")
    FileWrite($newfile_links,"<?xml version=""1.0"" encoding=""utf-8""?>" & @CRLF & "<links>" & @CRLF)
    For $j = 0 To $XMLcount - 1
    _XMLGetAllAttribIndex("//links/linkData", $aAttrName, $aAttrValue, "", $j)
    For $i = 0 To $XMLcount - 1
    ConsoleWrite($i & ": " & $aAttrName[$i] & "=" & $aAttrValue[$i] & @CRLF)
    FileWrite($newfile_links, @TAB & '<linkData link="' & $aAttrValue[$i] & '" alternate="' & $aAttrValue[$i] & '">' & '</linkData>'& @CRLF)
    Next
    Next
    $read_input_link1 = GUICtrlRead($input_link1)
    $read_input_link2 = GUICtrlRead($input_link2)
    FileWrite($newfile_links, @TAB & '<linkData link="' & $read_input_link1 & '" alternate="' & $read_input_link2 & '">' & '</linkData>'& @CRLF)
    FileWrite($newfile_links,"</links>" & @CRLF)
    MsgBox(64,"Erfolg","XML Datei erfolgreich erstellt.")
    FileDelete("links.xml")
    FileMove("links_new.xml", "links.xml")
    EndFunc ;; _LINKLISTE_BUTTON

    [/autoit]

    In die Konsole schreibt er korrekt die Attribute rein. In die XML Datei allerdings schreibt er jeweils 2 mal hintereinander diesselben Attribute. In der nächsten Zeile schreibt er dann das nächste Attribut - dann natürlich auch 2 mal.
    Ist echt blöd zu erklären, ich hoffe man versteht was ich meine...

  • ComboBox in Schleife auslesen

    • mirko2002
    • 18. März 2012 um 21:47

    Ah ok.... habs mal umgeschrieben wie ich es brauche und so klappts wunderbar.

    Vielen Dank an alle Helfer!

  • ComboBox in Schleife auslesen

    • mirko2002
    • 18. März 2012 um 18:05

    Ähm... wie bitte?

    Wenn ich den Part rausnehme liest er ja die ComboBox gar nicht mehr aus...

  • ComboBox in Schleife auslesen

    • mirko2002
    • 18. März 2012 um 17:00

    Hm... warum bin ich da nicht eher drauf gekommen ^^

    So gehts.

    Kann man das evtl noch verfeinern? Jetzt funktioniert es soweit, dass das DropDown Menü aufklappt und er es aktualisiert, sobald man mit der Maus über einen anderen Eintrag drüber fährt - ohne das ich ihn schon angeklickt habe. Geht das aktualisieren auch erst nach dem Mausklick? Ich mein, das ist jetzt kein Weltuntergang, dass er es schon vorher aktualisiert - aber schöner wär's natürlich trotzdem, dass er es erst durchführt wenn auch wirklich draufgeklickt wurde.

    Habe in der Hilfe keine Funktion dafür finden können oder ich hab falsch gesucht.

  • ComboBox in Schleife auslesen

    • mirko2002
    • 18. März 2012 um 16:25

    Hm ok damit gehts,

    aber gibt es auf eine Methode ohne On-Event-Mode?

    Hab mein Script derzeit komplett auf GuigetMsg geschrieben und müsste so wieder alles abändern... aber wahrscheinlich müsste ich damit leben oder?

  • ComboBox in Schleife auslesen

    • mirko2002
    • 18. März 2012 um 16:13

    Hallo miteinander,

    in meinem Script verwende ich eine ComboBox, um bestimmte Controls ein- bzw. auszublenden.

    Derzeit realisiere ich es so, dass die ComboBox ausgelesen wird, wenn man einen Button drückt. Wird dann Wert XYZ gelesen blendet er halt Control 1 aus und blendet stattdessen Control 2 ein.

    Das funktioniert soweit alles wunderbar.

    Nun habe ich versucht, die Abfrage der ComboBox in die While Schleife zu packen (um von dem Button wegzukommen). Problem was dabei entstand, war natürlich, dass die entsprechenden Controls nun anfingen zu flackern, da das auslesen und Hide/Show nun dauerhaft liefen.

    Ich habe ein wenig in der Hilfe gestöbert und konnte dabei noch einen Befehl entdecken, der den Status der Combobox abfragt, ob diese geöffnet oder geschlossen ist. Nun habe ich die Whileschleife dahingehend angepasst, dass er nur die Combobox ausliesst, wenn sie geöffnet ist.

    Aber öffne ich jetzt die Combobox nur zum Spass ohne dabei was zu ändern/auszuwählen, fängt die GUI natürlich wieder an zu flackern.

    Gibt es nicht eine elegante Möglichkeit, eine ComboBox einzubauen und diese mit einer Schleife abzufragen, ohne das über einen Button realisieren zu müssen?

    Hier mal ein Teil meines Codes wo man aktuell gerade den Button erkennt, aber auch die Abfrage bereits in der Schleife (wo es abe noch flackert, wenn die ComboBox geöffnet wird)

    Spoiler anzeigen
    [autoit]


    While Sleep(10)

    [/autoit] [autoit][/autoit] [autoit]

    If _GUICtrlComboBox_GetDroppedState($combo) Then
    $read_combo = GUICtrlRead($combo)
    If $read_combo = "Kontaktliste" Then
    _KONTAKTLISTE()
    ElseIf $read_combo = "Linkliste" Then
    _LINKLISTE()
    ElseIf $read_combo = "FSM 7.15" Then
    _FSM()
    ElseIf $read_combo = "GSMW v2/3/4" Then
    _GSMW()
    ElseIf $read_combo = "CT Knowlegde" Then
    _CTKNOWLEDGE()
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $combo_button
    $read_combo = GUICtrlRead($combo)
    If $read_combo = "Kontaktliste" Then
    _KONTAKTLISTE()
    ElseIf $read_combo = "Linkliste" Then
    _LINKLISTE()
    ElseIf $read_combo = "FSM 7.15" Then
    _FSM()
    ElseIf $read_combo = "GSMW v2/3/4" Then
    _GSMW()
    ElseIf $read_combo = "CT Knowlegde" Then
    _CTKNOWLEDGE()
    EndIf
    Case $button1
    _KONTAKTLISTE_BUTTON()
    Case $button2
    _LINKLISTE_BUTTON()
    Case $button3
    _FSM_BUTTON()
    Case $button4
    _GSMW_BUTTON()
    Case $button5
    _CTKNOWLEDGE_BUTTON()
    EndSwitch
    WEnd

    [/autoit]
  • xml problem beim auslesen

    • mirko2002
    • 16. März 2012 um 18:59

    Na das ist doch mal was... funktioniert hervorragend! :)

    Vielen Dank für das "unter die Arme" greifen!

  • xml problem beim auslesen

    • mirko2002
    • 16. März 2012 um 15:26

    Auszug aus der _XMLDOMWrapper.au3

    Spoiler anzeigen
    [autoit]

    ;===============================================================================
    ; Function Name: _XMLGetAllAttribIndex
    ; Description: Get all XML Field(s) attributes based on Xpathn and specific index.
    ; Parameters: $sXpath xml tree path from root node (root/child/child..)
    ; $aNames the array to return the attrib names
    ; $aValue the array to return the attrib values
    ; [$sQuery] DOM compliant query string (not really necessary as it becomes
    ; [$iNode] node index.
    ;part of the path
    ; Syntax: _XMLGetAllAttribIndex($path,$aNames,$aValues,[$sQuery="",$iNode=0]])
    ; Author(s): Stephen Podhajecki <[email='gehossafats@netmdc.com'][/email]>
    ; Returns: array of attrib node names, array of attrib values
    ; on error set error to 1 and returns -1
    ;===============================================================================
    Func _XMLGetAllAttribIndex($strXPath, ByRef $aName, ByRef $aValue, $strQry = "", $NodeIndex = 0)
    Local $objNodeList, $objQueryNodes, $objNode, $arrResponse[2][1], $i, $i1

    [/autoit] [autoit][/autoit] [autoit]

    ; $objQueryNodes = $objDoc.documentElement.selectNodes ($strXPath & $strQry)
    $objQueryNodes = $objDoc.selectNodes ($strXPath & $strQry)
    While @error = 0 And $objQueryNodes.length > 0
    $objNodeList = $objQueryNodes.item ($NodeIndex).attributes
    _DebugWrite("GetAllAttribIndex " & $objNodeList.length)
    ReDim $arrResponse[2][$objNodeList.length + 1]
    ReDim $aName[$objNodeList.length]
    ReDim $aValue[$objNodeList.length]
    For $i = 0 To $objNodeList.length - 1
    $arrResponse[0][$i] = $objNodeList.item ($i).nodeName
    $arrResponse[1][$i] = $objNodeList.item ($i).Value
    $aName[$i] = $objNodeList.item ($i).nodeName
    $aValue[$i] = $objNodeList.item ($i).Value
    Next
    Return $arrResponse
    WEnd
    ; _XMLError( "Error retrieving attributes for: " & $strXPath & @CRLF & $oMyError.windescription & @CRLF & $oMyError.scriptline)
    _XMLError( "Error retrieving attributes for: " & $strXPath & @CRLF)
    SetError(1)
    Return -1
    ; EndIf
    EndFunc ;==>_XMLGetAllAttribIndex

    [/autoit]
    Spoiler anzeigen
    [autoit]

    ;===============================================================================
    ; Function Name: _XMLGetAllAttribNodeCount
    ; Description: Get Node Count based on XPath input from root node.
    ; Parameters: $path xml tree path from root node (root/child/child..)
    ; [$query] DOM compliant query string (not really necessary as it becomes
    ;part of the path
    ; Syntax: _XMLGetAllAttribNodeCount($path,$query)
    ; Author(s): Stephen Podhajecki <[email='gehossafats@netmdc.com'][/email]> & DickB
    ; Returns: Number of Nodes found
    ; on error set error to 1 and returns -1
    ;===============================================================================
    Func _XMLGetAllAttribNodeCount($strXPath, $strQry = "")
    Local $objNodeList, $objQueryNodes, $objNode, $arrResponse[2][1], $i, $i1

    [/autoit] [autoit][/autoit] [autoit]

    $objQueryNodes = $objDoc.documentElement.selectNodes ($strXPath & $strQry)
    If @error = 0 And $objQueryNodes.length > 0 Then
    Return $objQueryNodes.length
    EndIf
    ; _XMLError( "Error retrieving attributes for: " & $strXPath & @CRLF & $oMyError.windescription & @CRLF & $oMyError.scriptline)
    _XMLError( "Error retrieving attributes for: " & $strXPath & @CRLF)
    SetError(1)
    Return -1
    ; EndIf
    EndFunc ;==>_XMLGetAllAttribNodeCount

    [/autoit]
  • xml problem beim auslesen

    • mirko2002
    • 16. März 2012 um 08:40

    Hm lol,

    stimmt warum habe ich nicht auf die Variable verwiesen? *Kopf -> Tisch*

    Ok - aber selbst das klappt nicht wie es soll -.-

    Hab die XML nochmal etwas abgeändert, damit man die Werte in der Console schneller erkennt.

    XML
    <?xml version="1.0" encoding="UTF-8"?>
    
    
    <contacts>
        <contactData Name="Value1" Name2="Value2"></contactData>
        <contactData Name3="Value3" Name4="Value4"></contactData>
    </contacts>

    Source:

    [autoit]

    #include "_XMLDomWrapper.au3"
    #include <array.au3>

    [/autoit][autoit][/autoit][autoit]

    ;_SetDebug (True);show debug messages via console write
    $sXmlFile = "test.xml"
    ;$sXmlFile = FileOpenDialog("", @ScriptDir, "XML (*.xml)", 1)
    ;ConsoleWrite($sXmlFile&@lf)
    If @error Then
    MsgBox(4096, "File Open", "No file chosen")
    Exit
    Else
    $oOXml = ""
    $oOXml = _XMLFileOpen ($sXmlFile)
    EndIf
    ;ConsoleWrite("Debug: $iRET = " & $sXmlFile & @LF)
    Dim $aAttrName[1], $aAttrValue[1], $node
    $retcnt1 = _XMLGetAllAttribNodeCount ('//contacts/contactData', "")
    ;ConsoleWrite("Nodes: " & $retcnt1& @LF)
    For $j = 0 To $retcnt1 - 1
    $retval = _XMLGetAllAttribIndex ("//contacts/contactData", $aAttrName, $aAttrValue, "", $j)
    ;ConsoleWrite("Name: " & $aAttrName[$j] & @LF)
    ConsoleWrite("Value: " & $aAttrValue[$j] & @LF)
    ;_ArrayDisplay($aAttrName, "Attrib Names")
    ;_ArrayDisplay($aAttrValue, "Attrib Values")
    Next
    Exit

    [/autoit]

    Ausgabe in der Console:

    Code
    Value: Value1
    Value: Value4

    Warum gibt er nur den ersten und den vierten Wert wieder... ich raff es nicht!

  • xml problem beim auslesen

    • mirko2002
    • 15. März 2012 um 23:27

    Hey,

    ich versuch gerade eine XML-Datei auszulesen. Ansich kein Problem bei Abschnitten ohne Attribute. Kommen Attribute ins Spiel scheitere ich -.-

    Derzeit sieht meine test.xml so aus:

    XML
    <?xml version="1.0" encoding="UTF-8"?>
    
    
    <contacts>
        <contactData errors="TESTWERT1" failures="TESTWERT2" test="TESTWERT3">
        </contactData>
    	<contactData errors1="TESTWERT1" failures1="TESTWERT2" test1="TESTWERT3">
        </contactData>
    </contacts>

    Mit dem folgenden Skript versuche ich die Attribute auszulesen. Als Array klappt es. Aber als normale Consolen- oder MsgBox Ausgabe liest er immer nur einen Wert:

    [autoit]

    #include "_XMLDomWrapper.au3"
    #include <array.au3>

    [/autoit][autoit][/autoit][autoit]

    _SetDebug (True);show debug messages via console write
    $sXmlFile = "test.xml"
    ;$sXmlFile = FileOpenDialog("", @ScriptDir, "XML (*.xml)", 1)
    ;ConsoleWrite($sXmlFile&@lf)
    If @error Then
    MsgBox(4096, "File Open", "No file chosen")
    Exit
    Else
    $oOXml = ""
    $oOXml = _XMLFileOpen ($sXmlFile)
    EndIf
    ConsoleWrite("Debug: $iRET = " & $sXmlFile & @LF)
    Dim $aAttrName[1], $aAttrValue[1], $node
    $retcnt1 = _XMLGetAllAttribNodeCount ('//contacts/contactData', "")
    ConsoleWrite("Nodes: " & $retcnt1& @LF)
    For $j = 0 To $retcnt1 - 1
    $retval = _XMLGetAllAttribIndex ("//contacts/contactData", $aAttrName, $aAttrValue, "", $j)
    ConsoleWrite("Wert:" & $aAttrName[2] & @LF)
    ConsoleWrite("Wert:" & $aAttrValue[2] & @LF)
    _ArrayDisplay($aAttrName, "Attrib Names")
    _ArrayDisplay($aAttrValue, "Attrib Values")
    Next
    Exit

    [/autoit]

    Irgend ne Ahnung warum?

  • Smartphone GUI

    • mirko2002
    • 28. Februar 2012 um 21:19

    Hey... bin grade von Arbeit rein.... steh grad etwas auf dem Schlauch mit einigen Sachen und bin grad mit was anderem nebenbei stark beschäftigt.

    Ich hänge hier mal eben auf die schnelle den aktuellen Code inklusive aller Dateien an, da doch noch einiges dazu kam.

    Dateien

    Handy GUI 28.02.2012.rar 178,71 kB – 366 Downloads
  • Smartphone GUI

    • mirko2002
    • 28. Februar 2012 um 10:26

    So... ich war gestern Nacht nicht untätig gewesen und hab das ganze mal etwas weitergebracht mit Startton vom HTC, wenn man das Handy einschaltet. Goodbye-Anzeige, wenn das Telefon ausgeschalten wird und Töne wenn man im Menü navigiert.

    Auch bin ich derzeit dran, neue Icons für das Menü einzupflegen - vorab kann ich sagen das sie sehr geil aussehen :D

    Update von den Änderungen heute Abend oder morgen...

    Jedoch hab ich noch 2 offene "Probleme/Anliegen"...

    Zum einen, was ich weiter oben schonmal ansprach, ist es irgendwie möglich, die GUI bei einer bestimmten Funktion um 45° drehen zu lassen?

    Zum anderen hab ich ja die Back-Funktion drin die momentan einfach nur auf die Homefunktion zurückgreift.
    Gibt es irgendeine Möglichkeit auszulesen, in welcher Funktion das Handy vorher war, damit diese Back-Funktion auch tatsächlich so funktioniert wie sie heißt?

  • Smartphone GUI

    • mirko2002
    • 27. Februar 2012 um 23:27

    Oh vielen Dank für den Hinweis auf die Mobile Version der Googleseite... so lässt sich das ganze ja schon wirklich fast ordentlich handhaben! An sowas hatte ich ja mal gar nicht gedacht.

    Bezüglich der Icons: Das werden mit Sicherheit auch nicht die finalen Icons sein, oben hab ich erstmal nur ein paar Beispielbilder reingesetzt, damit man überhaupt die Funktionalität und den Effekt sieht.

    Die Icons hab ich auf die schnelle mit Photoshop erstellt, muss aber sagen, dass ich nicht viel mit Grafiken am Hut habe. Ich kenn jedoch einen Mediengestalter, der mir da nen paar Dinger sicher herbeizaubert ;)

  • Smartphone GUI

    • mirko2002
    • 27. Februar 2012 um 21:13

    Ups... das hatte ich eigentlich schon entfernt... ist wohl durch das ganze hin und her copy/pasten wieder reingekommen -.-

    Danke für den Hinweis... habs wieder entfernt.

  • Smartphone GUI

    • mirko2002
    • 27. Februar 2012 um 20:21

    Ja das mit dem Browser war auch erstmal "nur" eine kleine Spielerei zum einbauen - ändern oder erweitern (wie auch immer) kann oder will ich später sogar noch ;)

    Mit dem X zum schliessen ist so ne Sache ^^
    Mein HTC hat den An/Aus Knopf oberhalb des Handys - macht sich hier schlecht, wenn man das Telefon von vorne sieht :P

    Aber Du hast natürlich recht... ich hab auch schon selber überlegt dort einen ordentlichen On/Off Button hinzusetzen. Der war erstmal nur zum Zweck da und das tut er im Moment noch.

    Was ich allerdings nicht verstehe ist dein Hinweis mit mehreren Home-Screens...??

    Wenn man das Menü aufruft (was ja jetzt noch keine Funktion hat, sondern nur die Icons mit Hovereffekten) dann kann man doch darüber dann später Apps starten wie Web-Cam, Player etc pp... hab ich Dich irgendwie falsch verstanden?

  • Smartphone GUI

    • mirko2002
    • 27. Februar 2012 um 18:51

    Ganz genau so... vielen Dank. Mit dieser Mithilfe kann ich so nun nach belieben meine Menüs erweitern, neu erstellen oder was auch immer.

    So kann ich dieses Projekt doch noch stark erweiter, was Anfangs eigentlich nur dem GUI Design gedanken pflegte. Aber ich habe aktuell viel Spass daran, dieses Projekt weiterzupflegen - vielleicht wird es ja wirklich mal ein komplett virtuelles Telefon (mit Telefoniefunktion über Skype oder so^^).

    Aber wenn ich jetzt mal ganz krank weiterdenke, wäre es möglich:
    1.) die Browseranzeige vom optischen verkleinern zu lassen, wie man es vom Handy kennt, wenn man es mit zwei Fingern verkleinert/herauszoomt? Wahrscheinlich nicht umsetzbar oder würde wahrscheinlich auch bei vielen Seiten Probleme hervorrufen, oder?
    2.) das gesamte GUI um 45° drehen zu lassen sobald man z.b den Browser aufruft, um eine Seitenansicht zu erhalten?
    So würde sich ja Punkt 1 erübrigen, da man in der Seitenansicht ja viel mehr Spielraum hat, da ja länger.

    Jeder kennt oder hat ja sogar schon ein Smartphone und weiß, wie komfortabel die Seitenasicht ist, wenn man größere Sachen anschauen möchte...

    Aber (dank Eurer Mithilfe hier) macht mir das Projekt derzeit noch riesenspass und ich würde es sehr gern noch viel weiter entwickeln...

  • Smartphone GUI

    • mirko2002
    • 27. Februar 2012 um 13:51

    Ok vielen Dank... hab mir den geänderten Code mal angeschaut und sieht im nachhinein natürlich schlüssig aus ;)

    Hab nun versucht das ganze zu erweitern. Unten im Handydisplay sieht man ja die Lupe. Dort soll nun im Display ein Browserfenster aufgehen. Soweit funktioniert das Browserfenster ja auch.... wenn da nicht das Problem mit der Whileschleife wäre. Natürlich wird ja nun auch das Browserfenster im 50MS Takt aktualisiert. Wie das aussieht kann sich jeder vorstellen.

    Also habe ich probiert, das Browserfenster so einzubauen, wie ich es vorher bei meinen "alten" Funktionen hatte. Dort aktualisiert es sich zwar nicht, aber wird von dem vorherigen Menu was ich offen hatte, überlagert. Das heißt, man sieht den Browser für 50ms, danach wird sofort das Menü oder das HTC Bild drüber gelegt (je nachdem welches Menü vorher offen war).

    Schwer zu erklären... ich poste einfach nochmal den aktuellen Code wo er den Browser permanent aktualisiert. Leider sind meine Kenntniss unzureichend, dieses Problem alleine zu lösen, da mein eigener Versuch gescheitert ist.

    Spoiler anzeigen
    [autoit]


    #include <WindowsConstants.au3>
    #include <GUIConstants.au3>
    #include <WinAPI.au3>
    #include <GDIPlus.au3>
    #include <IE.au3>
    #include 'Buttons.au3'

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)
    Opt("MouseCoordMode", 2) ;Damit die Koords der Maus auf dem Button korrekt erkannt werden.

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    $Title = "HTC Desire HD"
    $Width = 300
    $Height = 500
    $pics = @ScriptDir & "\images\"

    [/autoit] [autoit][/autoit] [autoit]

    ; Konstanten
    Global Const $BgColorTitle = 0x000000
    Global Const $BgColor = 0x464646

    [/autoit] [autoit][/autoit] [autoit]

    ; Handyrahmen aussen
    $hWnd_Main = GUICreate($Title, $Width, $Height, -1, -1, $WS_POPUP)
    GUISetBkColor($BgColor)
    $Close = GUICtrlCreatePic($pics & "close.bmp", $Width - 16, 7, 9, 9)
    GUICtrlSetOnEvent($Close, "_Exit")
    $TitleBar = GUICtrlCreateLabel("", 6, 4, $Width - 42, 17, -1, $GUI_WS_EX_PARENTDRAG)
    GUICtrlCreatePic($pics & "HTC-Lautsprecher.bmp", 65, 6, 180, 10)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    ; Handydisplay erstellen
    $hWnd_Child1 = GUICreate("", 290, 475, 5, 20, $WS_POPUP)
    GUISetBkColor(0xFFFFFF, $hWnd_Child1)

    [/autoit] [autoit][/autoit] [autoit]

    ;~ GUICtrlCreatePic($pics & "HTC-Brilliant.bmp", 15, 130, 260, 165)
    Global $hImg_HTC_Brilliant = _GDIPlus_ImageLoadFromFile($pics & "HTC-Brilliant.bmp")

    [/autoit] [autoit][/autoit] [autoit]

    $home_button = GUICtrlCreatePic($pics & "menu1.bmp", 15, 410, 51, 38)
    GUICtrlSetOnEvent($home_button, "_home_button")
    $menu_button = GUICtrlCreatePic($pics & "menu2.bmp", 66, 410, 82, 38)
    GUICtrlSetOnEvent($menu_button, "_menu_button")
    GUICtrlCreatePic($pics & "menu3.bmp", 148, 410, 76, 38)
    $suche_button = GUICtrlCreatePic($pics & "menu4.bmp", 224, 410, 49, 38)
    GUICtrlSetOnEvent($suche_button, "_suche_button")
    GUICtrlCreatePic($pics & "HTC-Logo.bmp", 120, 445, 55, 20)

    [/autoit] [autoit][/autoit] [autoit]

    Global Const $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hWnd_Child1)
    Global Const $hBitmap = _GDIPlus_BitmapCreateFromGraphics($Width, 410, $hGraphic)
    Global Const $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    Global Const $hBitmap1 = _GDIPlus_BitmapCreateFromGraphics(270, 370, $hGraphic)
    Global Const $hBackbuffer1 = _GDIPlus_ImageGetGraphicsContext($hBitmap1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Hintergrund/Rahmen des Handydisplays
    GUICtrlCreateGraphic(0, 0, 330, 12)
    GUICtrlSetBkColor(-1, $BgColorTitle)
    GUICtrlCreateGraphic(0, 0, 10, $Height)
    GUICtrlSetBkColor(-1, $BgColorTitle)
    GUICtrlCreateGraphic(0, 410, $Width, 80)
    GUICtrlSetBkColor(-1, $BgColorTitle)
    GUICtrlCreateGraphic(280, 0, 20, $Height)
    GUICtrlSetBkColor(-1, $BgColorTitle)

    [/autoit] [autoit][/autoit] [autoit]

    ; Menü
    Global $hButton1 = _Button_Init(20, 30, 45, 45, 1)
    _Button_Set_Pic($hButton1, 0, $pics & 'home1.bmp')
    _Button_Set_Pic($hButton1, 1, $pics & 'home2.bmp')
    _Button_Set_Pic($hButton1, 2, $pics & 'home3.bmp')
    _Button_Set_Ani_Speed($hButton1, 30, 14, 7)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hButton2 = _Button_Init(120, 30, 45, 45, 2)
    _Button_Set_Pic($hButton2, 0, $pics & 'info1.bmp')
    _Button_Set_Pic($hButton2, 1, $pics & 'info2.bmp')
    _Button_Set_Pic($hButton2, 2, $pics & 'info3.bmp')
    _Button_Set_Ani_Speed($hButton2, 30, 14, 7)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hButton3 = _Button_Init(220, 30, 45, 45, 3)
    _Button_Set_Pic($hButton3, 0, $pics & 'alben1.bmp')
    _Button_Set_Pic($hButton3, 1, $pics & 'alben2.bmp')
    _Button_Set_Pic($hButton3, 2, $pics & 'alben3.bmp')
    _Button_Set_Ani_Speed($hButton3, 30, 14, 7)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hButton4 = _Button_Init(20, 100, 45, 45, 4)
    _Button_Set_Pic($hButton4, 0, $pics & 'media1.bmp')
    _Button_Set_Pic($hButton4, 1, $pics & 'media2.bmp')
    _Button_Set_Pic($hButton4, 2, $pics & 'media3.bmp')
    _Button_Set_Ani_Speed($hButton4, 30, 14, 7)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hButton5 = _Button_Init(120, 100, 45, 45, 5)
    _Button_Set_Pic($hButton5, 0, $pics & 'kamera1.bmp')
    _Button_Set_Pic($hButton5, 1, $pics & 'kamera2.bmp')
    _Button_Set_Pic($hButton5, 2, $pics & 'kamera3.bmp')
    _Button_Set_Ani_Speed($hButton5, 30, 14, 7)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hButton6 = _Button_Init(220, 100, 45, 45, 6)
    _Button_Set_Pic($hButton6, 0, $pics & 'nachrichten1.bmp')
    _Button_Set_Pic($hButton6, 1, $pics & 'nachrichten2.bmp')
    _Button_Set_Pic($hButton6, 2, $pics & 'nachrichten3.bmp')
    _Button_Set_Ani_Speed($hButton6, 30, 14, 7)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hButton7 = _Button_Init(20, 170, 45, 45, 7)
    _Button_Set_Pic($hButton7, 0, $pics & 'home1.bmp')
    _Button_Set_Pic($hButton7, 1, $pics & 'home2.bmp')
    _Button_Set_Pic($hButton7, 2, $pics & 'home3.bmp')
    _Button_Set_Ani_Speed($hButton7, 30, 14, 7)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hButton8 = _Button_Init(120, 170, 45, 45, 8)
    _Button_Set_Pic($hButton8, 0, $pics & 'home1.bmp')
    _Button_Set_Pic($hButton8, 1, $pics & 'home2.bmp')
    _Button_Set_Pic($hButton8, 2, $pics & 'home3.bmp')
    _Button_Set_Ani_Speed($hButton8, 30, 14, 7)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hButton9 = _Button_Init(220, 170, 45, 45, "test")
    _Button_Set_Pic($hButton9, 0, $pics & 'home1.bmp')
    _Button_Set_Pic($hButton9, 1, $pics & 'home2.bmp')
    _Button_Set_Pic($hButton9, 2, $pics & 'home3.bmp')
    _Button_Set_Ani_Speed($hButton9, 30, 14, 7)

    [/autoit] [autoit][/autoit] [autoit]

    Global $Btn_msg
    Global $pos, $klick
    Global $Temp
    Global $Anzeige = 0 ; 0 = home, 1 = Menu, usw...
    Local $t = TimerInit()

    [/autoit] [autoit][/autoit] [autoit]

    ; Display an Handyrahmen "koppeln"
    _SetParent($hWnd_Main, $hWnd_Child1)

    [/autoit] [autoit][/autoit] [autoit]

    ; Gui einblenden
    GuiRoundCorners($hWnd_Main, 0, 0, 20, 20)
    GuiRoundCorners($hWnd_Child1, 0, 0, 20, 20)
    WinSetTrans($hWnd_Main, "", 0)
    WinSetTrans($hWnd_Child1, "", 0)
    GUISetState(@SW_SHOW, $hWnd_Main)
    GUISetState(@SW_SHOW, $hWnd_Child1)
    FadeIn($hWnd_Main)

    [/autoit] [autoit][/autoit] [autoit]

    While Sleep(50)

    [/autoit] [autoit][/autoit] [autoit]

    Switch $Anzeige
    Case 0 ; Home
    _home()
    Case 1 ; Menu
    _menu()
    Case 2 ; Suche
    _suche()
    EndSwitch

    [/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    ; Funktionen
    Func _SetParent($hWnd_Parent, $hWnd_Child)
    $nExStyle = DllCall("user32.dll", "int", "GetWindowLong", "hwnd", $hWnd_Child, "int", 0xEC)
    DllCall("user32.dll", "int", "SetWindowLong", "hwnd", $hWnd_Child, "int", 0xEC, "int", BitOR($nExStyle[0], $WS_EX_MDICHILD))
    DllCall("user32.dll", "int", "SetParent", "hwnd", $hWnd_Child, "hwnd", $hWnd_Parent)
    GUISwitch($hWnd_Parent)
    EndFunc ;==> _SetParent

    [/autoit] [autoit][/autoit] [autoit]

    Func GuiRoundCorners($h_win, $i_x1, $i_y1, $i_x3, $i_y3)
    $pos = WinGetPos($h_win)
    $ret = DllCall("gdi32.dll", "long", "CreateRoundRectRgn", "long", $i_x1, "long", $i_y1, "long", $pos[2], "long", $pos[3], "long", $i_x3, "long", $i_y3)
    If $ret[0] Then
    $ret2 = DllCall("user32.dll", "long", "SetWindowRgn", "hwnd", $h_win, "long", $ret[0], "int", 1)
    If $ret2[0] Then
    Return 1
    Else
    Return 0
    EndIf
    Else
    Return 0
    EndIf
    EndFunc ;==>GuiRoundCorners

    [/autoit] [autoit][/autoit] [autoit]

    Func FadeIn($h)
    For $i = 0 To 255 Step 15
    Sleep(10)
    WinSetTrans($h, "", $i)
    Next
    EndFunc ;==>FadeIn

    [/autoit] [autoit][/autoit] [autoit]

    Func FadeOut($h)
    For $i = 255 To 0 Step -15
    Sleep(10)
    WinSetTrans($h, "", $i)
    Next
    EndFunc ;==>FadeOut

    [/autoit] [autoit][/autoit] [autoit]

    Func _Exit()
    FadeOut($hWnd_Main)
    GUIDelete($hWnd_Child1)

    [/autoit] [autoit][/autoit] [autoit]

    _Button_Dispose($hButton1)
    _Button_Dispose($hButton2)
    _Button_Dispose($hButton3)
    _Button_Dispose($hButton4)
    _Button_Dispose($hButton5)
    _Button_Dispose($hButton6)
    _Button_Dispose($hButton7)
    _Button_Dispose($hButton8)
    _Button_Dispose($hButton9)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDispose($hBackbuffer)
    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()
    Exit
    EndFunc ;==>_Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func _home_button()
    $Anzeige = 0
    EndFunc ;==>_home_button

    [/autoit] [autoit][/autoit] [autoit]

    Func _menu_button()
    $Anzeige = 1
    EndFunc ;==>_menu_button

    [/autoit] [autoit][/autoit] [autoit]

    Func _suche_button()
    $Anzeige = 2
    EndFunc ;==>_menu_button

    [/autoit] [autoit][/autoit] [autoit]

    Func _home()
    _GDIPlus_GraphicsClear($hBackbuffer1, 0xFFFFFFFF)
    _GDIPlus_GraphicsDrawImageRect($hBackbuffer1, $hImg_HTC_Brilliant, 5, 120, 260, 165)
    ; Hier was auch immer du willst...
    _GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap1, 10, 10)
    EndFunc ;==>_home

    [/autoit] [autoit][/autoit] [autoit]

    Func _menu()
    _GDIPlus_GraphicsClear($hBackbuffer, 0xFF000000)
    $Btn_msg = _Button_Get_Pressed()
    _Button_Draw($hBackbuffer, $hButton1)
    _Button_Draw($hBackbuffer, $hButton2)
    _Button_Draw($hBackbuffer, $hButton3)
    _Button_Draw($hBackbuffer, $hButton4)
    _Button_Draw($hBackbuffer, $hButton5)
    _Button_Draw($hBackbuffer, $hButton6)
    _Button_Draw($hBackbuffer, $hButton7)
    _Button_Draw($hBackbuffer, $hButton8)
    _Button_Draw($hBackbuffer, $hButton9)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0)
    If $Btn_msg Then ToolTip('ButtonID: ' & $Btn_msg)
    EndFunc ;==>_menu

    Func _suche()
    _GDIPlus_GraphicsClear($hBackbuffer, 0xFF000000)
    $IE = _IECreateEmbedded()
    $browser = GUICtrlCreateObj($IE, 11, 13, 268, 395, BitOR($WS_VSCROLL, $WS_HSCROLL))
    _IENavigate($IE,"http://www.google.de")
    _GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, 0, 0)
    EndFunc ;==>_suche_button

    [/autoit]

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™