Tema Kaydetme

Programlama dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
darendeli
Byte4
Byte4
Mesajlar: 183
Kayıt: 06 Haz 2016, 16:55

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
Program Yazmanın En Güzel Yanı Birilerinin Bu Programlardan Faydalandığını Görmektir..
Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 215
Kayıt: 29 Ağu 2014, 20:42

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: 183
Kayıt: 06 Haz 2016, 16:55

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
Program Yazmanın En Güzel Yanı Birilerinin Bu Programlardan Faydalandığını Görmektir..
Kullanıcı avatarı
BlueLife
Kilobyte1
Kilobyte1
Mesajlar: 215
Kayıt: 29 Ağu 2014, 20:42

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