#1
Napisano 2012.11.07, 17:03
Mam pytanie dotyczące implementacji AlphaSkins we wtyczce. Jest na to jakiś gotowy sposób, czy muszę ręcznie załadować plik skin.asz, posługując się funkcją AQQ_FUNCTION_GETTHEMEDIR?
Pozdrawiam,
Draen
#2
Napisano 2012.11.07, 17:20
sSkinManager1.Active := True; sSkinManager1.SkinDirectory := (PWideChar(WideString(GetThemeDir))); sSkinManager1.SkinName := 'Skin';
Gdzie zmienna GetThemeDir, to ścieżka do aktualnie używanej kompozycji wizualnej (i folderu "Skin") pobrana poprzez AQQ_FUNCTION_GETTHEMEDIR
- Draen lubi to
#3
Napisano 2012.11.07, 17:32
#4
Napisano 2012.11.07, 17:35
#5
Napisano 2012.11.07, 18:14
#6
Napisano 2012.11.07, 18:27
#7
Napisano 2014.05.19, 20:40
Edit: Już sobie poradziłem Po prostu źle dodawałem folder skins:
robiłem tak:
sSkinManager1.SkinDirectory := (PWideChar(WideString(GetThemeDir+'skin\')));
a powinno być tak:
sSkinManager1.SkinDirectory := (PWideChar(WideString(GetThemeDir+'\skin')));
Użytkownik Sauler edytował ten post 2014.05.19, 20:51
#8
Napisano 2014.05.19, 20:57
void __fastcall TSettingsForm::FormCreate(TObject *Sender) { //Wlaczona zaawansowana stylizacja okien if(ChkSkinEnabled()) { UnicodeString ThemeSkinDir = GetThemeSkinDir(); //Plik zaawansowanej stylizacji okien istnieje if(FileExists(ThemeSkinDir + "\\\\Skin.asz")) { //Dane pliku zaawansowanej stylizacji okien ThemeSkinDir = StringReplace(ThemeSkinDir, "\\\\", "\\", TReplaceFlags() << rfReplaceAll); sSkinManager->SkinDirectory = ThemeSkinDir; sSkinManager->SkinName = "Skin.asz"; //Ustawianie animacji AlphaControls if(ChkThemeAnimateWindows()) sSkinManager->AnimEffects->FormShow->Time = 200; else sSkinManager->AnimEffects->FormShow->Time = 0; sSkinManager->Effects->AllowGlowing = ChkThemeGlowing(); //Zmiana kolorystyki AlphaControls sSkinManager->HueOffset = GetHUE(); sSkinManager->Saturation = GetSaturation(); //Aktywacja skorkowania AlphaControls sSkinManager->Active = true; } //Brak pliku zaawansowanej stylizacji okien else sSkinManager->Active = false; } //Zaawansowana stylizacja okien wylaczona else sSkinManager->Active = false; }
oraz
//Pobieranie sciezki do skorki kompozycji UnicodeString GetThemeSkinDir() { return StringReplace((wchar_t*)PluginLink.CallService(AQQ_FUNCTION_GETTHEMEDIR,0,0), "\\", "\\\\", TReplaceFlags() << rfReplaceAll) + "\\\\Skin"; } //Sprawdzanie czy wlaczona jest zaawansowana stylizacja okien bool ChkSkinEnabled() { TStrings* IniList = new TStringList(); IniList->SetText((wchar_t*)PluginLink.CallService(AQQ_FUNCTION_FETCHSETUP,0,0)); TMemIniFile *Settings = new TMemIniFile(ChangeFileExt(Application->ExeName, ".INI")); Settings->SetStrings(IniList); delete IniList; UnicodeString SkinsEnabled = Settings->ReadString("Settings","UseSkin","1"); delete Settings; return StrToBool(SkinsEnabled); } //Sprawdzanie ustawien animacji AlphaControls bool ChkThemeAnimateWindows() { TStrings* IniList = new TStringList(); IniList->SetText((wchar_t*)PluginLink.CallService(AQQ_FUNCTION_FETCHSETUP,0,0)); TMemIniFile *Settings = new TMemIniFile(ChangeFileExt(Application->ExeName, ".INI")); Settings->SetStrings(IniList); delete IniList; UnicodeString AnimateWindowsEnabled = Settings->ReadString("Theme","ThemeAnimateWindows","1"); delete Settings; return StrToBool(AnimateWindowsEnabled); } bool ChkThemeGlowing() { TStrings* IniList = new TStringList(); IniList->SetText((wchar_t*)PluginLink.CallService(AQQ_FUNCTION_FETCHSETUP,0,0)); TMemIniFile *Settings = new TMemIniFile(ChangeFileExt(Application->ExeName, ".INI")); Settings->SetStrings(IniList); delete IniList; UnicodeString GlowingEnabled = Settings->ReadString("Theme","ThemeGlowing","1"); delete Settings; return StrToBool(GlowingEnabled); } //Pobieranie ustawien koloru AlphaControls int GetHUE() { return (int)PluginLink.CallService(AQQ_SYSTEM_COLORGETHUE,0,0); } int GetSaturation() { return (int)PluginLink.CallService(AQQ_SYSTEM_COLORGETSATURATION,0,0); }
Poza tym trzeba też podpiąć się pod notyfikację zmiany kompozycji oraz jej kolorystyki.
#9
Napisano 2014.05.19, 21:04
Właśnie rozwiązałem ten problem poprzez zaglądnięcie do źródeł Twoich wtyczek. A do zmiany kolorystyki już się podpiąłem, została zmiana kompozycji, lecz to nie problem
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych