Перейти к содержанию
Fire Monkey от А до Я
  • 0

Загрузка стиля из ресурсов и мерцание формы на Show


ruslan

Вопрос

День добрый. Прошу помощи.

в .dpr файле загружаю стиль из ресурсов таким вот образом:

var
  Style: TFMXObject;
  S_Name: string;
begin
  Style := nil;
  {$IFDEF MSWINDOWS}
     S_name:= 'skin_Jet';
  {$ENDIF}
  
  if S_Name <> '' then
    Style := TStyleManager.LoadFromResource(HInstance, S_Name, RT_RCDATA);
  if Style <> nil then
    TStyleManager.SetStyle(Style);

  Application.Initialize;

  Application.CreateForm(TDM, DM);
//  Application.CreateForm(TfMain, fMain);
  Application.Run;
end.

затем при создании датамодуля создаю форму авторизации и вешаю на нее фрейм:

procedure TDM.DataModuleCreate(Sender: TObject);
var
  f_LoginForm: TForm; // пустая форма авторизации для фрейма
begin
  Init_Settings; // загрузка настроек
  Set_REST_Params; // установка параметров REST-компонентов
  Settings.Load_U_Props; // читаем параметры юзера


  fr_Login:= Tfr_Login.Create(Application); // фрейм с контролами авторизации


  f_LoginForm := TForm.CreateNew(Self); // создаем форму авторизации
  f_LoginForm.Border.Styling := true; // стилизуем бордюры
  f_LoginForm.Width          := Round(fr_Login.Width ) + 30; // подстраиваем размеры формы под фрейм
  f_LoginForm.Height         := Round(fr_Login.Height) + 30;
  f_LoginForm.Position       := TFormPosition.ScreenCenter; // по центру экрана
  f_LoginForm.FormStyle      := TFormStyle.StayOnTop; // поверх окон
  f_LoginForm.BorderStyle:= TFmxFormBorderStyle.Single;


  fr_Login.Parent := f_LoginForm; // фрейм - на форму
  fr_Login.Align  := TAlignLayout.Client;
  fr_Login.Visible:= true;


  fr_Login.ed_Username.Text := Settings.USER_Props.U_Name; // пользователь
  fr_Login.ed_Password.Text := Settings.USER_Props.U_Pass; // пароль
  fr_Login.cb_Save.IsChecked:= Boolean(Settings.USER_Props.U_DoSave); // признак сохранения
  try
    fr_Login.ed_Username.SetFocus; // фокус на "Пользователь"


    Logon_Info.isError:= true;


    f_LoginForm.ShowModal; // !!!!!!!!
  finally
    if f_LoginForm.ModalResult = mrOk then // если залогинился
    begin
      f_LoginForm.Free;


      fMain:= TfMain.Create(Application); // главная форма
      fMain.Show;
    end
    else Application.Terminate; // закрываемся
  end;
end;

и вот. на

f_LoginForm.ShowModal;

форма показывается и есть мерцание. т.е. она не сразу стилизована. сначала виден дефолтный стиль(буквально пол секунды) а потом тот который я подключил перед Application.Initialize

мот я что-то делаю не правильно ? подскажите, а то мерцание глаз мозолит.

Спасибо

p.s. использую Delphi XE6. без Upd1

вот прикрепляю. в .dpr файле подгружаю стиль из ресурсов. при показе формы - моргание

test_proj.zip

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

у меня все так и осталось.

стоит win7 x64. Delphi xe6

завтра поставлю xe7 . проверю

 

п.с. моргание однократное . такое ощущение что форма стилизуется только на OnShow

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...