Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 19:23

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



CreateListViewItem

Discussion on CreateListViewItem within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: May 2009
Posts: 127
Received Thanks: 21
CreateListViewItem

Hey Leuts =)

habe mal wieder ne Frage.
Bin an einem Bot, bzw. eher an einem kleinen Arbeitserleichtere/abnehmer dran =)

Er soll aus 2 Inputs die Daten rauslesen und in 2 verschiedene Spalten in einem ListView packen. Nicht in eine normale Liste.
Gleichzeitig speichert er diese Werte auch in einer Ini und liest diese beim
nächsten Starten des Bottes aus und erstellt sofort die ListView einträge.

Wie kann ich nun bestimmen in welches Spalte er welchen Wert
schreiben soll und wie lese ich später nur einen der beiden werte aus?

Script:

PHP Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Global $Ini = @ScriptDir "\Daten.ini"



$Helper GUICreate("Helper"372344192124)
GUICtrlCreateLabel("Wert1"8163317)
$Input1 GUICtrlCreateInput(""481612121)
GUICtrlCreateLabel("Wert2"200163317)
$Input2 GUICtrlCreateInput(""2401612121)
$ListView1 GUICtrlCreateListView("Wert1|Wert2"872353265)
GUICtrlSendMsg(-1$LVM_SETCOLUMNWIDTH0200)
GUICtrlSendMsg(-1$LVM_SETCOLUMNWIDTH1200)
$Einlesen GUICtrlCreateButton("Die beiden Werte einlesen und auflisten!"84035325)
GUISetState(@SW_SHOW)

$Werte IniReadSection($Ini,"Werte")
If 
not @error Then
For $i 1 To $Werte[0][0]
    
GUICtrlCreateListViewItem($Werte[$i][0],$ListView1)
Next
EndIf

While 
1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$Einlesen 
            GUICtrlCreateListViewItem
(GuiCtrlRead($Input1),$ListView1)
            
IniWrite($Ini,"Werte",GuiCtrlRead($Input1),GuiCtrlRead($Input2))
    EndSwitch
WEnd 
Liebe Grüße
Und vielen Dank *scarface*
*scarface* is offline  
Old 06/09/2011, 23:57   #2
 
BlackHybrid's Avatar
 
elite*gold: 52
The Black Market: 101/0/0
Join Date: Oct 2010
Posts: 1,998
Received Thanks: 389
Schau dir mal die GuiListView.au3 an. Den Wert der einzelnen Spalten kannst du mit GUICtrlSetData(-1,|BlaBla"). Einfach mit | abtrennen.
BlackHybrid is offline  
Thanks
1 User
Old 06/10/2011, 14:19   #3
 
elite*gold: 0
Join Date: May 2009
Posts: 127
Received Thanks: 21
Danke, das hat mir schon weitergeholfen =)

Jedoch noch eine Frage:

PHP Code:
AdlibRegister("CheckEnable",1000)

Func CheckEnable()
    If 
