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. BugFix

Beiträge von BugFix

  • Transperenz

    • BugFix
    • 25. August 2008 um 15:42

    Nur ein Control transparent? - geht auch.
    1. Main-GUI mit deinem Hintergrund
    2. Child-GUI als Popup-Window in der Größe deines Controls an die Position wo das Control hin soll, Transparenz einstellen für Child-Window
    3. auf dem Child-GUI dein Control erstellen (Position jetzt natürlich relativ zum Child, also an 0,0 und gleiche Höhe u. Breite wie Child-Window

  • Syntaxhighlighting bei eigener Funktion mit Scite

    • BugFix
    • 25. August 2008 um 15:32
    Zitat von HowToBen

    Sprich wenn ich meine Funktion anwähle und dann F1 drück, dass dann mein Hilfetext kommt?


    Das geht nicht, da müßtest du die Hilfe aufbröseln, deine Einträge hinzufügen und die Hilfedatei neu erstellen.
    Aber du kannst ja deine Funktion bei der Autovervollständigung einfügen - ist ja auch eine Art Hilfe.
    In der Datei: ...\SciTE\api\au3.user.calltips.api einfach einen Eintrag für deine Funktion in der Art:

    Code
    _ArraySort_2ary(Array [, HauptsortierIndex [, Sort auf=0/ab=1 [, Sort 2.te Dim entgegengesetzt=False]]]); #include ArrayMore.au3

    Sollte die Datei nicht existieren, kannst du sie einfach erstellen.

  • Scite Einstellen

    • BugFix
    • 25. August 2008 um 15:23
    Zitat von monkey

    da kann man ja auch den inhalt in der schleife ausblenden lassen..

    ??
    Was meinst du damit? Etwa die Codefalten? Dann geh mal in SciTE auf <Ansicht> und markiere "Rand für Codefalten", dann kannst du Codeblöcke zusammenfalten.

  • Hilfefenster mit GUICtrlSetData und Scrollen

    • BugFix
    • 25. August 2008 um 15:18

    Ich habe XP Home SP2 - Vielleicht läuft das nur auf Pro.

  • Hilfefenster mit GUICtrlSetData und Scrollen

    • BugFix
    • 25. August 2008 um 13:14

    Hi Xeno,
    ich wollte das Richtext-Bsp. aus der Hilfe ausführen:

    Spoiler anzeigen
    [autoit]

    ; Rich edit control EXAMPLE using GUICtrlCreateObj

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

    ; Author: Kåre Johansson
    ; AutoIt Version: 3.1.1.55
    ; Description: Very Simple example: Embedding RICHTEXT object
    ; Needs: MSCOMCT2.OCX in system32 but it's probably already there
    ; Date: 3 jul 2005

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

    #include <GUIConstants.au3>
    $oMyError = ObjEvent("AutoIt.Error","MyErrFunc")

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

    $oRP = ObjCreate("RICHTEXT.RichtextCtrl.1")

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

    GUICreate("Embedded RICHTEXT control Test", 320, 200, -1, -1,BitOr($WS_OVERLAPPEDWINDOW,$WS_CLIPSIBLINGS,$WS_CLIPCHILDREN))
    $TagsPageC = GuiCtrlCreateLabel('Visit Tags Page', 5, 180, 100, 15, $SS_CENTER)
    GuiCtrlSetFont($TagsPageC,9,400,4)
    GuiCtrlSetColor($TagsPageC,0x0000ff)
    GuiCtrlSetCursor($TagsPageC,0)
    $AboutC = GUICtrlCreateButton('About',105,177,70,20)
    $PrefsC = GUICtrlCreateButton('FontSize',175,177,70,20)
    $StatC = GUICtrlCreateButton('Plain Style',245,177,70,20)

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

    $GUIActiveX = GUICtrlCreateObj( $oRP, 10, 10 , 400 , 260 )
    GUICtrlSetPos($GUIActiveX,10,10,300,160)

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

    With $oRP; Object tag pool
    .OLEDrag()
    .Font = 'Arial'
    .text = "Hello - Au3 supports ActiveX components like the RICHTEXT thanks to SvenP" & @CRLF & 'Try write some text and quit to reload'
    ;.FileName = @ScriptDir & '\RichText.rtf'
    ;.BackColor = 0xff00
    EndWith

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

    GUISetState ();Show GUI

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

    While 1
    $msg = GUIGetMsg()

    Select
    Case $msg = $GUI_EVENT_CLOSE
    $oRP.SaveFile( @ScriptDir & "\RichText.rtf", 0 )
    ExitLoop
    Case $msg = $TagsPageC
    Run(@ComSpec & ' /c start http://www.myplugins.info/guids/typeinfo/typeinfo.php?clsid={3B7C8860-D78F-101B-B9B5-04021C009402}','', @SW_HIDE)
    Case $msg = $AboutC
    $oRP.AboutBox()
    Case $msg = $PrefsC
    $oRP.SelFontSize = 12
    Case $msg = $StatC
    $oRP.SelBold = False
    $oRP.SelItalic = False
    $oRP.SelUnderline = False
    $oRP.SelFontSize = 8
    EndSelect
    WEnd

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

    Exit

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

    Func MyErrFunc()

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

    Msgbox(0,"AutoItCOM Test","We intercepted a COM Error !" & @CRLF & @CRLF & _
    "err.description is: " & @TAB & $oMyError.description & @CRLF & _
    "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _
    "err.number is: " & @TAB & hex($oMyError.number,8) & @CRLF & _
    "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _
    "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _
    "err.source is: " & @TAB & $oMyError.source & @CRLF & _
    "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _
    "err.helpcontext is: " & @TAB & $oMyError.helpcontext _
    ,5)
    ; Will automatically continue after 5 seconds

    Local $err = $oMyError.number
    If $err = 0 Then $err = -1

    SetError($err) ; to check for after this function returns
    Endfunc

    [/autoit]

    Dabei gibt es folgenden Fehler: "err.windescription: Keine Lizenz für die Verwendung dieser Klasse vorhanden"

    Hab es auf meinem Laptop und auch auf Desktop-PC getestet mit demselben Ergebnis.

  • Array in Label anzeigen ?

    • BugFix
    • 25. August 2008 um 13:03

    OK, ich bin so frei und spendier dir mal 'ne Funktion dafür. Arbeitet mit 1D und 2D Arrays.
    Dann hast du nur noch eine Codezeile :P

    _Array2DToString()
    [autoit]

    Global $Array[3][3] = [['a','b','c'],['d','e','f'],['g','h','i']]
    ;~ Global $Array[5] = [1,2,3,4,5]

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

    ConsoleWrite(_Array2DToString($Array, ';') & @CRLF)

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

    ;==================================================================================================
    ; Function Name: _Array2DToString(ByRef $avArray, $sDelim [, $iRowStart=-1 [, $iRowEnd=-1 [, $iColStart=-1 [, $iColEnd=-1]]]])
    ; Description:: Gibt einen String zurück mit allen Elementen des angegebenen Bereiches
    ; aus einem 1D- oder 2D-Array
    ; Parameter(s): $avArray Das Array, das in einen String konvertiert werden soll
    ; $sDelim Das Trennzeichen zwischen den Elementen
    ; Für alle optionalen Parameter wird mit "-1" der Standardwert gesetzt
    ; optional: $iRowStart Die Zeile ab der konvertiert werden soll, Standard: ab Index 0
    ; optional: $iRowEnd Die Zeile bis zu der konvertiert werden soll, Standard: letztes Element
    ; optional: $iColStart Die Spalte ab der konvertiert werden soll, Standard: ab Index 0
    ; optional: $iColEnd Die Spalte bis zu der konvertiert werden soll, Standard: letzte Spalte
    ; Return Value(s): Erfolg Konvertierter String
    ; Fehler 1 und @error 1 - kein Array übergeben
    ; 2 - StartIndex falsch
    ; Author(s): BugFix
    ;==================================================================================================
    Func _Array2DToString(ByRef $avArray, $sDelim, $iRowStart=-1, $iRowEnd=-1, $iColStart=-1, $iColEnd=-1)
    If Not IsArray($avArray) Then Return SetError(1,0,1)
    If ($iRowStart < -1) Or ($iColStart < -1) Then Return SetError(2,0,1)
    Local $ub2nd = UBound($avArray, 2)
    Local $strOut = ''
    If $iRowStart = -1 Then $iRowStart = 0
    If $iRowEnd = -1 Then $iRowEnd = UBound($avArray) -1
    Switch $ub2nd
    Case 0
    If $iRowEnd > UBound($avArray) -1 Then $iRowEnd = UBound($avArray) -1
    For $i = $iRowStart To $iRowEnd
    If $i = $iRowEnd Then
    $strOut &= $avArray[$i]
    Else
    $strOut &= $avArray[$i] & $sDelim
    EndIf
    Next
    Case Else
    If $iRowEnd > $ub2nd -1 Then $iRowEnd = $ub2nd -1
    If $iColStart = -1 Then $iColStart = 0
    If $iColEnd = -1 Then $iColEnd = $ub2nd -1
    For $i = $iRowStart To $iRowEnd
    For $j = $iColStart To $iColEnd
    If $i = $iRowEnd And $j = $iColEnd Then
    $strOut &= $avArray[$i][$j]
    Else
    $strOut &= $avArray[$i][$j] & $sDelim
    EndIf
    Next
    Next
    EndSwitch
    Return $strOut
    EndFunc ;==>_Array2DToString

    [/autoit]
  • Array in Label anzeigen ?

    • BugFix
    • 25. August 2008 um 11:42

    In einem Label?
    Naja, egal - so gehts:

    [autoit]

    Global $Array[3][3] = [['a','b','c'],['d','e','f'],['g','h','i']], $str = '', $trenn = ';'

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

    For $i = 0 To UBound($Array) -1
    For $j = 0 To UBound($Array, 2) -1
    $str &= $Array[$i][$j] & $trenn
    Next
    Next
    $str = StringTrimRight($str, 1) ; letztes Trennzeichen wieder abschneiden

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

    ConsoleWrite($str & @CRLF) ; oder halt: GUICtrlSetData($Label, $str)

    [/autoit]


    :D - Mal wieder alle auf einen Schlag.

  • Scite Einstellen

    • BugFix
    • 25. August 2008 um 09:12

    ssh=#cs -......

    Das ist die Abkürzung.

  • Scite Einstellen

    • BugFix
    • 24. August 2008 um 22:48

    Verwende doch dafür eine Abkürzung (z.B. ssh = ScriptSetHeader) und füge die folgende Zeile in die Abkürzungsdatei (abbrev.properties) ein:

    Code
    ssh=#cs ----------------------------------------------------------------------------\n\n AutoIt Version:    3.2.13.3 (beta)\n Author:                myName\n\n Script Function:  \n    \n#ce ----------------------------------------------------------------------------


    Es wird zwar dann nicht automatisch die aktuell verwendete AutoIt-Version eingetragen, aber das kannst du dann ja gegebenenfalls ändern.

  • Direkt in ini-Datei kopieren

    • BugFix
    • 24. August 2008 um 20:06
    Zitat von blubbstar

    Mit Firefox kann man mit STRG+L die Adresszeile markieren, Opera wird da wohl auch sowas haben.


    Stimmt, ist in K-Meleon genauso. Somit kannst du mit <Strg+L+C> sofort den Link aus der Adresszeile kopieren.

  • Verschlüsselter Quelltext

    • BugFix
    • 24. August 2008 um 20:00
    Zitat von McPoldy

    bekommst du glaub ich recht schnell ein Jobangebot von PayPal :)


    Oder Besuch von netten Herren in schwarzen Anzügen und ernsten Minen. :rofl:

  • Direkt in ini-Datei kopieren

    • BugFix
    • 24. August 2008 um 19:31
    Zitat von xarre

    ;geht bei meinem Opera auf die Linkleiste rechtsklickt und kopiert
    MouseClick("right",353,98 )
    MouseClick("left",386167)


    Versuchs doch mal mit ControlClick oder auch ControlCommand. Dann brauchst du nicht die ungenaue Mausklickerei.

  • Direkt in ini-Datei kopieren

    • BugFix
    • 24. August 2008 um 17:18
    Zitat von xarre

    Ich will einen Link kopieren, direkt aus dieser "Linkleiste" von Opera


    Schau dir ClipPut(), ClipGet() und IniWrite() an.

  • Hilfefenster mit GUICtrlSetData und Scrollen

    • BugFix
    • 24. August 2008 um 11:37

    Sorry, wenn ich diesen alten Thread noch mal aufgreife. Da ich aber gerade auch auf dieses Problem:

    Zitat von a90065

    Bei der Ausführung kommen dann folgende Fehlermeldungen:
    AutoItComTest:
    Keine Lizenz für die Verwendung dieser Klasse vorhanden.
    bzw.
    Element nicht gefunden.

    gestoßen bin und bisher noch keine Lösung dazu gekommen ist, wollte ich das nochmals aufwärmen.
    In der aktuellen Hilfe wird ja dieses Richtext-Objekt als Bsp. angeführt. Jedoch läßt es sich nicht ausführen, da die o.a. Lizenzfehler-Meldung erscheint.
    Die MS-Hilfe bietet, wie üblich, keine wirkliche Hilfe.
    Hat irgendjemand eine Idee, was es mit diesem Lizenzkram auf sich hat?

  • Drag&Drop - Text in einem Edit an Mauszeigerposition einfügen

    • BugFix
    • 24. August 2008 um 10:34

    Hi,
    nachdem ich nun eine Lösung habe, Text in ein Edit zu ziehen, ohne den alten Inhalt zu löschen, möchte ich auch die Möglichkeit haben, den Text an der aktuellen Mauszeigerposition einzufügen. So, wie man es aus anderen Anwendungen kennt, einfach ein Wort zwischen zwei andere ziehen.
    Meine momentane Lösung erfordert, dass ich vorab im Edit an die Zielposition klicke. Das gefällt mir aber nicht.
    Ich habe bis jetzt aber keinen Ansatz gefunden, wie ich aus der Cursorposition auf die Zeichenposition im Edit schließen kann.
    Vielleicht habt ihr ja eine Idee.
    Das ist meine bisherige Lösung:

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiEdit.au3>
    #include <GuiListView.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    Opt("GUIOnEventMode", 1)
    Global $content, $sel

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

    $Form1 = GUICreate("Form1", 690, 222, 195, 115)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, '_down')
    GUISetOnEvent($GUI_EVENT_DROPPED, '_dropped')
    $ListView1 = GUICtrlCreateListView("Tabelle", 455, 8, 230, 189)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER )
    $LVTable = GUICtrlGetHandle($ListView1)
    $Edit1 = GUICtrlCreateEdit("Bla-Bla ", 8, 8, 441, 189)
    GUICtrlSetState($Edit1, $GUI_DROPACCEPTED)
    $hEdit = GUICtrlGetHandle($Edit1)
    For $i = 1 To 10
    _GUICtrlListView_AddItem($LVTable, 'Eintrag ' & StringRight('0' & $i, 2))
    Next
    GUISetState()

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

    While True
    Sleep(100)
    WEnd

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

    Func Form1Close()
    Exit
    EndFunc
    Func _down()
    $content = GUICtrlRead($Edit1)
    $sel = _GUICtrlEdit_GetSel($hEdit) ; Cursorposition im Edit
    EndFunc
    Func _dropped()
    Local $sLeft = '', $sRight = ''
    If @GUI_DropId <> $Edit1 Then Return
    If @GUI_DragId = $ListView1 Then _
    Local $strAppend = _GUICtrlListView_GetItemText($LVTable, _GUICtrlListView_GetSelectedIndices($LVTable))
    ; löscht alten Inhalt:
    ;~ _GUICtrlEdit_InsertText($hEdit, ' ' & $strAppend, $sel[0])

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

    ; fügt am Ende an:
    ;~ _GUICtrlEdit_AppendText($hEdit, $content & ' ' & $strAppend)

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

    ; fügt an Cursorposition ein, ich muß aber vorm Ziehen die Zielposition markieren:
    $sLeft = StringLeft($content, $sel[0])
    If $sel[0] < StringLen($content) Then $sRight = StringRight($content, StringLen($content)-$sel[0])
    $content = $sLeft & ' ' & $strAppend & ' ' & $sRight
    _GUICtrlEdit_AppendText($hEdit, $content)
    EndFunc

    [/autoit]
  • Scite Funktionsbeschreibung (au3.api) übersetzen

    • BugFix
    • 24. August 2008 um 08:21

    Ich rate davon ab, diese Datei zu übersetzen.
    Bei jeder neuen Version von AutoIt wird diese Datei überschrieben. Deshalb gibt es ja auch die au3.user.calltips.api, um eigene Einträge für UDF zu erstellen.
    Du kannst aber, wenn es unbedingt übersetzt werden soll, den Inhalt mit in die au3.user.calltips.api einfügen, dann geht nichts verloren. Allerdings muß dann die au3.api aus dem Ordner entfernt oder umbenannt werden - sonst gibts englisch-deutschen Mix ;)

  • OrganizeIncludes

    • BugFix
    • 24. August 2008 um 07:52
    Zitat von Tweaky

    da das zu suchende Array einen falschen Bereich hatte


    Danke, das ist übrigens einer der Gründe, warum ich mir abgewöhnt habe, den zurückgegeben Zähler in $Array[0] als Obergrenze zu verwenden. Ich verwende nur UBound($Array) -1, dann stimmt es immer. :D

    Edit:
    Übrigens glaube ich nun doch, dass ich von Demenz geplagt werde. ;( Habe die Frage ja schon mal gestellt und daraufhin kam deine oben genannte Antwort. Und ich kann mich dadran echt nicht mehr erinnern... schlimm, schlimm. 8|

  • ADO - Objekt, Methode GetRows ==> ArrayFehler

    • BugFix
    • 23. August 2008 um 18:13

    Hi,
    wenn man mit einem ADO-Objekt eine Datenbankabfrage macht, kann man mittels GetRows das zurückgelieferte RecordSet in ein Array wandeln.
    Dabei ist mir ein seltsames Verhalten aufgefallen:
    Liefert das Ergebnis nur eine Spalte zurück (also ein 1D-Array), so muß ich auf dieses Array aber als 2D-Array zugreifen!! und als Wert für die zweite Dimension dann 0 einsetzen!
    Also nicht wundern, wenn ihr mal damit arbeitet und plötzlich einen Arrayfehler auftritt - nun wißt ihr wieso. ;)

    Spoiler anzeigen
    [autoit]

    $objConnection = ObjCreate("ADODB.Connection")
    $data_source = "C:/GDILine/Factur/GDI.GDB"
    $connStr = "DRIVER=Firebird/InterBase(r) driver; UID=SYSDBA; PWD=masterkey; DBNAME=" & $data_source & ";"
    $objConnection.Open($connStr)
    $oRecordSet = $objConnection.Execute("SELECT name1 FROM kunden WHERE ort = 'Musterstadt' ORDER BY name1;")
    $arErgebnis = $oRecordSet.GetRows
    ConsoleWrite(UBound($arErgebnis, 2) & @CRLF) ; liefert 1 ==> ist ja auch nur eine Spalte

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

    ; Jetzt aber:
    For $i = 0 To UBound($arErgebnis) -1
    ConsoleWrite($arErgebnis[$i] & @CRLF) ; liefert Array-Fehler !!
    Next

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

    ; der Hammer:
    For $i = 0 To UBound($arErgebnis) -1
    ConsoleWrite($arErgebnis[$i][0] & @CRLF) ; liefert das korrekte Ergebnis obwohl 1D-Array !!
    Next

    [/autoit]
  • OrganizeIncludes

    • BugFix
    • 23. August 2008 um 14:27

    Wollte ich dir schon ewig sagen: OI ignoriert die WindowsConstants.au3 - also es wird nicht erkannt, dass diese eingebunden werden muß. (Ver. 4.0)

  • Drop löscht bisherigen Inhalt im Edit

    • BugFix
    • 23. August 2008 um 13:05

    Ah, Danke - der Ansatz war gut. Habs jetzt noch etwas vereinfacht:

    Spoiler anzeigen
    [autoit]

    #include<GuiListView.au3>
    #include<GUIConstantsEx.au3>
    #Include <GuiEdit.au3>
    Opt("GUIOnEventMode", 1)
    Global $content

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

    $Form1 = GUICreate("Form1", 690, 222, 195, 115)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, '_down')
    GUISetOnEvent($GUI_EVENT_DROPPED, '_dropped')
    $ListView1 = GUICtrlCreateListView("Tabelle", 455, 8, 230, 189)
    GUICtrlSendMsg(-1, 0x101E, 0, $LVSCW_AUTOSIZE_USEHEADER )
    $LVTable = GUICtrlGetHandle($ListView1)
    $Edit1 = GUICtrlCreateEdit("Bla-Bla ", 8, 8, 441, 189)
    GUICtrlSetState($Edit1, $GUI_DROPACCEPTED)
    $hEdit = GUICtrlGetHandle($Edit1)
    For $i = 1 To 10
    _GUICtrlListView_AddItem($LVTable, 'Eintrag ' & StringRight('0' & $i, 2))
    Next
    GUISetState()

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

    While True
    Sleep(100)
    WEnd

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

    Func Form1Close()
    Exit
    EndFunc
    Func _down()
    $content = GUICtrlRead($Edit1)
    EndFunc
    Func _dropped()
    If @GUI_DropId <> $Edit1 Then Return
    If @GUI_DragId = $ListView1 Then _
    Local $strAppend = _GUICtrlListView_GetItemText($LVTable, _GUICtrlListView_GetSelectedIndices($LVTable))
    _GUICtrlEdit_AppendText($hEdit, $content & $strAppend)
    EndFunc

    [/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™