(oder GUIRegisterMsg akzeptiert da nur eins^^)
Da mußt du in der Msg-Funktion nach den Listviewhandeln unterscheiden. Dann geht es auch für mehrere LV.
(oder GUIRegisterMsg akzeptiert da nur eins^^)
Da mußt du in der Msg-Funktion nach den Listviewhandeln unterscheiden. Dann geht es auch für mehrere LV.
Schau mal hier nach: ListView - Editieren aller SubItems
Wo finde ich die SciTEUser.properties
Du mußt beim Einfügen per Flag festlegen ob Formel oder Wert eingefügt wird. Du hast richtigerweise 'xlPasteValues' verwendet - aber als String! Hier mußt du natürlich den Wert der Konstanten einfügen ( $xlPasteValues = 0xFFFFEFBD ).
Die Konstanten bekommst du, wenn du in Excel den VBA-Editor öffnest (Alt+F11) und dort den Objektkatalog öffnest (in der Rebar das Symbol, wie ein Pappkarton mit bunten Fetzen drüber
). Dann einfach in das Suchfeld den Namen der Konstanten eingeben.
In der Range-Auswahl hast du noch einen Fehler - du kopierst A1:A3. Das kannst du natürlich nicht in eine Zelle einfügen.
So sollte es funktionieren:
Local Const $xlPasteValues = 0xFFFFEFBD
$oExcel.ActiveSheet.Range("A1").Copy
$oExcel.ActiveSheet.Range("B1").PasteSpecial($xlPasteValues)
Einen Style gibt es nicht.
Verwende WM_MOVE um auf eine Bewegung des Fensters reagieren zu können. Dann kannst du prüfen ob links/rechts/oben/unten die Maße des Desktops überschreitet und das Fenster dann zurückbewegen auf Grenzposition.
Ich mach mal aus Jux mit. Fußball interessiert mich nicht sooo unbedingt. ![]()
Habe aber bereits durchgetippt. Mein Weltmeister steht fest. ![]()
als array in
einer funktion in der dll übergeben
Da vertue ich mich auch meist bei. Es ist sicherlich als Pointer zu übergeben - aber nicht als Pointer-Array, sondern als 'normales' Byte-Array. Versuch mal selbst, ob dir mein Beitrag hier weiterhilft. Ansonsten melde dich wieder (und bitte poste dann mal die Original Funktions- / Parameterbeschreibung).
Hier mal mit Funktion:
[autoit]Local $x1 = 20, $y1 = 10, $x2 = 170, $y2 = 130
[/autoit][autoit][/autoit][autoit]; === Steigung ermitteln:
Local $m = ($y2 -$y1) / ($x2 -$x1) ; = 0,8
; === Prüfen ob Punkt auf Linie
; === x1, y1 und Anstieg sind nun bekannt
; === ein Punkt ist dann auf der Linie, wenn er dieselbe Steigung besitzt ausgehend von denselben Ausgangskoordinaten
Local $testX = 40, $testY = 26
MsgBox(0, '', $testX & ', ' & $testY & ' auf der Linie?' & @CRLF & _PointOnLine($x1, $y1, $x2, $y2, $testX, $testY))
Func _PointOnLine($x1, $y1, $x2, $y2, $PointX, $PointY)
Local $m = ($y2 -$y1) / ($x2 -$x1)
Local $mP = ($PointY -$y1) / ($PointX -$x1)
If $mP = $m Then
Return True
Else
Return False
EndIf
EndFunc
Hier ein Bsp., beachte den Style, wenn du SubItem-Klicks auswerten möchtest.
#include <ListViewConstants.au3>
#include <StructureConstants.au3>
#include<GUIConstantsEx.au3>
#include<WindowsConstants.au3>
#include <GUIListView.au3>
$gui = GUICreate('test')
; === $LVS_EX_FULLROWSELECT zwingend für Itemnotifikation bei SubItemklick!
$hListView = GUICtrlCreateListView('Spalte1|Spalte2', 10, 10, 300, 200, -1, BitOR($LVS_EX_TRACKSELECT,$LVS_EX_FULLROWSELECT))
_GUICtrlListView_SetColumnWidth($hListView, 0, 146)
_GUICtrlListView_SetColumnWidth($hListView, 1, $LVSCW_AUTOSIZE_USEHEADER)
For $i = 1 To 10
GUICtrlCreateListViewItem('Zeile ' & $i & ' Spalte 1|Zeile ' & $i & ' Spalte 2', $hListView)
Next
GUISetState()
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
Do
$msg = GUIGetMsg()
Until $msg = $GUI_EVENT_CLOSE
Func _LeftClick($Info)
MsgBox(0, 'Text in Spalte', _GUICtrlListView_GetItemText($hListView, $Info[0], $Info[1]) )
EndFunc
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView
$hWndListView = $hListView
If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)
$tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Switch $hWndFrom
Case $hWndListView
Switch $iCode
Case $NM_CLICK ; Sent by a list-view control when the user clicks an item with the left mouse button
Local $tInfo = DllStructCreate($tagNMITEMACTIVATE, $ilParam)
Local $aInfo[2] = [DllStructGetData($tInfo, "Index"), _
DllStructGetData($tInfo, "SubItem")]
_LeftClick($aInfo)
EndSwitch
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NOTIFY
Die Komplementärfarbe von blau ist orange.
Jein. ![]()
Komplementärfarben unterliegen keiner wirklichen Gesetzmäßigkeit sondern einem Harmonieempfinden. Datenbanken mit Komplementärfarben sind daher auch nicht frei erhältlich und werden von den Firmen (vor allem im Printbereich) geschützt wie der Augapfel.
Aber dein Ansatz ist ganz praktikabel. ![]()
Versuchs mal so:
[autoit]Func UsbInit()
Local $ret = DllCall('USB2.dll', 'boolean', 'UsbInit', 'byte', 0)
If Not @error Then
Return $ret[0]
Else
Return SetError(@error,0,0)
EndIf
EndFunc
der DevNum muss 0 sein und Byte auch aber das geht nicht so wie ich denke
..und wie hast du es dir gedacht? Ich sehe kein Skript von dir.
Eine Möglichkeit:
Den Bereich in einer RECT-Struktur speichern. (Left,Top,Right,Bottom)
Mit _WinAPI_PtInRECT kannst du abprüfen, ob deine X,Y -Koordinaten innerhalb dieses RECT liegen.
aber mein taskmanager geht noch
Aus dem Snippet kann ich nichts herauslesen. ![]()
Und wie du aus den vorigen Posts entnehmen kannst, scheint es nicht auf allen PC zu laufen (warum auch immer).
Anmerkung von mir:
Bitte wähle eine vernünftige Schriftgröße in deinem Post! Du hast auch in der SB einen generellen Hang groß zu schreiben. Dieses wird aber als "Schreien" empfunden und sollte somit nur in Ausnahmen (z.B. um einen Begriff hervorzuheben) genutzt werden.
Wenn du Funktionen als UDF bezeichnest, sollten sie auch annähernd diesem Standard entsprechen. Dazu gehört u.A. auch eine treffende Funktionsbezeichnung. "AutoIt" davor zu setzen ist völlig überflüssig und wie bereits angeführt ist der Begriff "Objekt" auch fehl am Platze.
Ich möchte deinen Tatendrang nicht bremsen, aber es macht schon Sinn, erst mal die Forumssuche zu nutzen und nachzusehen ob etwas in der Form schon existiert.
Ich hatte dafür mal ein Skriptbeispiel gepostet (auf WinAPI basierend) und in dem Thread findest du auch noch Links zu anderen gleichartigen Lösungen. Auch GDI+ Varianten sind schon als Skript hier im Forum aufgetaucht, einfach mal ein bischen suchen.
Also nicht immer das Fahrrad erneut erfinden. ![]()
Hier mal ohne Gdi
[autoit][/autoit]
$Label = GUICtrlCreateLabel("Dies ist ein Test", 10, 10)
$a = WinGetPos(GUICtrlGetHandle($Label))
$Breite = $a[2]
Damit kannst du definitiv NICHT die tatsächliche Breite des Textes im Label ermitteln, sondern nur die Breite des Labels.
Und das ist im seltensten Fall genauso breit, wie der gesetzte Text. ![]()
Mein Problem dabei ist... dass das Skript es nicht erkennt wenn man auf ein Item drückt... (guictrlsetonevent - verwendet)
... nach möglichkeit bitte kein WM_NOTIFY
Da wirst du aber nicht um WM_NOTIFY herumkommen.
Edit: Wieso machen wir das eigentlich nochmal immer mit BitAND und nicht so?
[autoit]If GUICtrlRead($hCheck) = $GUI_CHECKED Then
[/autoit]
Weil der mit GUICtrlRead($hCheck) ausgelesene Wert nicht NUR $GUI_CHECKED oder $GUI_UNCHECKED sein kann, sondern ein Statuswert ist der noch andere Werte enthalten kann. Um also aus einem Summenwert einen speziellen abzuprüfen ist BitAND(Status, gesuchter_Wert) erforderlich.
Schau dir mal: GUICtrlSetResizing() an.
Funktioniert allerdings nicht mit allen Ctrls zuverlässig.