GuiCtrlRead($LvlNot "" And GuiCtrlRead($KaufpreisNot "" Then
        GUICtrlSetState
($Kaufen,$GUI_ENABLE)
    Else
        
GUICtrlSetState($Kaufen,$GUI_DISABLE)
    EndIf
EndFunc 
Gibt es eine einfachere Version zu überprüfen ob ein Input gefüllt ist und wenn ja einen Button Enablen?
*scarface* is offline  
Old 06/10/2011, 15:27   #4
 
Ludder231's Avatar
 
elite*gold: 0
Join Date: Aug 2010
Posts: 880
Received Thanks: 113
Quote:
Originally Posted by *scarface* View Post
Danke, das hat mir schon weitergeholfen =)

Jedoch noch eine Frage:

PHP Code:
AdlibRegister("CheckEnable",1000)

Func CheckEnable()
    If 
GuiCtrlRead($LvlNot "" And GuiCtrlRead($KaufpreisNot "" Then
        GUICtrlSetState
($Kaufen,$GUI_ENABLE)
    Else
        
GUICtrlSetState($Kaufen,$GUI_DISABLE)
    EndIf
EndFunc 
Gibt es eine einfachere Version zu überprüfen ob ein Input gefüllt ist und wenn ja einen Button Enablen?
PHP Code:
Func CheckEnable()
    If 
not GuiCtrlRead($Lvl) = "" or not GuiCtrlRead($Kaufpreis) = "" Then
        GUICtrlSetState
($Kaufen,$GUI_ENABLE)
    Else
        
GUICtrlSetState($Kaufen,$GUI_DISABLE)
    EndIf
EndFunc 
Ludder231 is offline  
Thanks
1 User
Old 06/10/2011, 15:31   #5
 
BlackHybrid's Avatar
 
elite*gold: 52
The Black Market: 101/0/0
Join Date: Oct 2010
Posts: 1,998
Received Thanks: 389
Nur blöd, dass die Funktion ohne AdlibRegister nicht aufgerufen wird.
Eine bessere Alternative wäre GUIRegisterMsg. Allerdings wüsste ich jetzt nicht, welchen Parameter man da nehmen kann.
BlackHybrid is offline  
Thanks
1 User
Old 06/10/2011, 15:42   #6
 
elite*gold: 0
Join Date: May 2009
Posts: 127
Received Thanks: 21
Habe mir mal eben GuiRegisterMSG angeschaut und finde mich in den Window Codes nicht zurecht^^ Wonach sollte ich suchen?

Habe auch schon nen nächstes Problem...

PHP Code:
Func CheckItem()
    
$SelectedItem _GUICtrlListView_GetSelectedIndices($ItemList,1)
    If 
not @error Then 
        GuiCtrlSetData
($Item,"")
        
GuiCtrlSetData($Item,_GUICtrlListView_GetItemText($ItemList,$SelectedItem))
    EndIf
EndFunc 
Diese Funktion rufe ich auch über Adlib auf, genau wie die "CheckEnable" Funktion.
Hierbei soll das ausgewählte Item aus dem Listview in ein Inputfeld kopiert werden sobal eins ausgewälht wurde.
Allerdings nimmt er hier immer nur das erste item...er prüft garnicht welches "selected" ist.

Vielen Dank für eure Hilfe!
Lg Scarface
*scarface* is offline  
Old 06/10/2011, 15:51   #7
 
BlackHybrid's Avatar
 
elite*gold: 52
The Black Market: 101/0/0
Join Date: Oct 2010
Posts: 1,998
Received Thanks: 389
Du kannst aber das ganze auch direkt im dem Listview bearbeiten, dass du die Inputbox nicht brauchst.
BlackHybrid is offline  
Thanks
1 User
Old 06/12/2011, 16:47   #8
 
elite*gold: 0
Join Date: May 2009
Posts: 127
Received Thanks: 21
Wie mache ich das?

Bzw. wo muss ich dafür nach suchen?
*scarface* is offline  
Old 06/12/2011, 17:05   #9
 
BlackHybrid's Avatar
 
elite*gold: 52
The Black Market: 101/0/0
Join Date: Oct 2010
Posts: 1,998
Received Thanks: 389
Kannst du mit dem Style $LVS_EDITLABELS machen. Allerdings ist der Style soweit ich weis nicht funktions tüchtig. Wenn ich nachher Zeit hab poste ich nen anderen Weg.
BlackHybrid is offline  
Thanks
1 User
Old 06/12/2011, 18:24   #10
 
elite*gold: 0
Join Date: May 2009
Posts: 127
Received Thanks: 21
Das wäre echt nett!

Kann ich damit dann einfach ein neues ListView Item erstllen und dann im ListView alle Daten an-/eingeben?
*scarface* is offline  
Old 06/12/2011, 18:27   #11
 
elite*gold: 0
Join Date: May 2009
Posts: 127
Received Thanks: 21
Habe den Stil gerade mal ausprobiert.

Bei meinem Listview[5 Spalten] kann ich die erste Spalte editieren. Jedoch sobal ich Enter drücke wird es wieder in den alten Text umgewandelt.
Bischen doof...habe alle Daten im ListView in einer .ini gespeichert, dort müssten die dann auch direkt bearbeitet werden dann.

Vielen Danke =)
*scarface* is offline  
Old 06/12/2011, 21:41   #12
 
BlackHybrid's Avatar
 
elite*gold: 52
The Black Market: 101/0/0
Join Date: Oct 2010
Posts: 1,998
Received Thanks: 389
So jetzt hab ich zeit :P
Ich hab grad nur ein altes script mit der UDF gefunden.
PHP Code:
#include <StaticConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <ListviewConstants.au3>
#include <GUIListView.au3>
#include <Notify_UDF.au3>

Opt("GUIOnEventMode"1)
$EditBox GUICreate(''20030, -1, -1BitOR($WS_POPUP$WS_BORDER), $WS_EX_TOPMOST)
$dummy GUICtrlCreateDummy()
Global 
$hEdit GUICtrlCreateInput(''5519020$SS_CENTER)
HotKeySet('{ESC}''_EscEdit')
Global 
$AccelKeys[1][2] = [["{ENTER}"$dummy]]
GUICtrlSetOnEvent($dummy"_EditEnter")
GUISetAccelerators($AccelKeys)
guisetstate(@sw_hide)
Global 
$hWndGlobal
Global $currentItem[2]
$main GUICreate(""300590, -1, -1$WS_SYSMENU)
GUISetOnEvent($GUI_EVENT_CLOSE"_CloseMain"$main)
Global 
$ListView1 GUICtrlCreateListView("Links                                    |Anzahl "30183 30235101)
$ListViewItem1_1 GUICtrlCreateListViewItem("Link 1|1"$ListView1)
$ListViewItem1_2 GUICtrlCreateListViewItem("Link 2|1"$ListView1)
$ListViewItem1_3 GUICtrlCreateListViewItem("Link 3|1"$ListView1)
$ListViewItem1_4 GUICtrlCreateListViewItem("Link 4|1"$ListView1)
guisetstate()
_Notify_SetNotifytoFunc($ListView1$NM_DBLCLK"_NM_DBLCLK")
_StartUp_Notify()

Func _CloseMain()
    Exit
EndFunc   ;==>_CloseMain

While 1

WEnd

Func _NM_DBLCLK
($hWndFrom$iIDFrom$iNotifyCode$wParam$lParam)

    
Local $tInfo DllStructCreate($tagNMITEMACTIVATE$lParam), $tNMHDR
    $iCode 
DllStructGetData($tNMHDR"Code")
    
Local $Info[5] = [$hWndFrom$iIDFrom$iCodeDllStructGetData($tInfo"Index"), _
            DllStructGetData
($tInfo"SubItem")]
    If 
$Info[3] = -1 Then Return
    
_GUICtrlListView_SetSelectedColumn($Info[1], $Info[4])
    
Local $mouse MouseGetPos(), $posEdit WinGetPos($EditBox)
    
Local $posGUI WinGetPos($main), $posLV ControlGetPos($main''$hWndFrom)
    
Local $colInfo _GUICtrlListView_GetColumn($Info[1], $Info[4]), $sumWidth 0$tmp
    
For $i 0 To $Info[4]
        
$tmp _GUICtrlListView_GetColumn($Info[1], $i)
        
$sumWidth += $tmp[4]
    
Next
    $sumWidth 
-= $colInfo[4]
    
Local $xPos $posGUI[0] + $posLV[0] + $sumWidth
    
If $xPos $colInfo[4] + 10 > @DesktopWidth Then $xPos = @DesktopWidth - ($colInfo[4] + 10)
    If 
$xPos 0 Then $xPos 0
    WinMove
($EditBox''$xPos$mouse[1] - $posEdit[3], $colInfo[4] + 10)
    
GUICtrlSetData($hEdit_GUICtrlListView_GetItemText($Info[1], $Info[3], $Info[4]))
    
$currentItem[0] = $Info[3]
    
$currentItem[1] = $Info[4]
    
GUISetState(@SW_SHOW$EditBox)
    Global 
$hWndGlobal $hWndFrom
EndFunc   
;==>_NM_DBLCLK

Func _EscEdit
()
    
GUISetState(@SW_HIDE$EditBox)
EndFunc   ;==>_EscEdit

Func _EditEnter
()
    
_GUICtrlListView_SetItemText($hWndGlobal$currentItem[0], GUICtrlRead($hEdit), $currentItem[1])
    
GUISetState(@SW_HIDE$EditBox)
EndFunc   ;==>_EditEnter 
Hier die UDF Notify:
BlackHybrid is offline  
Thanks
1 User
Old 06/13/2011, 19:21   #13
 
elite*gold: 0
Join Date: May 2009
Posts: 127
Received Thanks: 21
Wow, danke

Da muss ich mich jetzt erstmal zurechtfinden...

Habe noch eine letzte Bitte...
Kannst du mir ncoh erklären, wie ich überprüfe ob eines meiner gesamten ListViewItems einmal angeklickt wurde?
Daraufhin muss er dieses nämlich auslesen und in ein Input übertragen den man dort editieren kann. So wie ich das gemacht habe, liest er pausenlos welches Item selected ist, und da er dann andauernd den Input aktualisiert, kann man den nicht editieren

Danke =)
*scarface* is offline  
Old 06/13/2011, 19:26   #14
 
BlackHybrid's Avatar
 
elite*gold: 52
The Black Market: 101/0/0
Join Date: Oct 2010
Posts: 1,998
Received Thanks: 389
Wieso willst du den wo anders editieren? Bei dem was ich dir gepostet hab kannst du das direkt über doppelklick bearbeiten. Einfach die UDF in den Include Ordner und los gehts.
Eine bessere und gut aussehendere Lösung gibt es meiner Meinung nicht^^
BlackHybrid is offline  
Old 06/15/2011, 16:33   #15
 
elite*gold: 0
Join Date: May 2009
Posts: 127
Received Thanks: 21
Das stimmt, jedoch brauche ich die daten von einem der ListView Items und die muss ich damit das übersichtlicher wird in einem Input bearbeiten...

Hast du vll Icq oder skype?
Dann kann ich dir mal mein Skript schicken bzw. du hast es einfacher mir zu helfen^^
=)
*scarface* is offline  
Reply




All times are GMT +2. The time now is 19:23.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.