Hallo,
ich habe mit Buttons ein Problem.
Folgendes:
Diese Buttons werden per ini erstellt.
Also erstmal meine Inis (Anhang)
sind im Ordner @ScriptDir & "\ini"
sehen so aus
Spoiler anzeigen
Ini 1
[Namen]
1=Lissi
2=Laury
3=Olga
3=Moni
3=Klara
ini 2
[Namen]
1=Sam
2=Rex
3=Felix
Folgende Probleme bei dem Script
Die Combo liest die Inis ein. OK Das klappt
dann:
1. Ich wähle eine Ini aus (Buttos werden falsch angezeigt!) Ich resize die Form dann sind die Buttons richtig!
2. Ich wähle die 2. Ini aus (Nun müßten die anderen Buttons gelöscht werden! GuiCtrlDelete(das hat nicht geklappt)
autoit.de/wcf/attachment/15546/
Das dritte Problem ist in der Schleife:
aktiviere ich
Case $idButton[0]
dann klappt nichts mehr!
Der Code
Spoiler anzeigen
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <File.au3>
#include <array.au3>
Global $idButton[1], $var
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("Form1", 625, 443, 192, 124, _
BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPCHILDREN, $WS_CLIPSIBLINGS))
$idcbo = GUICtrlCreateCombo("", 12, 8, 145, 25)
GUICtrlSetData(-1, "Auswahl", "Auswahl")
$aInis = _FileListToArray(@ScriptDir & "\ini", "*.ini", 1)
If IsArray($aInis) Then
For $i = 0 To $aInis[0]
GUICtrlSetData($idcbo, StringTrimRight($aInis[$i], 4))
Next
EndIf
GUIRegisterMsg($WM_SIZE, "OnSize")
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch ($nMsg)
Case $GUI_EVENT_CLOSE
Exit
;Case $idButton[0] To $idButton[UBound($idButton) - 1]
;MsgBox(4096, "", StringFormat("Es wurde eine Schaltfläche gedrückt.\nID: %d\nText: %s", $nMsg, GUICtrlRead($nMsg)))
Case $idcbo
_Daten()
EndSwitch
WEnd
Func OnSize($hwnd, $message, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]Local $rcClient
Local $cx, $cy
Local $nWidth, $nHeight
Local $cnLoop = 0
Local $cnButtons = UBound($idButton) ; Anzahl der Schaltflächen
Local $nColumns = 2 ; Anzahl der Spalten
Local $nRows = Ceiling($cnButtons / $nColumns) ; Anzahl der Reihen
$cx = 10 ; Abstand links/rechts
$cy = 200 ; Abstand oben
$nWidth = Int(((BitAND($lParam, 0xffff) - $cx * 2) - (22 * ($nColumns - 1))) / ($nColumns))
$nHeight = Int(((BitShift($lParam, 16) - $cy - 10) - (22 * ($nRows - 1))) / $nRows)
For $i = 0 To $nRows - 1
For $j = 0 To $nColumns - 1
If ($cnLoop >= $cnButtons) Then ExitLoop
WinMove(GUICtrlGetHandle($idButton[$cnLoop]), "", $cx, $cy, $nWidth, $nHeight)
$cx += $nWidth + 22
$cnLoop += 1
Next
$cx = 10
$cy += $nHeight + 22
Next
Return 0
[/autoit] [autoit][/autoit] [autoit]EndFunc ;==>OnSize
[/autoit] [autoit][/autoit] [autoit]Func _Daten()
[/autoit] [autoit][/autoit] [autoit]$iniwahl = @ScriptDir & "\ini\" & GUICtrlRead($idcbo) & ".ini"
$var = IniReadSection($iniwahl, "Namen")
ReDim $idButton[$var[0][0]]
For $i = 1 To $var[0][0]
$idButton[$i - 1] = GUICtrlCreateButton($var[$i][1], 0, 0)
Next
[/autoit] [autoit][/autoit] [autoit]EndFunc ;==>_Daten
[/autoit] [autoit][/autoit] [autoit]Func _deleteControl()
For $i = 0 To $var[0][0]
;GUICtrlDelete($var[$i][1]); klappt nicht!
[/autoit] [autoit][/autoit] [autoit]Next
EndFunc ;==>_deleteControl
Ich komme vor lauter Fehlermeldungen nicht mehr weiter.
Da ist der Wurm drin...
Hoffe mal wieder auf Hilfe
Liebe Grüße
Ilse