Checkbox Kayıtlarını kayıt defterinde tutma?

Programlama dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
anxious
Byte2
Byte2
Mesajlar: 96
Kayıt: 11 Mar 2015, 07:56

Checkbox Kayıtlarını kayıt defterinde tutma?

Mesaj gönderen anxious » 20 May 2019, 07:21

@BlueLife
Tıklı olan Dizi halindeki (Array) Checkboxların içindeki isimleri Ahmet-Mehmet-Mustafa
Programı açıp kapatınca hangisinin tıklı olduğunu kayıt defterinde tutmasını istiyorum.
Bir türlü beceremedim :)

Kodlarım:

Kod: Tümünü seç

#RequireAdmin
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 195, 125)
Dim $Checkbox[3]
$Checkbox[0] = GUICtrlCreateCheckbox("Ahmet", 14, 32, 49, 17)
$Checkbox[1] = GUICtrlCreateCheckbox("Mehmet", 68, 32, 49, 17)
$Checkbox[2] = GUICtrlCreateCheckbox("Mustafa", 127, 32, 49, 17)
$Button1 = GUICtrlCreateButton("Kayıt Tut", 14, 70, 75, 34)
GUISetState(@SW_SHOW)

For $reg = 0 To UBound($Checkbox) - 1
If Not RegRead("HKLM\SOFTWARE\isimKayit", "isimler") = "" Then
GUICtrlSetState($Checkbox[$reg], $GUI_CHECKED)
EndIf
Next

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

Case $Button1
For $i = 0 To UBound($Checkbox) - 1
If GUICtrlRead($Checkbox[$i]) = $GUI_CHECKED Then
;~ ConsoleWrite(GUICtrlRead($Checkbox[$i], 1) & @CRLF)
RegWrite('HKLM\SOFTWARE\isimKayit', 'isimler', 'REG_SZ', GUICtrlRead($Checkbox[$i], 1))
EndIf
Next
EndSwitch
WEnd



Kullanıcı avatarı
BlueLife
Byte4
Byte4
Mesajlar: 187
Kayıt: 29 Ağu 2014, 20:42

Re: Checkbox Kayıtlarını kayıt defterinde tutma?

Mesaj gönderen BlueLife » 20 May 2019, 10:17

@anxious

Seçili checkbox ların array sırası reg anahtarında tutulabilir. Başlangıçta hangi sıra regde varsa checkbox işaretlenebilir. Tabi çok farklı örneklerde vermek mümkün. Örneğinde ufak düzeltme yaptım incelersin...

Kod: Tümünü seç

#RequireAdmin
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Local $tRegKey = "HKLM\SOFTWARE\isimKayit"

$Form1 = GUICreate("Form1", 195, 125)
Dim $Checkbox[3]
$Checkbox[0] = GUICtrlCreateCheckbox("Ahmet", 14, 32, 49, 17)
$Checkbox[1] = GUICtrlCreateCheckbox("Mehmet", 68, 32, 49, 17)
$Checkbox[2] = GUICtrlCreateCheckbox("Mustafa", 127, 32, 49, 17)
$Button1 = GUICtrlCreateButton("Kayıt Tut", 14, 70, 75, 34)
GUISetState(@SW_SHOW)

Local $tRegRead = StringStripWS(RegRead($tRegKey, 'Checkbox'), 3)
For $i = 0 To UBound($Checkbox) - 1
	If StringInStr(@LF & $tRegRead & @LF, @LF & $i & @LF) <> 0 Then
		GUICtrlSetState($Checkbox[$i], $GUI_CHECKED)
	EndIf
Next

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

		Case $Button1
			$tRegRead = ""
			For $i = 0 To UBound($Checkbox) - 1
				If BitAND(GUICtrlRead($Checkbox[$i]), 1) <> 0 Then
					$tRegRead &= $i & @LF
				EndIf
			Next
			RegWrite($tRegKey, 'Checkbox', 'REG_MULTI_SZ', $tRegRead)
	EndSwitch
WEnd

anxious
Byte2
Byte2
Mesajlar: 96
Kayıt: 11 Mar 2015, 07:56

Re: Checkbox Kayıtlarını kayıt defterinde tutma?

Mesaj gönderen anxious » 21 May 2019, 06:01

Üstat teşekkür ediyorum örneğiniz için gayet açıklayıcı öğrenmiş oldum.
Birşey dikkatimi çekti ben -> GUICtrlRead($Checkbox[$i], 1) ile okuyabiliyorum.
Siz ise başına BitAND koymuşsunuz -> BitAND(GUICtrlRead($Checkbox[$i]), 1)
Buradaki BitAND tam olarak ne anlam ifade ediyor? ve Checkbox ları okurken herzaman BitAND mı kullanmamız gerekiyor.
Tekrar teşekkürler iyi çalışmalar.

Kullanıcı avatarı
BlueLife
Byte4
Byte4
Mesajlar: 187
Kayıt: 29 Ağu 2014, 20:42

Re: Checkbox Kayıtlarını kayıt defterinde tutma?

Mesaj gönderen BlueLife » 21 May 2019, 11:02

@anxious

GUICtrlRead ve benzeri komutlar ile farlı durumlarda okunabilir. Mesala 1 değilde 3 ( 1 + 2) olarak döndüğünü farzedelim. Bunun içinde 1 de var demektir. Bitand ile varmı yokmu diye kontrol yapmak daha sağlıklı. Yardım dosyasındaki WinGetState örneğini incelersin.

Kod: Tümünü seç

;~  1 = Window exists 
;~  2 = Window is visible 
;~  4 = Window is enabled 
;~  8 = Window is active 
;~  16 = Window is minimized 
;~  32 = Window is maximized 


; Check if a new notepad window is minimized
Local $state = WinGetState("[CLASS:Notepad]", "")

; Is the "minimized" value set?
If BitAND($state, 16) Then
    MsgBox(0, "Example", "Window is minimized")
EndIf

Cevapla