GUICtrlDelete($AObj1_ctrl) funktinoniert. Manchmal kanns auch einfach sein. Vielen Dank für den Tipp.
Kann es sein, dass die Handles, zurückgegeben von GUICreate-Funktionen, per default globale Variablen erzeugen?
Gruß
Martin
GUICtrlDelete($AObj1_ctrl) funktinoniert. Manchmal kanns auch einfach sein. Vielen Dank für den Tipp.
Kann es sein, dass die Handles, zurückgegeben von GUICreate-Funktionen, per default globale Variablen erzeugen?
Gruß
Martin
Hallo,
ich habe eine GUI gebaut, die ein PDF anzeigt. Oben soll eine Reihe von Buttons sein, mit denen man zwischen andere Objekten hin und her schalten kann. Dazu muss ich das PDF aber erstmal wieder von der GUI loswerden. Und das klappt nicht. In anderen Foren haben die Leute das Handle einfach auf 0 gesetzt. Klappt bei mir aber nicht.
$hGUI = GUICreate("myGUI", 1000, 1000, Default, Default, -1)
$hButton1 = GUICtrlCreateButton("Objekt löschen", 5, 5, 90, 25)
; PDF Objekt erstellen
$AObj1 = ObjCreate("AcroPDF.PDF.1")
$AObj1.src= "C:\temp\meinPDF.pdf"
;GUICtrlCreateObj ( ObjectVar, left, top [, width [, height]] )
$AObj1_ctrl = GUICtrlCreateObj($AObj1, 5, 200, 800, 800)
GUISetState(@SW_SHOW)
; Loop until the user exits.
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $idClose
ExitLoop
Case $hButton1
$AObj1 = 0
$AObj1_ctrl = 0
EndSwitch
WEnd
Alles anzeigen
Eine Idee wie man das PDF Objekt wegnehmen kann?
Gruß
Martin
Sieht gut aus! Vielen Dank ihr beiden.
Hier mal meine Komplettlösung, vielleicht hilfts noch jemandem:
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>
#include <ListViewConstants.au3>
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include <Array.au3>
Example()
Func Example()
$iArrayLaenge = 10
Dim $array [$iArrayLaenge][3] = [["Fleisch", "Pute", "Gut durchbraten"], _
["Gemüse", "Karotten", "Färbt die Haut"], _
["Obst","Brombeeren", "Heißen Blackberrys in English"], _
["Gemüse", "Karotten","Augenfreundlich"], _
["Obst", "Apfel", "Nicht zu vergleichen mit Birnen"], _
["Obst", "Apfel", "An Apple a day..."], _
["Fleisch", "Rind", "Die Flamme darf das Fleisch nur küssen"], _
["Fleisch", "Pute","Auf gute Bioqualität achten"], _
["Gemüse", "Gurken", "Scheibchenweise ein Genuss"], _
["Fleisch", "Rind", "Abgrundtief Gut"]]
Global $aI[3]
;order of sorting rows - here row 1, 0
$aI[0] = 0
$aI[1] = 1
$aI[2] = 2
GUICreate("listview items", 620, 450, 100, 200, -1)
;~ _ArrayDisplay($array,"Vor dem Sortieren")
; Array sortieren, $aI gibt die Reihenfolge der Spalten an
_ArraySort_MultiColumn($array, $aI)
;~ _ArrayDisplay($array, "Nach dem Sortieren")
Local $idListview = GUICtrlCreateListView("Hauptkategorie|Unterkategorie|Betreff ", 10, 10, 600, 250)
Local $idButton = GUICtrlCreateButton("Value?", 75, 370, 70, 20)
_GUICtrlListView_SetColumnWidth($idListview, 0, 150)
_GUICtrlListView_SetColumnWidth($idListview, 1, 150)
_GUICtrlListView_SetColumnWidth($idListview, 2, 275)
; ListView mit Daten aus dem Array füllen
for $i=0 to $iArrayLaenge-1 step 1
GUICtrlCreateListViewItem( $array[$i][0] & "|" & $array[$i][1] & "|" & $array[$i][2], $idListview)
Next
Local $idInput = GUICtrlCreateInput("", 20, 300, 150)
; Am Ende Anzeige starten
GUISetState(@SW_SHOW)
; Loop until the user exits.
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $idButton
MsgBox($MB_SYSTEMMODAL, "listview item", GUICtrlRead(GUICtrlRead($idListview)), 2)
Case $idListview
MsgBox($MB_SYSTEMMODAL, "listview", "clicked=" & GUICtrlGetState($idListview), 2)
EndSwitch
WEnd
EndFunc ;==>Example
; #FUNCTION# =============================================================================
; Name.............: _ArraySort_MultiColumn
; Description ...: sorts an array at given colums (multi colum sort)
; Syntax...........: _ArraySort_MultiColumn(ByRef $aSort, ByRef $aIndices)
; Parameters ...: $aSort - array to sort
; $aIndices - array with colum indices which should be sorted in specified order - zero based
; $oDir/$iDir - sort direction - if set to 1, sort descendingly else ascendingly
; Author .........: UEZ
; Version ........: v0.70 build 2013-11-20 Beta
; =========================================================================================
Func _ArraySort_MultiColumn(ByRef $aSort, ByRef $aIndices, $oDir = 0, $iDir = 0)
If Not IsArray($aIndices) Or Not IsArray($aSort) Then Return SetError(1, 0, 0) ;checks if $aIndices is an array
If UBound($aIndices) > UBound($aSort, 2) Then Return SetError(2, 0, 0) ;check if $aIndices array is greater the $aSort array
Local $1st, $2nd, $x, $j, $k, $l = 0
For $x = 0 To UBound($aIndices) - 1 ;check if array content makes sense
If Not IsInt($aIndices[$x]) Then Return SetError(3, 0, 0) ;array content is not numeric
Next
If UBound($aIndices) = 1 Then Return _ArraySort($aSort, $oDir, 0, 0, $aIndices[0]) ;check if only one index is given
_ArraySort($aSort, $oDir, 0, 0, $aIndices[0])
Do
$1st = $aIndices[$l]
$2nd = $aIndices[$l + 1]
$j = 0
$k = 1
While $k < UBound($aSort)
If $aSort[$j][$1st] <> $aSort[$k][$1st] Then
If $k - $j > 1 Then
_ArraySort($aSort, $iDir , $j, $k - 1, $2nd)
$j = $k
Else
$j = $k
EndIf
EndIf
$k += 1
WEnd
If $k - $j > 1 Then _ArraySort($aSort, $iDir, $j, $k, $2nd)
$l += 1
Until $l = UBound($aIndices) - 1
Return 1
EndFunc
Alles anzeigen
Hallo Ihr lieben,
ich habe eine ListView, welche mit unsortieren Daten aus einer Ini Datei gefüttert wird. Vor Anzeige soll diese einmalig sortiert werden, erst Spalte 1, dann Spalte 2, dann Spalte 3 wie es in Excel möglich ist.
Ist das möglich? Wenn ja wie?
Ich habe mal das Bsp aus der Hilfe um ein paar Fantasiedaten erweitert :
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <WindowsConstants.au3>
#include <ListViewConstants.au3>
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
Example()
Func Example()
GUICreate("listview items", 620, 450, 100, 200, -1)
Local $idListview = GUICtrlCreateListView("Hauptkategorie|Unterkategorie|Betreff ", 10, 10, 600, 250)
Local $idButton = GUICtrlCreateButton("Value?", 75, 370, 70, 20)
_GUICtrlListView_SetColumnWidth($idListview, 0, 150)
_GUICtrlListView_SetColumnWidth($idListview, 1, 150)
_GUICtrlListView_SetColumnWidth($idListview, 2, 275)
; Unsortierte Daten
Local $idItem1 = GUICtrlCreateListViewItem("Fleisch|Pute|Gut durchbraten", $idListview)
Local $idItem2 = GUICtrlCreateListViewItem("Gemüse|Karotten|Färbt die Haut", $idListview)
Local $idItem3 = GUICtrlCreateListViewItem("Obst|Brombeeren|Heißen Blackberrys in English", $idListview)
Local $idItem4 = GUICtrlCreateListViewItem("Gemüse|Karotten|Augenfreundlich", $idListview)
Local $idItem5 = GUICtrlCreateListViewItem("Obst|Apfel|Nicht zu vergleichen mit Birnen", $idListview)
Local $idItem6 = GUICtrlCreateListViewItem("Obst|Apfel|An Apple a day...", $idListview)
Local $idItem7 = GUICtrlCreateListViewItem("Fleisch|Rind|Die Flamme darf das Fleisch nur Küssen", $idListview)
Local $idItem8 = GUICtrlCreateListViewItem("Fleisch|Pute|Auf gute Bioqualität achten", $idListview)
Local $idItem9 = GUICtrlCreateListViewItem("Gemüse|Gurken|Scheibchenweise ein Genuss", $idListview)
Local $idInput = GUICtrlCreateInput("", 20, 300, 150)
GUISetState(@SW_SHOW)
; Liste sortieren
_GUICtrlListView_SimpleSort ( $idListview, True, 0 )
; Loop until the user exits.
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $idButton
MsgBox($MB_SYSTEMMODAL, "listview item", GUICtrlRead(GUICtrlRead($idListview)), 2)
Case $idListview
MsgBox($MB_SYSTEMMODAL, "listview", "clicked=" & GUICtrlGetState($idListview), 2)
EndSwitch
WEnd
EndFunc ;==>Example
Alles anzeigen
Ich habe schon eine Weile gegoogelt, bekomme aber nur für mich unverständliche Scripts. Da geht es immer nur darum auf die Spalten überschriften klicken zu können und danach zu sortieren wie es z.b. der Explorer macht. Das will ich aber gar nicht. Nur einmalig sortiert werden soll sie. Die ListView wird später als kleinen Teil eines größeren Script eingefügt, welches über den MessageLoop läuft. Das sollte wenn möglich so beibehalten werden, denn laut Hilfe soll man ja die EventModes nicht mischen.
Ich freue mich auf eure Ideen.
mfg
Martin
Hallo,
eingefügte Objekte werden in eine GUI eingebunden und ... $WS_CLIPCHILDREN should used in GUICreate().
Soll mit Tabs gearbeitet werden muss für jedes TAB eine eigene GUI erzeugt werden.Mit den zahlreichen Beispielen für "TabOnTab" oder "TabInTab" bereitet das Einbinden von PDFs (am besten über IE-Objekt) keine Probleme.
Mfg, Reinhard
Das habe ich leider nicht kapiert. Ich habe es jetzt ganz anders gelöst. Alle Tabs entfernt und eine Tab ählichen Reihe von Buttons erstellt. Bei Klick auf den jeweiligen Button wird das jeweilige gebrauchte GUICtrl erzeugt und alle anderen mit GUICtrlDelete gelöscht. Das ist zwar noobstyle, funktioniert aber.
Trotzdem Danke für die Vorschläge.
Gruß
Maddin
Hi, also wenn ich in meiner Version alle Tab Funktionen auskommentiere, geht es komischerweise. Ich kann in dem PDF herumscrollen, zoomen und trotzdem die GUI verschieben oder schliessen. Das hat irgentwie mit dem Tab zu tun?
Hi,
also auf der Arbeit hab ich Win7 64 bit + Reader x. Zuhause WinXP 32 Bit Acrobat8. Beide zeigen das gleiche Fehlerbild, man sieht die PDF, sobald man ins Fenster klickt, reagiert die GUI und alles drin nicht mehr. Habe trotzdem mal #AutoIt3Wrapper_UseX64=n ausprobiert, hat aber wie schon vermutet nichts gebracht. Ich gehe auch gern ganz andere Wege, Hauptsache es funktioniert am Ende. Wie würde es denn mit Hilfe von embedded-IE + PDF aussehen? Habe über Google zumindest keine Hilfreichen Code Schnipsel mit diesen Keywords gefunden. Ich bin noch nicht so fit in autoIT. Man liest öfter man solle statt Adobe den foxit reader nehmen. Von mir aus auch das, aber ein Beispiel bräuchte ich auch hier.
Hoffe Ihr könnt mir weiterhelfen.
Gruss
Maddin
Hallo Leute,
ich möchte in eine GUI mit mehreren Tabs in einem der Tabs ein PDF einbinden.
[autoit]
#include <GUIConstants.au3>
; GUICreate ( "title" [, width [, height [, left [, top [, style [, exStyle [, parent]]]]]]] )
$Form1 = GUICreate("AForm1", 800, 600,10, 10);522, 529, 236, 125)
; GUICtrlCreateTab ( left, top [, width [, height [, style [, exStyle]]]] )
$Tab1 = GUICtrlCreateTab( 5, 5, 700, 500)
$TabSheet1 = GUICtrlCreateTabItem("Ein vorerst leerer Tab")
$TabSheet2 = GUICtrlCreateTabItem("PDF Tab")
$AObj1 = ObjCreate("AcroPDF.PDF.1")
$AObj1.src= @ScriptDir & "\Test.pdf"
;GUICtrlCreateObj ( ObjectVar, left, top [, width [, height]] )
$AObj1_ctrl = GUICtrlCreateObj($AObj1, 25, 35, 650, 450)
GUICtrlCreateTabItem("") ; Beendet die Tab Definition
GUISetState(@SW_SHOW)
; Der doppelte "Switch" ist eine Vorbereitung für eine 2. GUI
While 1
$nMsg = GUIGetMsg(1)
Switch $nMsg[0]
case $GUI_EVENT_CLOSE
Switch $nMsg[1]
Case $Form1
GUIDelete ($Form1)
ExitLoop
EndSwitch
EndSwitch
sleep (100)
WEnd
Das PDF wird im 2. Tab auch angezeigt, sobald man aber reinklickt, reagiert das Fenster nicht mehr. Man kann es nicht mal verschieben. Es reagiert erst wieder wenn man den Acrobat Reader im Taskmanager killt.
Kann mir einer weiter helfen?
mfg
maddin
Hi, wie kann man sich einen String zusammenbasteln?
Dachte spontan an sowas wie:
Dim $sString1
$sString1="Super"
$sString1=$sString1 + " Forum"
...würde "Super Super" ergeben. Geht aber nicht.
Kann mir jemand helfen?