Tema Kaydetme

Programlama ve Script dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
darendeli
Byte4
Byte4
Mesajlar: 195
Kayıt: 06 Haz 2016, 16:55
Teşekkür etti: 1 kez
Teşekkür edildi: 6 kez

Tema Kaydetme

Mesaj gönderen darendeli »

Programa 1 kactane Tema Ekleyecegim..Hangi Tema Secilirse O tema Kayıtlansın istiyorum Reg Kaydını Nasıl Yaptırmam Gerek..

Kod: Tümünü seç

#include <GUIConstantsEx.au3>
#include <ComboConstants.au3>
#include <File.au3>
#include "_UskinLibrary.au3"

_LoadGUI()

While True
	$msg = GUIGetMsg()

	Switch $msg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Combo1
			_SwitchTheme(GUICtrlRead($Combo1))
	EndSwitch
WEnd

Func _LoadGUI()
	Global $GUI = GUICreate("Darendeli Temalar")

	GUICtrlCreateLabel("Tema seçiniz:", 10, 10, 100, 30)
	Global $Combo1 = GUICtrlCreateCombo("",  100, 10, 100, 30, $CBS_DROPDOWNLIST)

	_LoadThemeList()
	GUISetState()
EndFunc

Func _LoadThemeList()
	Local $sComboData, $sParam = "", $aThemes = _FileListToArray(@ScriptDir & "\Themes", "*.msstyles")

	If Not @error Then
		For $i = 1 To $aThemes[0]
			$sComboData = $sComboData & "|" & _PathSplit($aThemes[$i], $sParam, $sParam, $sParam, $sParam)[3]
		Next
		GUICtrlSetData($Combo1, $sComboData)
	EndIf
EndFunc

