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

  • SciTE - Markierten Bereich paarig einfassen + Arraydeklaration mit Wertzuweisung und Scopeauswahl

    • BugFix
    • 27. Oktober 2011 um 21:36

    Hier ein kleines Tool, dass es ermöglicht, einen markierten Bereich (auch Blockmarkierung - z.B. in Zeilen 3-6 jeweils Spalten 10-17) mit paarigen Zeichen: ( ), { }, [ ], ' ', " " einzufassen.
    Bei Blockmarkierung wird in jeder Zeile des Blocks am Beginn und Ende der Markierung das entsprechende Zeichen gesetzt.
    Steht der Cursor nach der Markierung vor der Auswahl ist das öffnende Symbol zu wählen, steht er am Ende ist das schließende Symbol zu wählen. Dass paarige Symbol wird dann entsprechend zugeordnet.
    Also:
    - Bereich markieren
    - öffnendes oder schließendes Symbol eingeben

    Dieses Tool ersetzt auch die Funktion "AutoCloseBraces.lua". Sofern ihr diese verwendet, muß sie im Lua-Startup Skript ( SciTEStartup.lua ) deaktiviert werden.

    Kopiert die Datei EdgingSelection.lua in den Pfad: "..SciTE\LUA\"
    Öffnet die SciTEStartup.lua und ergänzt sie um den Eintrag "LoadLuaFile("EdgingSelection.lua")".
    Die Datei sollte dann etwa so aussehen:

    Spoiler anzeigen
    Code
    -- TIME_STAMP   2011-10-27 20:24:06   v 0.1
    
    
    --------------------------------------------------------------------------------
    -- SciTE startup script.
    --------------------------------------------------------------------------------
    -- A table listing all loaded files.
    LoadLuaFileList = { }
    --------------------------------------------------------------------------------
    -- LoadLuaFile(file, directory)
    --
    -- Helper function for easily loading Lua files.
    --
    -- Parameters:
    --	file - The name of a Lua file to load.
    --	directory - If specified, file is looked for in that directory.  By default,
    -- 		this directory is $(SciTEDefaultHome)\Lua.
    --------------------------------------------------------------------------------
    function LoadLuaFile(file, directory)
    	if directory == nil then
    		directory = props["SciteDefaultHome"] .. "\\Lua\\"
    	end
    	table.insert(LoadLuaFileList, directory .. file)
    	dofile(directory .. file)
    end	-- LoadLuaFile()
    
    
    -- Load all the Lua files.
    LoadLuaFile("Class.lua")	-- Always load first.
    LoadLuaFile("Common.lua")	-- Always load second.
    LoadLuaFile("AutoItPixmap.lua")
    LoadLuaFile("AutoHScroll.lua")
    LoadLuaFile("AutoItAutoComplete.lua")
    LoadLuaFile("LoadSession.lua")
    LoadLuaFile("AutoItIndentFix.lua")
    LoadLuaFile("EdgeMode.lua")
    LoadLuaFile("SmartAutoCompleteHide.lua")
    LoadLuaFile("Tools.lua")
    LoadLuaFile("AutoItTools.lua")
    LoadLuaFile("AutoItGotoDefinition.lua")
    --~ LoadLuaFile("AutoCloseBraces.lua")  -- wenn diese Datei nicht verwendet wird ==> mit '--' auskommentieren oder löschen
    
    
    -- Start up the events (Calls OnStartup()).
    EventClass:BeginEvents()
    
    
    -- Erst nach Registrierung der EventClass werden eigene Dateien geladen
    LoadLuaFile("AutoStampSaveVersion.lua")  -- enthält Event: "OnBeforeSave"
    LoadLuaFile("MyDebug.lua")
    LoadLuaFile("EdgingSelection.lua")
    Alles anzeigen

    Falls ihr die Funktion zum Neuladen der Properties aktiviert habt - einmal ausführen, ansonsten Neustart SciTE.


    Edit 28.10.2011: Hab das Tool noch etwas verändert und auch umbenannt.
    - Im Überschreib-Modus ist das Tool jetzt deaktiviert
    - kleinen Bug behoben

    Edit 29.10.2011: 
    Manchmal macht man es sich unnütz schwer. ;) Da hatte ich doch glatt übersehen, dass das OnKey-Event gleich den Status für SHIFT, CTRL, ALT mitliefert, das vereinfacht natürlich den Code.
    Weiterhin habe ich es jetzt 'internationalisiert' (auch für englisches Keyboardlayout wirksam). ;)
    Die Variablengestaltung ist nun auch übersichtlicher.
    Aktuelle Version: 1.3

    Edit 30.10.2011:
    Kleine Erweiterung: Es können einzelne Dateitypen von der Funktion ausgeschlossen werden. Dazu für jede der auszuschließenden Dateitypen einen Eintrag erstellen in "SciTEUser.properties":
    "NoPairs.ext=1" (ext = Erweiterung in Kleinbuchstaben)
    Aktuelle Version: 1.4

    Edit 05.10.2012  NEU
    Ich habe folgende Funktion hinzugefügt:
    - Deklaration von Arrays mit Wertzuweisung
    dazu:
    - in jede Zeile einen Arraywert eintragen (Strings ohne Gänsefüßchen)
    - Blockauswahl dieser Zeilen
    - für Strings: Strg+Alt+S (bzw. AltGr+S)
    - für Zahlen, Variablen: Strg+Alt+A (bzw. AltGr+A)

    - Gültigkeitsbereich wird festgelegt über die Verwendung der Buchstaben "d", "g" oder "l" ( Dim, Global oder Local )
    - für Strings: "Strg+Alt+Shift+Buchstabe"
    - für Zahlen, Variablen: "Strg+Alt+Buchstabe"
    - statt "Strg+Alt" kann natürlich auch "AltGr" genutzt werden
    Aktuelle Version: 1.6

    Bsp.:

    [autoit]


    ; vorher:
    10
    20
    30
    40

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

    ; mit "Strg+Alt+d" :
    Dim $a[4] = [10,20,30,40]

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

    ; mit "Strg+Alt+Shift+L" :
    Local $a[4] = ["10","20","30","40"]

    [/autoit]


    EdgingSelection.lua (v1.6)
    Code
    -- TIME_STAMP   2012-10-06 11:31:14   v 1.6
    
    
    ----------------- EdgingSelection.LUA ------------------------------------
    --  Edge selected text with paired chars or set an empty pair           --
    --  on hit this char.                                                   --
    --  Paired chars are: " ", ' ', ( ), { }, [ ]                           --
    --  * Set edging always in multiple selected lines or in block          --
    --    selected areas (i.e. from line 3 to 8 in columns 20 to 30).       --
    --  * If caret position are left from selection hit the opening         --
    --    char, on position at the end hit the closing char.                --
    --  * It also works without selection, so you got empty pairs. The      --
    --    opening char must hit! (like AutoCloseBraces.lua)                 --
    --    Hit closing char without selection inserts only this char.        --
    --  * ! If you want to set empty pairs on multiple lines, you must      --
    --    select 0 columns (hit SHIFT+ALT + n-times DOWN) and the           --
    --    closing char must hit. Downward selection is required for this.   --
    --  * NEW!                                                              --
    --    Now you can declare arrays with assignment by this way:           --
    --    • write one value in every line (strings without quotation mark)  --
    --    • make block selection of this                                    --
    --    • declare the array with assignment by hotkey:                    --
    --      the letter determines the scope to use:                         --
    --      Letters:   D = Dim, G = Global, L = Local                       --
    --      STRG+ALT+SHIFT+(Letter) values will marked as strings in array  --
    --      STRG+ALT+(Letter)       other values (numbers, variables)       --
    --  NOTE:                                                               --
    --  * If you always use an script like 'AutoCloseBraces.lua', you       --
    --    must disable it.                                                  --
    --  * The paired mode is disabled on using OVERWRITE in editor.         --
    --  * Keycodes for english and german keyboard layout implemented.      --
    --    Set your language in variable "lang". For other languages add     --
    --    own entries in table "tCode". To get right values uncomment the   --
    --    "print"-line in function "HitKey", hit the keys with pairing      --
    --    chars and read values from console. All entries('SHIFT', 'RAW',   --
    --    'CTRL_ALT') must created, to avoid errors.                        --
    --  * To exclude some file-types from this function, needs entry for    --
    --    every file-type that should excluded in "SciTEUser.properties"    --
    --    "NoPairs.ext=1" (.ext with lower chars!).                         --
    --------------------------------------------------------------------------
    
    
    ----------------- create new EventClass, event: OnKey ------------------
    HitKey = EventClass:new(Common)
    ------------------------------------------------------------------------
    
    
    ----------------- declare vars -----------------------------------------
    -- set your language and add table with values
    local lang = 'GE' -- 'EN'                                                                   -- language identifier, used in char-table
    
    
    -- virtual keycode
    local tCode = {}
    
    
    -- german keyboard
    tCode['GE'] = {}
    tCode['GE']['SHIFT'] = { [50] = '"', [191] = "'", [56] = '(', [57] = ')' }                                        -- chars on hit SHIFT (german)
    tCode['GE']['CTRL_ALT'] = { [55] = '{', [56] = '[', [57] = ']', [48] = '}', [68] = 'd', [71] = 'g', [76] = 'l' }  -- chars on hit CTRL+ALT (german)
    tCode['GE']['CTRL_ALT_SHIFT'] = { [68] = 'd', [71] = 'g', [76] = 'l' }                                            -- chars on hit CTRL+ALT+SHIFT (declare array with strings)
    tCode['GE']['RAW'] = {}                                                                                           -- empty table required to avoid errors
    
    
    -- US/ english keyboard
    tCode['EN'] = {}
    tCode['EN']['SHIFT'] = { [48] = ')', [57] = '(', [219] = '{', [221] = '}', [222] = '"' }                          -- chars on hit SHIFT (english)
    tCode['EN']['CTRL_ALT'] = { [68] = 'd', [71] = 'g', [76] = 'l' }                                                  -- chars on hit CTRL+ALT (only keys for array declaration)
    tCode['GE']['CTRL_ALT_SHIFT'] = { [68] = 'd', [71] = 'g', [76] = 'l' }                                            -- chars on hit CTRL+ALT+SHIFT (declare array with strings)
    tCode['EN']['RAW'] = { [219] = '[', [221] = ']', [222] = "'" }                                                    -- chars hit alone (english)
    
    
    -- paired chars
    local tPairs = {}
    tPairs['Left']  = { ['('] = ')', ['{'] = '}', ['['] = ']', ['"'] = '"', ["'"] = "'", ['d'] = 'd', ['g'] = 'g', ['l'] = 'l', ['D'] = 'D', ['G'] = 'G', ['L'] = 'L' }       -- left/opening chars + trigger array declaration
    tPairs['Right'] = { [')'] = '(', ['}'] = '{', [']'] = '[', ['"'] = '"', ["'"] = "'", ['d'] = 'd', ['g'] = 'g', ['l'] = 'l', ['D'] = 'D', ['G'] = 'G', ['L'] = 'L' }       -- right/closing chars + trigger array declaration
    
    
    -- insert key state
    local stateINS = 0
    
    
    ------------------------------------------------------------------------
    
    
    ------------------ get pairs -------------------------------------------
    function sibling(_sChar)
    	local leftChar, rightChar
    	if tPairs['Left'][_sChar] ~= nil then
    		rightChar = tPairs['Left'][_sChar]
    		leftChar  = tPairs['Right'][rightChar]
    	elseif  tPairs['Right'][_sChar] ~= nil then
    		leftChar  = tPairs['Right'][_sChar]
    		rightChar = tPairs['Left'][leftChar]
    	end
    	return leftChar, rightChar
    end  --> sibling
    ------------------------------------------------------------------------
    
    
    ----------------- set edging -------------------------------------------
    function EdgeSelection(_hitChar)
    	local leftChar, rightChar = sibling(_hitChar)
    	local selStart  = editor.SelectionStart
    	local selEnd    = editor.SelectionEnd
    	local firstLine = editor:LineFromPosition(selStart)
    	local lastLine  = editor:LineFromPosition(selEnd)
    	local aPos, n, sSelection = {}, 0
    	local caret, sSelection, fLeft, sScope
    	if     leftChar:find('[Dd]') then sScope = 'Dim'         -- using 'd g l' sets scope for array declaration as 'Dim Global Local'
    	elseif leftChar:find('[Ll]') then sScope = 'Local'
    	elseif leftChar:find('[Gg]') then sScope = 'Global' end
    
    
    	caret = editor.CurrentPos
    	if caret <= selStart then fLeft = 1 else fLeft = 0 end -- is caret left from selection?
    	if (selStart == selEnd) and (tPairs['Right'][_hitChar] ~= nil) and (_hitChar ~= "'" and _hitChar ~= '"') then return nil end
    	-- store selected area (start- /endposition in used lines)
    	-- from 2nd line add to position the count of chars to insert
    	for i = firstLine, lastLine do
    		aPos[i] = {}
    		aPos[i][1] = editor:GetLineSelStartPosition(i) + n*2
    		aPos[i][2] = editor:GetLineSelEndPosition(i) + n*2
    		n = n +1
    	end
    	-- insert edging chars at start- /endposition
    	editor:BeginUndoAction()
    	local sAsString, sDeclaration = '', ''
    	if leftChar:find('[DGL]') then sAsString = '"' end n = 0
    	-- 'd g l' creates an array declaration, every line as one entry; with 'D G L' all entries will marked as string
    	if firstLine == lastLine then
    		if leftChar:find('[DGLdgl]') then
    			local sTxt = editor:GetLine(firstLine)
    			sTxt = sTxt:gsub('[\r\n]', '')
    			sDeclaration = sScope .. ' $a[1] = [' .. sAsString .. sTxt .. sAsString .. ']'
    			editor:DeleteBackNotLine()
    			editor:InsertText(editor.CurrentPos, sDeclaration)
    			editor:GotoPos(editor.CurrentPos +sScope:len() +3)
    		else
    			if fLeft == 1 then editor:InsertText(aPos[firstLine][2], rightChar) end
    			if fLeft == 0 then editor:InsertText(aPos[firstLine][1], leftChar) editor:GotoPos(caret +1) end
    		end
    	else
    		if leftChar:find('[DGLdgl]') then
    			for i = firstLine, lastLine do
    				local sTxt = editor:GetLine(i)
    				sTxt = sTxt:gsub('[\r\n]', '')
    				sDeclaration = sDeclaration .. sAsString .. sTxt .. sAsString .. ','
    				n = n +1
    			end
    			sDeclaration = sScope .. ' $a[' .. n .. '] = [' .. sDeclaration
    			sDeclaration = sDeclaration:gsub(',$', ']')
    			editor:DeleteBackNotLine()
    			editor:InsertText(editor.CurrentPos, sDeclaration)
    			editor:GotoPos(editor.CurrentPos +sScope:len() +3)
    		else
    			n = 0
    			for i = firstLine, lastLine do
    				if fLeft == 1 and i == firstLine then
    					editor:InsertText(aPos[i][2], rightChar)
    				elseif fLeft == 0 and i == lastLine then
    					editor:InsertText(aPos[i][1], leftChar) editor:GotoPos(caret +n*2 +1)
    				else
    					if fLeft == 1 and n > 0 then aPos[i][1] = aPos[i][1] -1 aPos[i][2] = aPos[i][2] -1 end
    					editor:InsertText(aPos[i][2], rightChar)
    					editor:InsertText(aPos[i][1], leftChar)
    				end
    				n = n +1
    			end
    		end
    	end
    	editor:EndUndoAction()
    end  --> EdgeSelection
    ------------------------------------------------------------------------
    
    
    
    
    ----------------- Event: OnKey -----------------------------------------
    function HitKey:OnKey(_keycode, _shift, _ctrl, _alt)
    --~ print('_keycode: '..tostring(_keycode)..', _shift: '..tostring(_shift)..', _ctrl: '..tostring(_ctrl)..', _alt: '..tostring(_alt))  -- DebugToConsole
    
    
    	if tonumber(props['NoPairs.'..props['FileExt']:lower()]) == 1 then return nil end    -- to exclude file-types from this function
    	if _keycode == 45 then if stateINS == 0 then stateINS = 1 else stateINS = 0 end end  -- on hit INSERT-key change key-state
    	if stateIns == 1 then return nil end                                                 -- INSERT-key in OVERWRITE-mode
    	if tCode[lang]['SHIFT'][_keycode] ~= nil and _shift == true then return EdgeSelection(tCode[lang]['SHIFT'][_keycode]) end
    	if tCode[lang]['CTRL_ALT_SHIFT'][_keycode] ~= nil and _ctrl == true and _alt == true and _shift == true then return EdgeSelection(tCode[lang]['CTRL_ALT_SHIFT'][_keycode]:upper()) end
    	if tCode[lang]['CTRL_ALT'][_keycode] ~= nil and _ctrl == true and _alt == true then return EdgeSelection(tCode[lang]['CTRL_ALT'][_keycode]) end
    	if tCode[lang]['RAW'][_keycode] ~= nil then return EdgeSelection(tCode[lang]['RAW'][_keycode]) end
    	return nil
    end  --> HitKey
    ------------------------------------------------------------------------
    Alles anzeigen

    Über mehrere Zeilen mit einem Rutsch Klammernpaare setzen:
    Zeilen 0 Spalten breit markieren (SHIFT+ALT+n-mal PFEIL_AB) [Blockierte Grafik: http://www.imgbox.de/users/BugFix/edge_emptyblock1.JPG] Schließende Klammer eingeben [Blockierte Grafik: http://www.imgbox.de/users/BugFix/edge_emptyblock2.JPG]

    Blockmarkierung, in jeder Zeile wird am Beginn und am Ende der Markierung mit Gänsefüßchen eingefaßt:
    [Blockierte Grafik: http://www.imgbox.de/users/BugFix/edge_block1.JPG] [Blockierte Grafik: http://www.imgbox.de/users/BugFix/edge_block2.JPG] [Blockierte Grafik: http://www.imgbox.de/users/BugFix/edge_block3.JPG]

    Der markierte Bereich wird mit eckigen Klammern eingefaßt (z.B. um Variablen nachträglich als Arrayinhalt zu deklarieren):
    [Blockierte Grafik: http://www.imgbox.de/users/BugFix/edge_braces1.JPG] [Blockierte Grafik: http://www.imgbox.de/users/BugFix/edge_braces2.JPG] [Blockierte Grafik: http://www.imgbox.de/users/BugFix/edge_braces3.JPG]

    String mit Gänsefüßchen einfassen:
    [Blockierte Grafik: http://www.imgbox.de/users/BugFix/edge_string1.JPG] [Blockierte Grafik: http://www.imgbox.de/users/BugFix/edge_string2.JPG] [Blockierte Grafik: http://www.imgbox.de/users/BugFix/edge_string3.JPG]

    DL bisher: 15

    Dateien

    EdgingSelection[1.6].lua 10,32 kB – 637 Downloads
  • Editfeld mehrzeilig speichern und auslesen

    • BugFix
    • 27. Oktober 2011 um 13:26
    Zitat von mirko2002

    Und das versteh ich nicht.... mein Text kommt ja auch der Editbox,


    Wenn du einen Text aus einer Editbox ausliest, sieht er genau so aus, wie in meinem Beispiel-Text. Nur dass beim Anzeigen in einem Editor natürlich der Editor auch (sinnvollerweise ;)) die Zeichenfolge 'ASCII13 ASCII10', in AutoIt durch das Makro @CRLF vertreten, in einen Zeilenumbruch wandelt.
    Ich hatte diese Textzeile erstellt, damit du die Zeilenumbrüche auch mal bewußt wahrnimmst.

  • Editfeld mehrzeilig speichern und auslesen

    • BugFix
    • 27. Oktober 2011 um 11:46

    Oder so, dann hast du nach dem Lesen einen Text, den du wieder mit GUICtrlSetData in dein Edit einfüge kannst, mit allen Umbrüchen.

    [autoit]

    ; == Bsp. Text mit GuiCtrlRead($edit) gelesen:
    $text = "Zeile 1" & @CRLF & "Zeile 2" & @CRLF & "Zeile 3" & @CRLF & "Zeile 4"

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

    ; == in INI schreiben mit Ersetzen der Umbrüche durch [CRLF]
    IniWrite('INI', 'section', 'key', StringReplace($text, @CRLF, '[CRLF]'))

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

    ; == in INI sthet jetzt: key=Zeile 1[CRLF]Zeile 2[CRLF]Zeile 3[CRLF]Zeile 4
    ; == Beim Lesen:
    $key = IniRead('INI', 'section', 'key', '')
    $key = StringReplace($key, '[CRLF]', @CRLF)

    [/autoit]
  • GUIGetCursorInfo() funktioniert nicht

    • BugFix
    • 26. Oktober 2011 um 16:06

    Wenn der Hover-Effekt eintreten soll, muß die Abfrage der Cursorinfo kontinuierlich in der Schleife erfolgen und nicht erst bei Betätigung des Button. ;)

  • FileselectFolder

    • BugFix
    • 26. Oktober 2011 um 10:37

    Welchen Sinn macht es FileSelectFolder zu nutzen, wenn du den Pfad verwirfst?
    OK, wenn du es willst- einfach den Ordnernamen selektieren:

    [autoit]

    $selected = "C:\bla\blub"
    $folder = StringTrimLeft($selected, StringInStr($selected, '\', 1, -1))

    [/autoit]
  • Selektierten Text aus ComboBox per ENTER und/oder Button starten

    • BugFix
    • 26. Oktober 2011 um 10:30
    Zitat von Mike280399

    Warum würdest Du Hotkey vermeiden ?


    - sind auch wirksam, wenn dein Skript läuft, aber das Fenster nicht aktiv ist
    - es kann leicht zu Konflikten mit HotKeys vom System oder anderen Programmen kommen
    Mit GuiAcceleratorSet ist garantiert, dass der Hotkey ausschließlich in der zugeordneten GUI wirksam ist.
    Definiere mal einen Hotkey mit ENTER und wechsle dann mal parallel in einen Editor zum Schreiben. Bei jedem Zeilenumbruch (Enter) wird der HotKey in deinem Skript aktiviert. ;)
    (Kann man natürlich unterbinden, indem in die HK-Funktion eine Abfrage nach dem aktiven Fenster eingebunden wird).

  • FileClose

    • BugFix
    • 26. Oktober 2011 um 10:16
    Zitat von Ilse

    Es muß doch zuerst das ? Fenster ermittelt werden.

    [autoit]

    Opt("WinTitleMatchMode", 2)

    [/autoit]

    Wenn ich das jetzt gerade richtig im Kopf habe ist Parameter 2 = Erkennung von Teilen des Fenster-Titels
    Dein Fenstertitel ist z.B. "Acrobat Reader - DATEINAME", somit reicht es, wenn du nach "DATEINAME" das Fenster selektierst.

  • Excel Chart UDF - 2013-01-21: Version 0.3.1.1 freigegeben!

    • BugFix
    • 26. Oktober 2011 um 10:12

    Ich habe die Erfahrung gemacht, dass man mit den nativen Objektfunktionen wesentlich effektiver arbeiten kann als mit entsprechenden AutoIt-Umsetzungen. Ich habe zwar auch schon viele Dinge nach AutoIt portiert, muß aber eingestehen, dass in dem Moment, wenn man weiß wie es geht, das Original immer die bessere Wahl ist.
    Z.B. muß ich in einer AutoIt-Funktion (um sie allgemeingültig zu halten) jedesmal eine Fehlerroutine abarbeiten (IsObj.. etc.), das kostet natürlich auch Zeit in der Abarbeitung.
    Wer aber nur mal ein.. zwei Funktionen benötigt, für den sind die Funktionen sicher sehr nützlich.
    Ergo: Ja, es macht sicher Sinn - und sei es nur aufzuzeigen, wie man Objekte anspricht.
    (Falls du noch Zuarbeit benötigst, ich habe sicher noch ein paar Grafik-Exel Umsetzungen rumliegen ;))

  • Großbuchstaben

    • BugFix
    • 26. Oktober 2011 um 10:03

    Lies deine Frage nochmal durch und sag mir, ob du sie verstehst. :wacko:
    Übrigens ist es wesentlicher hilfreicher, wenn du schreiben würdest:
    - Ich habe dieses vor
    - bei Aktion X soll Ereignis Y geschehen
    - versucht habe ich es bisher mit (Skript)

    Bis jetzt habe ich nicht die geringste Vorstellung, was du vorhast.

  • Selektierten Text aus ComboBox per ENTER und/oder Button starten

    • BugFix
    • 26. Oktober 2011 um 09:57

    Hotkey würde ich vermeiden. Erstelle dir ein Dummy-Control

    [autoit]

    GUICtrlCreateDummy

    [/autoit]

    und weise diesem die Funktion mit dem Shellexecute-Aufruf zu über

    [autoit]

    GUISetAccelerators

    [/autoit]
  • Großbuchstaben

    • BugFix
    • 26. Oktober 2011 um 09:51
    Zitat von Zattoo

    das wenn man [Shift] + [a] drückt (=A) auch ein Großes A erkannt wird,


    Was meinst du mit "erkannt wird" ? Das System erkennt doch diese Kombination und schreibt in jedes Edit-Ctrl den Großbuchstaben.
    Einen Hotkey für Großbuchstaben kann es nicht geben, da ja Tastaturwerte rein virtuell sind und aus vorab erfolgten Tastenkombinationen in den eingestellten Tastaturcode übersetzt und dann der virtuelle Tastenwert ausgegeben wird. Es gibt keine Großbuchstaben auf der Tastatur. ;) Diese entstehen immer aus: {SHIFTDOWN}+{Buchstabentaste}+{SHIFTUP}
    Willst du wissen ob eine derartige Kombination gedrückt wurde, mußt du sie also auch detailliert abfragen.
    Wie das geht, darauf gehe ich nicht weiter ein und auch von Anderen wird es dazu sicher keinen Support geben, da wir dann schon in den Grenzbereich zu unseren Forenregeln kommen.

  • Thankomat auf autoit.de

    • BugFix
    • 26. Oktober 2011 um 09:42

    Es gibt keinen Grund diese Diskussion bis zum St. Nimmerleinstag fortzuführen.
    Wir hatten uns mit der Thematik bereits ausgiebig befaßt und sind zu dem Entschluß gekommen, dass wir kein Bedankungsritual einführen wollen. Punkt.

    [CLOSED]

  • Listview Spalten fixieren - jetzt als Funktion

    • BugFix
    • 25. Oktober 2011 um 20:45

    Hi,
    über den Umweg Messageauswertung gibt es ja einen Workaround beim Ändern der Spaltenbreite sofort wieder die Originalbreite zu setzen.

    In der Funktion nutze ich jetzt die ab Vista verfügbare Möglichkeit, ein Flag zum Fixieren der Spaltenbreite zu setzen (oder auch wieder zu löschen).
    Es können wahlweise alle Spalten fixiert werden (Standard) oder einzelne.
    Die Funktion kann mit ID oder Handle des Listview aufgerufen werden.

    _GuiCtrlListView_HeaderItemFix(1.0)
    [autoit]

    #Region - TimeStamp
    ; 2011-10-25 20:39:12 v 1.0
    #EndRegion - TimeStamp

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

    #include-once
    #include <GuiListView.au3>
    #include <HeaderConstants.au3>
    #include <ListViewConstants.au3>
    #include <SendMessage.au3>

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

    ;===============================================================================
    ; Function Name....: _GuiCtrlListView_HeaderItemFix
    ; Description......: Fixiert die Spaltenbreite im Listview für eine oder alle Spalten, der User kann diese nicht ändern
    ; Fixierung läßt sich wieder aufheben
    ; Parameter(s).....: $hWnd Handle/ID des Listview
    ; $iItemIndex 0-basierter SpaltenIndex (-1 Standard, wird für alle Spalten ausgeführt)
    ; $fFixWidth 1 - Standard, Fixierung setzen; 0 - Fixierung aufheben
    ; Requirement(s)...: OS Vista oder höher
    ; Return Value(s)..: Fehler @error Spaltenindex größer als Maximalwert
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GuiCtrlListView_HeaderItemFix($hWnd, $iItemIndex=-1, $fFixWidth=1)
    If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
    Local $hHeader = _SendMessage($hWnd, $LVM_GETHEADER)
    Local $iColumn = _SendMessage($hHeader, $HDM_GETITEMCOUNT)
    Local $iFrom = $iItemIndex, $iTo = $iItemIndex, $iFmt
    If $iItemIndex < 0 Then
    $iFrom = 0
    $iTo = $iColumn -1
    EndIf
    If $iItemIndex > $iColumn -1 Then Return SetError(1,0,-1)
    Local Const $_HDM_GETITEM = 0x120B
    Local Const $_HDM_SETITEM = 0x120C
    Local Const $_HDF_FIXEDWIDTH = 0x0100
    Local $HDITEM = DllStructCreate('uint mask;int cxy;ptr pszText;hwnd hbm;int cchTextMax;int fmt;lparam LPARAM;int iImage;int iOrder;uint type;int_ptr pvFilter;uint state;')
    DllStructSetData($HDITEM, 'mask', BitOR($HDI_FORMAT,$HDI_FILTER,$HDI_TEXT))
    DllStructSetData($HDITEM, 'cchTextMax', 260)
    Local $pszText = DllStructCreate('char[260];')
    If _GUICtrlListView_GetUnicodeFormat($hWnd) Then $pszText = DllStructCreate('wchar[260];')
    DllStructSetData($HDITEM, 'pszText', DllStructGetPtr($pszText))
    For $i = $iFrom To $iTo
    If $fFixWidth Then
    _SendMessage($hHeader, $_HDM_GETITEM, $i, DllStructGetPtr($HDITEM))
    $iFmt = BitOR(DllStructGetData($HDITEM, 'fmt'), BitOR($HDF_OWNERDRAW,$HDF_STRING,$_HDF_FIXEDWIDTH))
    DllStructSetData($HDITEM, 'fmt', $iFmt)
    _SendMessage($hHeader, $_HDM_SETITEM, $i, DllStructGetPtr($HDITEM))
    Else
    _SendMessage($hHeader, $_HDM_GETITEM, $i, DllStructGetPtr($HDITEM))
    $iFmt = DllStructGetData($HDITEM, 'fmt')
    If BitAND($iFmt, $_HDF_FIXEDWIDTH) Then $iFmt = BitXOR($iFmt, $_HDF_FIXEDWIDTH)
    DllStructSetData($HDITEM, 'fmt', $iFmt)
    _SendMessage($hHeader, $_HDM_SETITEM, $i, DllStructGetPtr($HDITEM))
    EndIf
    Next
    EndFunc ;==>_GuiCtrlListView_HeaderItemFix

    [/autoit]

    Dateien

    _GuiCtrlListView_HeaderItemFix[1.0].au3 2,83 kB – 452 Downloads
  • String Wert ungleich Null

    • BugFix
    • 25. Oktober 2011 um 10:43

    Du vergleichst Birnen mit Äpfeln. ;)
    Wenn du prüfen möchtest ob dein String leer ist, dann vergleiche mit einem Leerstring statt mit einem numerischen Wert.

    [autoit]

    If $Value = '' Then ; String ohne Inhalt

    [/autoit]
  • Die word datei im hintergrung beschreiben

    • BugFix
    • 24. Oktober 2011 um 20:09

    Verwende doch mal die Suche.
    Sichtbarkeit des Objekts setzt du ganz einfach mit:

    [autoit]

    $object.visible = 0 ; 1 = sichtbar

    [/autoit]
  • Get Control Style

    • BugFix
    • 24. Oktober 2011 um 11:22

    OK, hab ich voll übersehen :D
    Danke.

  • Get Control Style

    • BugFix
    • 24. Oktober 2011 um 10:42

    Ich habe nun schon ..zig Foren durchforstet, kenne MSDN bald auswendig (:D) und bin doch keinen Schritt weiter.
    Mein Problem: Wo zum Teufel speichert Windows die Styles für Controls?! ;(
    Style und ExStyle für Fenster sind mit GUIGetStyle() abfragbar. Und genauso sollte doch auch ein GUICtrlGetStyle möglich sein.
    Leider ist das nicht der Fall. Für einige wenige Control gibt es Funktionen um Style und/oder ExStyle abzufragen.
    Falls ihr euch fragt, wozu das gut sein soll - wenn man eine UDF erstellt, die bestimmte Styles erfordert bzw. bestimmte Styles ausschließt muß ich schon den Style des Controls kennen um notwendige Styles noch zu setzen (wobei das nicht vorrangig ist, da BitOr($oldStyle, $Style) sich nicht dran stört, wenn der Style bereits vorhanden ist) oder viel wichtiger zu entfernen (mit BitXOr($oldStyle, $Style) würde ich den ungewollten Style ja setzen, falls gar nicht vorhanden).
    Da das AutoIt-Window-Info-Tool die Styles auslesen kann, muß es ja einen Weg geben. - Wer kennt ihn?

  • OwnLVSelection - UDF für eigene Färbung der Selektion in Listviews

    • BugFix
    • 24. Oktober 2011 um 00:52

    Hi,
    nach der FormatListview-UDF gibt es jetzt wieder etwas "Listviewmalerei". :D
    Den meisten von euch wird die monotone blaue Färbung von selektierten Listviewitem wohl auch nicht so gefallen. Ich habe nun eine UDF erstellt mit der man das für ein (bis 40 beliebig viele) Listview einer GUI völlig separat gestalten kann. Das basiert auf einem Workaround von Achilles aus dem Jahr 2008. Aber außer mir hatte wohl noch niemand Interesse, das in eine vernünftig zu händelnde Funktion zu packen.
    - Die verwendeten Listview müssen zwingend mit "GuiCtrlCreateListView" erstellt werden! Nur so gibt es eine ID, auf die auch aus der UDF heraus zugegriffen werden kann.
    - Wird ein Listview-Style bei der Erstellung des LV gesetzt, so ist dieser beim Registrieren des LV mit an die UDF zu übergeben (Ausnahme: Default-Style)
    - Für jedes registrierte Listview können eigene Selektionsfarben (Text/Hintergrund) gesetzt werden.
    - Die Standardfarben der Listview der GUI (gültig für alle registrierten LV) lassen sich ebenfalls setzen.
    - Es können registrierte LV auch wieder zurückgesetzt werden, sie erhalten dann die Standardfarben. werden dann wieder vom System gezeichnet und verhalten sich entsprechend (grau bei Fokusverlust). Der Style wird zurückgesetzt auf den Style bei Erstellung.
    Ein entscheidender Vorteil dieser Variante ist (wie ihr auf dem Bild sehen könnt): Auch nach Fokusverlust bleibt die Selektionsfärbung erhalten.

    Edit 24.10.2011: Kleine Änderungen - s. durchgestrichene bzw. blaue Bereiche in der Beschreibung vorab.

    OwnLVSelection(1.2).au3
    [autoit]

    #Region - TimeStamp
    ; 2011-10-24 12:05:40 v 1.2
    #EndRegion - TimeStamp
    #include-once
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>

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

    Global Const $ODT_LISTVIEW = 102
    Global Const $ODA_DRAWENTIRE = 0x1
    Global Const $ODS_SELECTED = 0x0001

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

    ;===============================================================================
    ; Function Name....: _GuiCtrlListview_OwnSelectionAdd
    ; Description......: Registriert ein Listview für eigene Selektion
    ; Parameter(s).....: $hWnd Handle (oder ID) des Listview
    ; Requirement(s)...: Das Listview MUSS ZWINGEND mit "GuiCtrlCreateListView" erstellt werden!
    ; Return Value(s)..: Fehler @error - Handle/ID nicht vorhanden
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GuiCtrlListview_OwnSelectionAdd($hWnd)
    Local $ret = __ManageSelection('add', $hWnd)
    If @error Then Return SetError(1)
    EndFunc ;==>_GuiCtrlListview_OwnSelectionAdd

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

    ;===============================================================================
    ; Function Name....: _GuiCtrlListview_OwnSelectionDel
    ; Description......: Listview nicht mehr in eigener Selektion zeichnen
    ; Selektion wird wieder vom System gezeichnet, graut aus bei Fokusverlust
    ; Parameter(s).....: $hWnd Handle (oder ID) des Listview
    ; Return Value(s)..: Fehler @error - 1 Handle/ID nicht vorhanden
    ; 2 Handle/ID nicht registriert
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GuiCtrlListview_OwnSelectionDel($hWnd)
    Local $ret = __ManageSelection('del', $hWnd)
    If @error Then Return SetError(@error)
    EndFunc ;==>_GuiCtrlListview_OwnSelectionDel

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

    ;===============================================================================
    ; Function Name....: _GuiCtrlListview_OwnSelectionSetColor
    ; Description......: Text- und Hintergrundfarbe für die Selektion setzen
    ; Parameter(s).....: $hWnd Handle (oder ID) des Listview (-1 setzt die Farben für alle registrierten Listview)
    ; $iForeColor Textfarbe der Selektion (-1 setzt Default-Color)
    ; $iBackColor Hintergrundfarbe der Selektion (-1 setzt Default-Color)
    ; Return Value(s)..: Fehler @error - 1 Handle/ID nicht vorhanden
    ; 2 Handle/ID nicht registriert
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GuiCtrlListview_OwnSelectionSetColor($hWnd=-1, $iForeColor=-1, $iBackColor=-1)
    Local $aParam[3] = [$hWnd, $iForeColor, $iBackColor]
    Local $ret = __ManageSelection('setcol', $aParam)
    If @error Then Return SetError(@error)
    EndFunc ;==>_GuiCtrlListview_OwnSelectionSetColor

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

    ;===============================================================================
    ; Function Name....: _GuiCtrlListview_OwnSelectionSetDefCol
    ; Description......: Setzen der Standardfarben (nicht selektierter Bereich) für alle Listview
    ; Parameter(s).....: $iForeColor Textfarbe nicht selektierter Bereich (Standard: schwarz)
    ; $iBackColor Hintergrundfarbe nicht selektierter Bereich (Standard: weiß)
    ; Return Value(s)..: keiner
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _GuiCtrlListview_OwnSelectionSetDefCol($iForeColor=0xFFFFFF, $iBackColor=0x000000)
    Local $aParam[2] = [$iForeColor, $iBackColor]
    __ManageSelection('defcol', $aParam)
    EndFunc ;==>_GuiCtrlListview_OwnSelectionSetDefCol

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

    ;===============================================================================
    ; Function Name....: Hilfsfunktion - __ManageSelection
    ; Description......: Verwaltung der Einstellungen
    ;===============================================================================
    Func __ManageSelection($sAction, $vParam='')
    Local Static $aHwnd[40][4], $iCurr = -1 ; [[hWnd, TxtCol, BackCol, OldStyle]]
    Local Static $aDefCol[2] = [0x000000,0xFFFFFF]
    Local $hLV, $index, $iFrom = 0, $iTo = $iCurr, $iStyle
    Switch $sAction
    Case 'add'
    $hLV = $vParam
    If Not IsHWnd($hLV) Then $hLV = GUICtrlGetHandle($hLV)
    If Not IsHWnd($hLV) Then Return SetError(1)
    If $iCurr = -1 Then GUIRegisterMsg($WM_DRAWITEM, "WM_DRAWITEM")
    $iCurr += 1
    If $iCurr > 39 Then ReDim $aHwnd[$iCurr+1][4]
    $aHwnd[$iCurr][0] = $hLV
    $iStyle = GUICtrlGetStyle($hLV)
    $iStyle = Hex($iStyle[0],4)
    $aHwnd[$iCurr][3] = $iStyle
    GUICtrlSetStyle(_WinAPI_GetDlgCtrlID($hLV), BitOR($iStyle,$LVS_REPORT,$LVS_OWNERDRAWFIXED))
    Case 'del'
    $hLV = $vParam
    If Not IsHWnd($hLV) Then $hLV = GUICtrlGetHandle($hLV)
    If Not IsHWnd($hLV) Then Return SetError(1)
    $index = _ArraySearch($aHwnd, $hLV)
    If @error Then Return SetError(2)
    ; == Standardfarbe Systemmarkierung und Standardverhalten (Ausgrauen bei Fokusverlust)
    GUICtrlSetStyle(_WinAPI_GetDlgCtrlID($hLV), '0x' & $aHwnd[$index][3])
    $aHwnd[$index][0] = 0
    Case 'setcol'
    $hLV = $vParam[0]
    If $hLV <> -1 Then ; == -1 alle Werte setzen
    If Not IsHWnd($hLV) Then $hLV = GUICtrlGetHandle($hLV)
    If Not IsHWnd($hLV) Then Return SetError(1)
    $index = _ArraySearch($aHwnd, $hLV)
    If @error Then Return SetError(2)
    $iFrom = $index
    $iTo = $index
    EndIf
    If $iCurr < 0 Then Return SetError(2) ; == noch kein Fenster registriert
    If $vParam[1] = -1 Then $vParam[1] = $aDefCol[0]
    If $vParam[2] = -1 Then $vParam[2] = $aDefCol[1]
    For $i = $iFrom To $iTo
    $aHwnd[$i][1] = RGB2BGR($vParam[1])
    $aHwnd[$i][2] = RGB2BGR($vParam[2])
    Next
    Case 'getcol'
    $index = _ArraySearch($aHwnd, $vParam)
    If @error Then Return SetError(1)
    Local $aRet[2] = [$aHwnd[$index][1],$aHwnd[$index][2]]
    Return $aRet
    Case 'defcol'
    $aDefCol[0] = RGB2BGR($vParam[0])
    $aDefCol[1] = RGB2BGR($vParam[1])
    Case 'getdef'
    Return $aDefCol
    EndSwitch
    EndFunc

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

    Func RGB2BGR($iColor)
    Local $sH = Hex($iColor,6)
    Return '0x' & StringRight($sH, 2) & StringMid($sH,3,2) & StringLeft($sH, 2)
    EndFunc

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

    Func WM_DRAWITEM($hWnd, $Msg, $wParam, $lParam)
    Local $tDRAWITEMSTRUCT, $iBrushColor, $cID, $itmID, $itmAction, $itmState, $hItm, $hDC, $bSelected, $aCol, $aDefCol
    $tDRAWITEMSTRUCT = DllStructCreate("uint cType;uint cID;uint itmID;uint itmAction;uint itmState;" & _
    "hwnd hItm;hwnd hDC;int itmRect[4];dword itmData", $lParam)
    If DllStructGetData($tDRAWITEMSTRUCT, "cType") <> $ODT_LISTVIEW Then Return $GUI_RUNDEFMSG
    $cID = DllStructGetData($tDRAWITEMSTRUCT, "cID")
    $itmID = DllStructGetData($tDRAWITEMSTRUCT, "itmID")
    $itmAction = DllStructGetData($tDRAWITEMSTRUCT, "itmAction")
    $itmState = DllStructGetData($tDRAWITEMSTRUCT, "itmState")
    $hItm = DllStructGetData($tDRAWITEMSTRUCT, "hItm")
    $hDC = DllStructGetData($tDRAWITEMSTRUCT, "hDC")
    $aCol = __ManageSelection('getcol', $hItm)
    $aDefCol = __ManageSelection('getdef')
    If @error Then Return $GUI_RUNDEFMSG
    $bSelected = BitAND($itmState, $ODS_SELECTED)

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

    Switch $itmAction
    Case $ODA_DRAWENTIRE
    If $itmState = $bSelected Then
    $iBrushColor = $aDefCol[1]
    _WinAPI_SetTextColor($hDC, $aDefCol[0])
    Else
    $iBrushColor = $aCol[1]
    _WinAPI_SetTextColor($hDC, $aCol[0])
    EndIf
    Local $aBrush = DLLCall("gdi32.dll","hwnd","CreateSolidBrush", "int", $iBrushColor)
    Local $aBrushOld = _WinAPI_SelectObject($hDC, $aBrush[0])
    _WinAPI_FillRect($hDC, DllStructGetPtr($tDRAWITEMSTRUCT, "itmRect"), $aBrush[0])
    _WinAPI_SelectObject($hDC, $aBrushOld)
    _WinAPI_DeleteObject($aBrush[0])
    ; == Item
    Local $itmText = _GUICtrlListView_GetItemText($hItm, $itmID)
    DllStructSetData($tDRAWITEMSTRUCT, "itmRect", DllStructGetData($tDRAWITEMSTRUCT, "itmRect", 1) +5, 1) ; == Schrift 5px nach rechts
    DllStructSetData($tDRAWITEMSTRUCT, "itmRect", DllStructGetData($tDRAWITEMSTRUCT, "itmRect", 2) +2, 2) ; == Schrift 2px nach unten
    DllCall("user32.dll", "int", "DrawText", "hwnd", $hDC, "str", $itmText, "int", StringLen($itmText), _
    "ptr", DllStructGetPtr($tDRAWITEMSTRUCT, "itmRect"), "int", $DT_LEFT)
    ; == SubItem
    Local $iCol = _GUICtrlListView_GetColumnCount($hItm)
    If $iCol > 1 Then
    For $i = 1 To $iCol -1
    Local $iSubItmText = _GUICtrlListView_GetItemText($hItm, $itmID, $i)
    Local $aSubItmRect = _GUICtrlListView_GetSubItemRect($hItm, $itmID, $i)
    Local $iSubItmRect = DllStructCreate("int[4]")
    DllStructSetData($iSubItmRect, 1, $aSubItmRect[0] +5, 1)
    DllStructSetData($iSubItmRect, 1, $aSubItmRect[1] +2, 2)
    DllStructSetData($iSubItmRect, 1, $aSubItmRect[2], 3)
    DllStructSetData($iSubItmRect, 1, $aSubItmRect[3], 4)
    DllCall("user32.dll", "int", "DrawText", "hwnd", $hDC, "str", $iSubItmText, "int", StringLen($iSubItmText), _
    "ptr", DllStructGetPtr($iSubItmRect), "int", $DT_LEFT)
    Next
    EndIf
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc

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

    ; #FUNCTION# =========================================================================================================
    ; Name...........: GUICtrlGetStyle
    ; Description ...: Retrieves the Styles/ExStyles value(s) of the control.
    ; Syntax.........: GUICtrlGetBkColor($iControlID)
    ; Parameters ....: $iControlID - A valid control ID.
    ; Requirement(s).: v3.3.2.0 or higher
    ; Return values .: Success - Returns an Array[2] = [Style, ExStyle] with the Styles/ExStyles value(s).
    ; Failure - Returns an Array with -1 as the 0 & 1 Index's.
    ; Author ........: guinness & additional information from Melba23.
    ; Example........; Yes
    ;=====================================================================================================================
    Func GUICtrlGetStyle($iControlID)
    Local $aArray[2] = [-1, -1], $aExStyle, $aStyle, $hControl = $iControlID
    If Not IsHWnd($hControl) Then $hControl = GUICtrlGetHandle($iControlID)
    $aStyle = DllCall("user32.dll", "long", "GetWindowLong", "hwnd", $hControl, "int", 0xFFFFFFF0)
    If Not @error Then
    $aArray[0] = $aStyle[0]
    EndIf
    $aExStyle = DllCall("user32.dll", "long", "GetWindowLong", "hwnd", $hControl, "int", 0xFFFFFFEC)
    If Not @error Then
    $aArray[1] = $aExStyle[0]
    EndIf
    Return $aArray
    EndFunc ;==>GUICtrlGetStyle

    [/autoit]
    OwnLVSelection_Bsp(0.2).au3
    [autoit]

    #Region - TimeStamp
    ; 2011-10-24 00:42:01 v 0.2
    #EndRegion - TimeStamp
    #include <GuiListView.au3>
    #include "OwnLVSelection.au3"

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

    $gui = GUICreate('Bsp. OwnLVSelection', 430, 300)
    $cLV1 = GuiCtrlCreateListView('Spalte 1|Spalte 2', 10, 10, 200, 135)
    $hLV1 = GUICtrlGetHandle($cLV1)
    For $i = 1 To 20
    $index = _GUICtrlListView_AddItem($hLV1, 'Item-' & $i)
    _GUICtrlListView_AddSubItem($hLV1, $index, 'Item-' & $i & '-2', 1)
    Next
    _GuiCtrlListview_OwnSelectionAdd($hLV1)
    _GuiCtrlListview_OwnSelectionSetColor($hLV1, 0xFF55AA, 0xFFFF00)

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

    $cLV2 = GuiCtrlCreateListView('Spalte 1|Spalte 2', 220, 10, 200, 135)
    $hLV2 = GUICtrlGetHandle($cLV2)
    For $i = 1 To 20
    $index = _GUICtrlListView_AddItem($hLV2, 'Item-' & $i)
    _GUICtrlListView_AddSubItem($hLV2, $index, 'Item-' & $i & '-2', 1)
    Next
    _GuiCtrlListview_OwnSelectionAdd($hLV2)
    _GuiCtrlListview_OwnSelectionSetColor($hLV2, 0xFFFFFF, 0x0000FF)

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

    $cLV3 = GuiCtrlCreateListView('Spalte 1|Spalte 2', 10, 155, 200, 135)
    $hLV3 = GUICtrlGetHandle($cLV3)
    For $i = 1 To 20
    $index = _GUICtrlListView_AddItem($hLV3, 'Item-' & $i)
    _GUICtrlListView_AddSubItem($hLV3, $index, 'Item-' & $i & '-2', 1)
    Next
    _GuiCtrlListview_OwnSelectionAdd($hLV3)
    _GuiCtrlListview_OwnSelectionSetColor($hLV3, 0x222222, 0xCCCCCC)

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

    $cLV4 = GuiCtrlCreateListView('Spalte 1|Spalte 2', 220, 155, 200, 135)
    $hLV4 = GUICtrlGetHandle($cLV4)
    For $i = 1 To 20
    $index = _GUICtrlListView_AddItem($hLV4, 'Item-' & $i)
    _GUICtrlListView_AddSubItem($hLV4, $index, 'Item-' & $i & '-2', 1)
    Next
    _GuiCtrlListview_OwnSelectionAdd($hLV4)
    _GuiCtrlListview_OwnSelectionSetColor($hLV4, 0x1111FF, 0x00BBBB)

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

    GUISetState()

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

    Sleep(5000)
    _GuiCtrlListview_OwnSelectionDel($hLV4)

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

    Do
    Until GUIGetMsg() = -3

    [/autoit]


    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Dateien

    OwnLVSelection_Bsp[0.2].au3 1,74 kB – 345 Downloads ownlvselection.JPG 44,65 kB – 0 Downloads OwnLVSelection[1.2].au3 10,74 kB – 377 Downloads
  • _GuiCtrlListView_SetFocusSelected

    • BugFix
    • 23. Oktober 2011 um 17:32

    Ich fand es schon immer nervig, dass ich im Listview bei Selektion eines Item 5 Befehle (inkl. UpdateLV) ausführen muß, damit es aussieht, wie von Hand geklickt den Fokus hat und garantiert sichtbar ist. :wacko:
    Und deshalb habe ich die 5 Aufrufe in eine Funktion gepackt. Die Anwendung bedarf wohl keiner weiteren Erläuterung. ;)

    [autoit]

    Func _GuiCtrlListView_SetFocusSelected($hWnd, $iIndex=0)
    _GUICtrlListView_BeginUpdate($hWnd)
    _GUICtrlListView_SetItemState($hWnd, $iIndex, $LVIS_FOCUSED, $LVIS_FOCUSED)
    _GUICtrlListView_SetItemState($hWnd, $iIndex, $LVIS_SELECTED, $LVIS_SELECTED)
    _GUICtrlListView_EnsureVisible($hWnd, $iIndex)
    _GUICtrlListView_EndUpdate($hWnd)
    EndFunc

    [/autoit]
  • Skript gesucht - Deklarierung

    • BugFix
    • 22. Oktober 2011 um 16:45

    Ich hatte ein Skript geschrieben, um ungenutzte Variablen zu ermitteln.
    Es läßt sich aber auch nutzen, um alle Variablen des Skriptes und deren Vorkommen (Funktion, außerhalb Funktion) anzuzeigen.
    https://autoit.de/index.php?page…7347#post217347

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™