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
Beiträge von BugFix
-
-
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.au3Sollte die Datei nicht existieren, kannst du sie einfach erstellen.
-
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. -
Ich habe XP Home SP2 - Vielleicht läuft das nur auf Pro.
-
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] [autoit][/autoit] [autoit]
; 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#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
$oMyError = ObjEvent("AutoIt.Error","MyErrFunc")$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))
[/autoit] [autoit][/autoit] [autoit]
$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)$GUIActiveX = GUICtrlCreateObj( $oRP, 10, 10 , 400 , 260 )
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetPos($GUIActiveX,10,10,300,160)With $oRP; Object tag pool
[/autoit] [autoit][/autoit] [autoit]
.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
EndWithGUISetState ();Show GUI
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$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
WEndExit
[/autoit] [autoit][/autoit] [autoit]Func MyErrFunc()
[/autoit] [autoit][/autoit] [autoit]Msgbox(0,"AutoItCOM Test","We intercepted a COM Error !" & @CRLF & @CRLF & _
[/autoit]
"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
EndfuncDabei 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.
-
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
_Array2DToString()
[autoit]Global $Array[3][3] = [['a','b','c'],['d','e','f'],['g','h','i']]
[/autoit] [autoit][/autoit] [autoit]
;~ Global $Array[5] = [1,2,3,4,5]ConsoleWrite(_Array2DToString($Array, ';') & @CRLF)
[/autoit] [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 -
In einem Label?
[autoit]
Naja, egal - so gehts: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
[/autoit][autoit][/autoit][autoit]
For $j = 0 To UBound($Array, 2) -1
$str &= $Array[$i][$j] & $trenn
Next
Next
$str = StringTrimRight($str, 1) ; letztes Trennzeichen wieder abschneidenConsoleWrite($str & @CRLF) ; oder halt: GUICtrlSetData($Label, $str)
[/autoit]
- Mal wieder alle auf einen Schlag. -
ssh=#cs -......
Das ist die Abkürzung.
-
Verwende doch dafür eine Abkürzung (z.B. ssh = ScriptSetHeader) und füge die folgende Zeile in die Abkürzungsdatei (abbrev.properties) ein:
Codessh=#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. -
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. -
bekommst du glaub ich recht schnell ein Jobangebot von PayPal

Oder Besuch von netten Herren in schwarzen Anzügen und ernsten Minen.
-
;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. -
Ich will einen Link kopieren, direkt aus dieser "Linkleiste" von Opera
Schau dir ClipPut(), ClipGet() und IniWrite() an. -
Sorry, wenn ich diesen alten Thread noch mal aufgreife. Da ich aber gerade auch auf dieses Problem:
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? -
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>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <GuiEdit.au3>
#include <GuiListView.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
Global $content, $sel$Form1 = GUICreate("Form1", 690, 222, 195, 115)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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()While True
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc Form1Close()
[/autoit] [autoit][/autoit] [autoit]
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]); fügt am Ende an:
[/autoit] [autoit][/autoit] [autoit]
;~ _GUICtrlEdit_AppendText($hEdit, $content & ' ' & $strAppend); fügt an Cursorposition ein, ich muß aber vorm Ziehen die Zielposition markieren:
[/autoit]
$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 -
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
-
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.
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. 
-
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")
[/autoit] [autoit][/autoit] [autoit]
$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; Jetzt aber:
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($arErgebnis) -1
ConsoleWrite($arErgebnis[$i] & @CRLF) ; liefert Array-Fehler !!
Next; der Hammer:
[/autoit]
For $i = 0 To UBound($arErgebnis) -1
ConsoleWrite($arErgebnis[$i][0] & @CRLF) ; liefert das korrekte Ergebnis obwohl 1D-Array !!
Next -
Wollte ich dir schon ewig sagen: OI ignoriert die WindowsConstants.au3 - also es wird nicht erkannt, dass diese eingebunden werden muß. (Ver. 4.0)
-
Ah, Danke - der Ansatz war gut. Habs jetzt noch etwas vereinfacht:
Spoiler anzeigen
[autoit]#include<GuiListView.au3>
[/autoit] [autoit][/autoit] [autoit]
#include<GUIConstantsEx.au3>
#Include <GuiEdit.au3>
Opt("GUIOnEventMode", 1)
Global $content$Form1 = GUICreate("Form1", 690, 222, 195, 115)
[/autoit] [autoit][/autoit] [autoit]
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()While True
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc Form1Close()
[/autoit]
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