Ahell

Forum Replies Created

Viewing 11 posts - 61 through 71 (of 71 total)
  • Author
    Posts
  • Ahell
    Participant

    Вот я предпологаю что ннеправельно загружаю наастройки скинов:

    Splash – окно

    Code:
    procedure TSplashForm.FormCreate(Sender: TObject);
    var
    ini: TIniFile;
    begin
    LoadJPEGFromRes('SplashScreen', SplashImage.Picture);
    ini := TIniFile.Create(myDir + 'Data' + 'HLR_Settings.ini');
    try
    //загружаем скины
    SkinManager.SkinDirectory := myDir + 'DataSkins';
    if (GetFileCount(SkinManager.SkinDirectory, '*.asz') > 0) then
    begin
    SkinManager.SkinName := ini.ReadString('Skins', 'SkinName', 'Vienna Ext');
    SkinManager.Saturation := ini.ReadInteger('Skins', 'Saturation', 0);
    SkinManager.HueOffset := ini.ReadInteger('Skins', 'HUEOffset', 0);
    SkinManager.Active := ini.ReadBool('Skins', 'UseSkins', True);
    end
    else
    begin
    SkinManager.Active := False;
    end;
    finally
    ini.Free;
    end;
    end;

    [/spoiler]

    Загрузка настроек программы

    Code:
    procedure LoadSettings;
    begin
    ini := TIniFile.Create(myDir + 'Data' + 'HLR_Settings.ini');
    try
    ….
    //загружаем скины
    MainForm.SkinManager.SkinDirectory := myDir + 'DataSkins'; //myDir = ExtractFilePath(ParamStr(0))
    if (GetFileCount(MainForm.SkinManager.SkinDirectory, '*.asz') > 0) then
    begin
    MainForm.SkinManager.SkinName := ini.ReadString('Skins', 'SkinName', 'Vienna Ext');
    MainForm.SkinManager.Saturation := ini.ReadInteger('Skins', 'Saturation', 0);
    MainForm.SkinManager.HueOffset := ini.ReadInteger('Skins', 'HUEOffset', 0);
    SettingsForm.UseSkinsChk.Checked := ini.ReadBool('Skins', 'UseSkins', True);
    //Перезапуск скинменеджера.. перерисовка скинов.. Др. варианта не нашёл..
    MainForm.SkinManager.Active:=SettingsForm.UseSkinsChk.Checked;
    MainForm.SkinManager.BeginUpdate;
    MainForm.SkinManager.ReloadPackedSkin;
    MainForm.SkinManager.EndUpdate(True,false);
    end
    else
    begin
    SettingsForm.UseSkinsChk.Checked := False;
    SettingsForm.UseSkinsChk.Enabled := False;
    SettingsForm.ErrorBar.Visible := True;
    SettingsForm.ErrorBar.Panels[0].Text := 'Папка dataskins пуста. Скины отключены.';
    MainForm.SkinManager.Active := False;
    end;
    ….

    [/spoiler]

    Может я здесь что-то не так делаю?

    Ahell
    Participant

    Кто-нибудь отпишет?

    Собственно посмотрел, отладчик просит sSkinManager.pas

    далее указывает на модуль Controls:

    Code:
    procedure TWinControl.MainWndProc(var Message: TMessage);
    begin
    try
    try
    WindowProc(Message); //конкретно сюда.
    finally
    FreeDeviceContexts;
    FreeMemoryContexts;
    end;
    except
    Application.HandleException(Self);
    end;
    end;

    сообщение:

    Acces violation at addres “********” in module “hlr.exe” Read of addres 0000000.

    Ahell
    Participant

    Собственно разобрался. Вся ошибка происходит причтении ini файла хатя под отладчиком толком ничего!

    Собствнно как присходит:

    Удаляем ini файл , запускаем программу, идём в настройки и выбираем скин.

    Проблема в том что SknDirectory = пустой строке и тогда при вызове SelectSkin происходит ошибка в функции/процедуре TsSkinManager.GetSkinIndex

    вот загрузка параметров:

    Code:
    procedure LoadSettings;
    begin
    ini := TIniFile.Create(myDir + 'Data' + 'HLR_Settings.ini');
    try
    //чтение главных параметров.
    SettingsForm.AppAutoRunChk.Checked := ini.ReadBool('System', 'AutoRun', False);
    SettingsForm.ShowHintsChk.Checked := ini.ReadBool('System', 'ShowHints', True);

    //загружаем скины
    MainForm.SkinManager.SkinDirectory := myDir + 'DataSkins';
    if not (GetFileCount(MainForm.SkinManager.SkinDirectory, '*.asz') <> 0) then
    begin
    MainForm.SkinManager.SkinName := ini.ReadString('Skins', 'SkinName', 'Vienna Ext');
    MainForm.SkinManager.Saturation := ini.ReadInteger('Skins', 'Saturation', 0);
    MainForm.SkinManager.HueOffset := ini.ReadInteger('Skins', 'HUEOffset', 0);
    SettingsForm.UseSkinsChk.Checked := ini.ReadBool('Skins', 'UseSkins', False);
    SettingsForm.UseSkinsChk.Checked := True;
    //Перезапуск скинменеджера.. перерисовка скинов.. Др. варианта не нашёл..
    MainForm.SkinManager.Active := False;
    MainForm.SkinManager.Active := True;
    end
    else
    begin
    SettingsForm.UseSkinsChk.Enabled := False;
    SettingsForm.UseSkinsChk.Checked := False;
    SettingsForm.ErrorBar.Visible := True;
    SettingsForm.ErrorBar.Panels[0].Text := 'Папка dataskins пуста. Скины отключены.';
    MainForm.SkinManager.Active := False;
    end;


    {Something…}
    finally
    ini.Free;
    end;
    end;

    Ahell
    Participant

    Поможет кто?

    Ahell
    Participant

    Подменил, пересобрал пакеты. Ничего не поуличилось, так и остались английские фразы.

    Ahell
    Participant

    спасибо, второй вопрос решён=)

    Как быть со справкой к компонентам? Может можно хоть где-нибуть почитать о свойствах и методах компонент?

    in reply to: Поддержка FWTrayIcon #43255
    Ahell
    Participant

    Будет ли поддержка?

    in reply to: Забыли про TValueListEditor? #43181
    Ahell
    Participant

    QUOTE (Ahell @ Aug 14 2010, 02:00 PM)
    Вопрос к разработчикам, стандартный компонент TValueListEditor будет поддерживаться?

    ответ будет?

    in reply to: Есть ли поддержка KOL+MCK? #42402
    Ahell
    Participant

    Кто-нибуть ответит?

    Ahell
    Participant

    =) согласен.. можно и так..
    но ведь:

    CODE
    sTrackBar1.enabled:=sRadioButton1.checked;

    на много удобнее…

    Ahell
    Participant

    к примеру это TNT components

Viewing 11 posts - 61 through 71 (of 71 total)