ListView Tabelle ordnen

10/07/2011 17:08 Elborod#1
ich hab bisher noch nie mit ListViews gearbeitet.

So sieht das ganze derweilen aus:
PHP Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Include <File.au3>
#include <GUiListview.au3>
$Form1_1 GUICreate("Rechner"450446355157)
$Berechnen GUICtrlCreateButton("Berechnen"21615222533)
$Mensur GUICtrlCreateInput("z.B.: 650"376165721)
$Buende GUICtrlCreateInput("z.B.: 21"376405721)
$Edit GUICtrlCreateListView("Bund|Abstand zum Sattel"80202422)
$Bund GUICtrlCreateListViewItem("Bund"$Edit)
$AbstandSattel GUICtrlCreateListViewItem("Abstand zum Sattel"$Edit)
GUICtrlSetState(-1$GUI_DROPACCEPTED)
GUISetState()
GUICtrlSetData($Bund"")
GUICtrlSetData($AbstandSattel"")

While 
1
$nMsg 
GUIGetMsg()
Switch 
$nMsg
Case $GUI_EVENT_CLOSE
Exit


Case 
$Berechnen
            
For $Bundzahl 1 To GUICtrlRead($Buende)
            
Next
                    
            
            Local $a 
GUICtrlRead($Mensur), $b

            
For $i 1 To GUICtrlRead($Buende)
                If 
$i == 1 Then
                    $b 
= ($a / (2^(1/12)))
                Else
                    
$b = ($b / (2^(1/12)))
                EndIf

                
GUICtrlSetData($AbstandSattelRound($a $b2))
            
Next


EndSwitch
WEnd 



Problem Nr. 1.: Irgendwie ist das ganze nicht mehr geordnet.... (vorher im Edit wars von "weniger" nach "mehr")
Problem Nr. 2.: Es wird immer nur der letzte Wert der For§ Schleife angezeigt..


Wie kann ich das ganze "Ordnen"?

Ich wollte eigentlich nur, dass er die Werte einfach auflistet je nachdem welcher Wert im Input steht... in der einen Spalte die Werte einer Rechnung und in der andern ein Name mit einer vorlaufenden Nummer...




Hat schnell jemand eine Antwort parat? :)

Grüße aus Upper Austria
Stoani
10/07/2011 18:47 omer36#2
meinst du so?

PHP Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#include <GUiListview.au3>
$Form1_1 GUICreate("Rechner"450446355157)
$Berechnen GUICtrlCreateButton("Berechnen"21615222533)
$Mensur GUICtrlCreateInput("z.B.: 650"376165721)
$Buende GUICtrlCreateInput("z.B.: 21"376405721)
$Edit GUICtrlCreateListView("Bund|Abstand zum Sattel"80202422)
Dim $inhalt[1]
;~ 
$Bund GUICtrlCreateListViewItem("Bund"$Edit)
;~ 
$AbstandSattel GUICtrlCreateListViewItem("Abstand zum Sattel"$Edit)
GUICtrlSetState(-1$GUI_DROPACCEPTED)
GUISetState()
;~ 
GUICtrlSetData($Bund"")
;~ 
GUICtrlSetData($AbstandSattel"")

While 
1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$Berechnen

            Local $a 
GUICtrlRead($Mensur), $b

            
For $i 1 To GUICtrlRead($Buende)
                If 
$i == 1 Then
                    $b 
= ($a / (^ (12)))
                Else
                    
$b = ($b / (^ (12)))
                EndIf
                
ReDim $inhalt[UBound($inhalt)+1]
                
$inhalt[$i-1] = GUICtrlCreateListViewItem(Round($a $b2), $Edit)
;~                 
GUICtrlSetData($AbstandSattelRound($a $b2))
            
Next


    
EndSwitch
WEnd 
ps: bin mir nicht sicher, ob ich den befehl "ReDim" richtig verwendet habe, also musst mal schauen ob die lösung stimmt, oder ob was fehlt..
10/07/2011 22:51 Elborod#3
Perfekt danke!

Das einzige was noch bleibt ist, dass ich den ganzen Text in der zweiten Spalte bräuchte.

Mit
_GUICtrlListView_AddSubItem
sollte das doch gehen oder?



Grüße
Stoani
10/07/2011 23:06 BlackHybrid#4
Kann man so machen:
PHP Code:
$inhalt[$i-1] = GUICtrlCreateListViewItem("|"&Round($a $b2), $Edit
10/07/2011 23:46 Elborod#5
Also ich habs jetzt so gemacht aber da fängt er erst mit dem Inhalt der 1sten Spalte an wenn der Inhalt der 2ten Spalte endet....

PHP Code:
While 1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$Berechnen

            Local $a 
GUICtrlRead($Mensur), $b

            
For $i 1 To GUICtrlRead($Buende)
                If 
$i == 1 Then
                    $b 
= ($a / (^ (12)))
                Else
                    
$b = ($b / (^ (12)))
                EndIf
                
ReDim $inhalt[UBound($inhalt)+1]
              
$inhalt[$i-1] = GUICtrlCreateListViewItem("|"&Round($a $b2), $Edit)  
            
Next
            
For $o 1 To GUICtrlRead($Buende)
                
GUICtrlCreateListViewItem($o,$Edit
            
Next
    
EndSwitch
WEnd 
10/08/2011 00:26 omer36#6
PHP Code:
While 1
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit
        Case 
$Berechnen

            Local $a 
GUICtrlRead($Mensur), $b

            
For $i 1 To GUICtrlRead($Buende)
                If 
$i == 1 Then
                    $b 
= ($a / (^ (12)))
                Else
                    
$b = ($b / (^ (12)))
                EndIf
                
ReDim $inhalt[UBound($inhalt)+1]
              
$inhalt[$i-1] = GUICtrlCreateListViewItem($i&"|"&Round($a $b2), $Edit)
          
Next

    
EndSwitch
WEnd 
so?
10/08/2011 00:32 Elborod#7
Voll ins Schwarze getroffen! Danke dir!

Solved -> Close pls.

Grüße Stoani