Func _SwitchTheme($sTheme)
	GUIDelete($GUI)
	_USkin_Exit()
	_Uskin_LoadDLL()
	_USkin_Init(@ScriptDir & "\Themes\" & $sTheme & ".msstyles")
	_LoadGUI()
EndFunc
Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 292
Kayıt: 29 Ağu 2014, 20:42
Teşekkür etti: 46 kez
Teşekkür edildi: 68 kez

Re: Tema Kaydetme

Mesaj gönderen BlueLife »

@darendeli

Kısaca bir reg anahtarı keyi vs. belirler, RegWrite ile seçimi kayıt edip, RegRead ile de önceden kayıt etmiş ayarı okutabilirsin.
Örneğinde ufak düzeltme yaptım. Kurcalarsın...

Kod: Tümünü seç

#include <GUIConstantsEx.au3>
#include <ComboConstants.au3>
#include <File.au3>
#include "_UskinLibrary.au3"

Global $GUI,$Combo1
_LoadGUI()

While True
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Combo1
			_SwitchTheme(GUICtrlRead($Combo1))
	EndSwitch
WEnd

Func _LoadGUI()
	$GUI = GUICreate("Darendeli Temalar",300,500)

	GUICtrlCreateLabel("Tema seçiniz:", 10, 10, 100, 30)
	$Combo1 = GUICtrlCreateCombo("",  100, 10, 100, 30, $CBS_DROPDOWNLIST)

	_LoadThemeList()
	GUISetState()
EndFunc

Func _LoadThemeList()
	Local $sComboData , $aThemes = _FileListToArray(@ScriptDir & "\Themes", "*.msstyles")
	Local $ThemeExt = ".msstyles"
	Local $tExtLen = StringLen($ThemeExt)
	Local $RegTheme = RegRead("HKEY_CURRENT_USER\Software\MyProgram","MyTheme")

	If IsArray($aThemes) Then
		For $i = 1 To $aThemes[0]
			$aThemes[$i] = StringTrimRight($aThemes[$i],$tExtLen)
			$sComboData &= $aThemes[$i] & "|"
			If StringLen($RegTheme) = 0 Then $RegTheme = $aThemes[$i]
		Next
		If StringInStr("|" & $sComboData,"|" & $RegTheme & "|") = 0 THen $RegTheme = $aThemes[1]

		GUICtrlSetData($Combo1, $sComboData,$RegTheme)
		_LoadTheme($RegTheme)
	EndIf
EndFunc

Func _SwitchTheme($sTheme)
	GUIDelete($GUI)
	_USkin_Exit()
	_LoadTheme($sTheme)
	_LoadGUI()
EndFunc

Func _LoadTheme($sTheme)
	_Uskin_LoadDLL()
	_USkin_Init(@ScriptDir & "\Themes\" & $sTheme & ".msstyles")
	RegWrite("HKEY_CURRENT_USER\Software\MyProgram","MyTheme", "REG_SZ", $sTheme)
EndFunc
darendeli
Byte4
Byte4
Mesajlar: 195
Kayıt: 06 Haz 2016, 16:55
Teşekkür etti: 1 kez
Teşekkür edildi: 6 kez

Re: Tema Kaydetme

Mesaj gönderen darendeli »

Örnegi Denedim gui nin Altı Cok uzun oluyor..ilk acılısta Sonra Baska Tema Secilince Düzeliyor Anca
Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 292
Kayıt: 29 Ağu 2014, 20:42
Teşekkür etti: 46 kez
Teşekkür edildi: 68 kez

Re: Tema Kaydetme

Mesaj gönderen BlueLife »

@darendeli

Gui oluşturmadan önce temayı etkinleştirirsen sorunun çözülecektir büyük ihtimal. Kurcalarsın.

Kod: Tümünü seç

#include <GUIConstantsEx.au3>
#include <ComboConstants.au3>
#include <File.au3>
#include "_UskinLibrary.au3"

Global $GUI,$Combo1
_LoadGUI()

While True
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Combo1
			_SwitchTheme(GUICtrlRead($Combo1))
	EndSwitch
WEnd

Func _LoadGUI()
	Local $ThemeList = _LoadThemeList()
	_LoadTheme($ThemeList[1])

	$GUI = GUICreate("Darendeli Temalar",300,500)

	GUICtrlCreateLabel("Tema seçiniz:", 10, 10, 100, 30)
	$Combo1 = GUICtrlCreateCombo("",  100, 10, 100, 30, $CBS_DROPDOWNLIST)
	GUICtrlSetData($Combo1, $ThemeList[0],$ThemeList[1])
	GUISetState()
EndFunc

Func _LoadThemeList()
	Local $aThemes = _FileListToArray(@ScriptDir & "\Themes", "*.msstyles")
	Local $ThemeExt = ".msstyles"
	Local $tExtLen = StringLen($ThemeExt)
	Local $sComboData[2] = ['',RegRead("HKEY_CURRENT_USER\Software\MyProgram","MyTheme")]

	If IsArray($aThemes) Then
		For $i = 1 To $aThemes[0]
			$aThemes[$i] = StringTrimRight($aThemes[$i],$tExtLen)
			$sComboData[0] &= $aThemes[$i] & "|"
			If StringLen($sComboData[1]) = 0 Then $sComboData[1] = $aThemes[$i]
		Next
		If StringInStr("|" & $sComboData[0],"|" & $sComboData[1] & "|") = 0 THen $sComboData[1] = $aThemes[1]
	EndIf
	Return $sComboData
EndFunc

Func _SwitchTheme($sTheme)
	GUIDelete($GUI)
	_USkin_Exit()
	_LoadTheme($sTheme)
	_LoadGUI()
EndFunc

Func _LoadTheme($sTheme)
	If StringLen($sTheme) = 0 Then Return 0
	_Uskin_LoadDLL()
	_USkin_Init(@ScriptDir & "\Themes\" & $sTheme & ".msstyles")
	RegWrite("HKEY_CURRENT_USER\Software\MyProgram","MyTheme", "REG_SZ", $sTheme)
EndFunc
Cevapla

“Programlama ve Script dilleri” sayfasına dön