• 0
Вадим Смоленский

Куда подевался сохраненный стиль?

Вопросы

Работая в Berlin, подправил стиль для одного компонента посредством вызова "Edit Custom Style" во всплывающем меню. Потом перешел на Tokyo; потом поменял компьютер и установил на него Tokyo заново. Сейчас вижу, что компонент отображается в стиле по умолчанию. Никаких сообщений по поводу пропавшего стиля не припомню. Где мне найти и как опять подключить мой отредактированный стиль?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 ответ на этот вопрос

  • 0

чисто в теории у вас на форме должен создаться TStyleBook, где и содержится измененный стиль

один

от смены IDE это не должно зависеть

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Он и есть у меня на форме, как и раньше был. Но теперь он девственно пуст. Загадка...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Вот достаю сейчас бэкапы своего проекта - того времени, когда работал в Berlin и стиль точно уже создал. Открываю в Tokyo - и опять: TStyleBook совершенно пустой. Такое впечатление, что стиль сохранялся не в файлах проекта, а где-то еще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

посмотрите внимательно на комбо-бокс в редакторе стилей, для какой системы там стиль

windows 7 и windows 10 для нее и то разные...

а еще работает copy - paste прямо в fmx

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Ха! Вот, в самом деле, и разгадка. Я ведь забыл упомянуть, что не просто поменял компьютер, а перешел с Windows 7 на Windows 10. В комбо-боксе вижу два варианта: Default (был выбран по умолчанию) и Windows 7. Переключил на Windows 7, и все мои стили стали видны.

Но будьте любезны разъяснить, как эти две установки связаны. Могу ли я, например, находясь под Windows 10, присвоить своим компонентам стили, созданные для Windows 7, чтобы любой пользовательский компьютер их нормально показывал? Или нужно как-то исхитриться и специфицировать стиль отдельно для Windows 7 и 10?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

ну вот как всегда... я переустановил Delphi... и windows снес тоже...

зайдите туда где стиль есть. Ctrl+C. добавьте windows 10 и Ctrl+V

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
1 час назад, krapotkin сказал:

зайдите туда где стиль есть. Ctrl+C. добавьте windows 10 и Ctrl+V

Спасибо, помогло. Правда, пришлось копировать каждый элемент отдельно, все разом не получилось. Проблема остается одна: некоторые стилевые объекты у меня ссылаются на файл Windows 7style.png - а он, похоже, не перенесся. В редакторе стилей всё смотрится хорошо, но в запущенном приложении зияют пустоты. Например, у чекбоксов выводится только текст, а собственно чекбокс не отрисовывается. Где лежит Windows 7style.png, понять не смог. Как поступить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

так у вас кроме ваших кастомных добавок еще и стиль был загружен??

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
48 минут назад, krapotkin сказал:

так у вас кроме ваших кастомных добавок еще и стиль был загружен??

Я пока сильно плаваю в этих вопросах, строго не судите. Мне кажется, никаких специальных стилей я не загружал. Насколько помнится, при редактировании кастомных стилей файл Windows 7style.png предлагался по умолчанию; в некоторых случаях я не нашел там необходимого и нарисовал в отдельном png-файле, который тоже подгрузил. Вот этот новый файл сейчас скопировался в раздел WIndows 10, и всё, что в нем нарисовано, нормально отображается в приложении. А ссылки на файл Windows 7style.png я вижу сейчас только в Object Inspector редактора стилей. Судя по всему, эти ссылки стали нерабочими.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

где вы видите эти файлы ? 

что сейчас есть в редакторе стилей?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

В редакторе стилей панель Structure содержит список стилей, которые я в свое время редактировал под Windows 7 для некоторых компонентов, всякий раз вызывая "Edit Custom Style", и которые сегодня перенес в раздел Windows 10. В этом же списке - имя файла MyStyles.png, который я тогда же создал и в котором рисовал то, чего не находил в уже готовом файле Windows 7style.png. Некоторые из моих стилей - например, стиль для TEdit - ссылаются на MyStyles.png, эта ссылка прописана в поле SourceLookup объекта backround, ее видно в Object Inspector. С этими стилями полный порядок. Но некоторые мои стили - например, стиль для TCheckBox - по-прежнему ссылаются на файл Windows 7style.png, которого в списке нет. Причем, эти ссылки тоже видны в Object Inspector; более того: щелкнув по полю SourceLink, я могу увидеть BitmapLinks Editor с этим файлом и всем его графическим содержимым! Но это содержимое не переносится в мое приложение, от красивого чекбокса остается только текст.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

ну так наверное таким же образом нужно сделать и для windows 10 ?

более того, если программу запустить под win 7 то очевидно все будет как раньше

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Да, видимо, придется так и сделать. Но это все-таки недоработка. В идеале стиль не должен обнуляться при переходе на новую ОС. Ну, или хотя бы разработчик должен заранее знать о таких сюрпризах и изначально ориентироваться на собственные графические файлы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Вынужден взять часть своей критики назад. Мне всего-то и нужно было, что выбрать не "Edit Custom Style", а "Edit Default Style" - тогда новый стиль не был бы привязан к платформе. Не разобрался сразу. Но, думаю, многие согласятся, что разобраться со стилями, как они поданы сейчас, бывает весьма непросто.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

А вот и нет! В этот раз для всех стилизуемых компонентов выбирал "Edit Default Style", работая при этом под Windows 10. Но тестеры, у которых Windows 7, прислали скриншоты, на которых все эти компоненты выглядят как должны выглядеть по умолчанию, безо всякого стиля.

Как быть? Я вот вижу в редакторе стилей выбор платформы. У меня сейчас выбран пункт "Windows 10 Desktop". Кроме него, есть только один пункт, под названием "Default". Его, что ли, нужно дополнительно выбирать всякий раз, когда вызываешь "Edit Default Style"?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 07/01/2018 в 20:57, wamaco сказал:

Ну разумеется!

Перенес все стили из списка "Windows 10 Desktop" туда, где написано "Default". Теперь "Windows 10 Desktop" пустой, все стили в Дефолте. Результат: все контролы отображаются без стилей. Выпадающий список в свойстве StyleLookup нигде моих стилей не показывает. Такое впечатление, что нужно дополнительно указать: мол, стили лежат в разделе "Default". Но где и как это указать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 09.01.2018 в 17:01, Вадим Смоленский сказал:

Перенес все стили из списка "Windows 10 Desktop" туда, где написано "Default". Теперь "Windows 10 Desktop" пустой,

А вы удалите  "Windows 10 Desktop". И что у Вас в дизайнере форм? Я подозреваю, что создана view-шка  "Windows Desktop" и она сильно отличается от "Master". Это тоже может создавать проблемы (я думаю что в этом всё и дело).

Изменено пользователем dnekrasov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
10 минут назад, dnekrasov сказал:

А вы удалите  "Windows 10 Desktop".

Помогло! Надо же, такой простой ход - а вот поди догадайся... Хотя, конечно, нужно еще дождаться скриншотов от тестеров.

Никаких дополнительных вьюшек в дизайнере форм не наблюдаю, только Master.

Огромное спасибо за действенный совет!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
13 минуты назад, Вадим Смоленский сказал:

Никаких дополнительных вьюшек в дизайнере форм не наблюдаю, только Master.

Хм... Странно... Ведь стиль с названием "Windows 10 Desktop" создаётся автоматически именно в момент создания view  "Windows Desktop" 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Думаю, причина в том, что я создавал проект еще под Windows 7. Соответственно, создался стиль под семерку. А на днях, перейдя на десятку, я этот стиль удалил и руками добавил "Windows 10 Desktop". Поэтому дизайнер форм чистый.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Похожий контент

    • От Вадим Смоленский
      Разрабатывая свою софтину, о сенсорных экранах я совсем не думал (отстал от прогресса). Но один тестер сейчас погонял текущую сборку на планшете. Оказалось, что почти всё работает хорошо, но в некоторых местах по нажатию пальцем отрабатывается не OnClick и не OnMouseUp, а почему-то OnMouseMove. Прежде чем изобретать велосипед, хочу спросить у знающих людей: а как вообще лучше организовывать работу с мышью/пальцем, чтобы она одинаково хорошо шла в обоих вариантах? Есть ли здесь четкие рекомендации? Вот, например, я вижу событие OnTap: стоит ли задействовать его? Или это только для мобильных платформ?
    • От Вадим Смоленский
      В своем проекте (это японско-русский словарь) мне приходится выводить на TImage.Bitmap.Canvas хранящиеся в юникоде иероглифы, причем шрифт пользователь может выбрать сам. Столкнулся с неприятным явлением: разные шрифты располагают выводимый символ на разной высоте, в результате чего иероглиф часто не вписывается в предназначенную для него область. По умолчанию принят шрифт Tahoma, с ним всё хорошо:

      Но вот шрифт Yu Mincho:

      А вот, еще хлеще, Kozuka Gothic:

      Вопрос: что за параметр регулирует вертикальное смещение, можно ли его вынуть и с ним работать?
    • От Вадим Смоленский
      Некоторые юзеры (видимо, из близоруких) прибегают к масштабированию экрана и требуют, чтобы ваше приложение тоже масштабировалось. Когда мой проект был в VCL, я смотрел на параметр Screen.PixelsPerInch и учитывал его значение в своем коде. В FireMonkey этого нет. Я пытался понять, как это делать теперь, и окончательно запутался. Microsoft на официальном сайте упоминает функцию SystemParametersInfo с параметром SPI_GETLOGICALDPIOVERRIDE, но делает оговорку, что такую конфигурацию лучше не использовать - дескать, в новых версиях Windows она не будет работать. Взамен рекомендуют функцию GetScaleFactorForDevice, но тут же заявляют, что под Windows 8 и она работать не будет, а будет работать только GetScaleFactorForMonitor. Голова кругом. Нет ли у кого, случаем, готового решения, которое работало бы на любых Windows - хотя бы от семерки до десятки?
      Еще один момент, который я не могу понять - в Windows 10 в настройках экрана, помимо масштаба в процентах, можно выбирать еще и разрешение в пикселях. По-моему, раньше такого разделения не было, хотя могу ошибаться. Связаны ли эти настройки друг с другом? И как они соотносятся со старым добрым DPI?
    • От Вадим Смоленский
      В своем проекте (это японско-русский словарь) я часто вывожу текст на TImage методом TCanvas.FillText, и результат выглядит так:

      Один из тестеров, у которого установлена Windows XP, прислал скриншот того, что выводится у него:

      Ровно такую же безобразную картину я видел у себя, когда, экспериментируя с быстродействием, вставлял в файл dpr операторы  FMX.Types.GlobalUseDX:=False или FMX.Types.GlobalUseDirect2D:=False
      То ли в XP эти установки приняты по умолчанию, то ли так сконфигурирована система у тестера. Первое, что приходит в голову - вставить в код присвоение обеим упомянутым переменным значения True. Но прежде, чем предпринять такую попытку, хотелось бы услышать мнение экспертов. В чем здесь корень зла?
    • От Вадим Смоленский
      Записываю русский текст в файл:
      procedure WriteToFile; var F: TextFile; S: string; begin S:='Русский текст'; AssignFile(F,MyFile.txt'); ReWrite(F); WriteLn(F,S); CloseFile(F); end; Тип данных string - по идее, то же, что WideString. То бишь, в строку S записан юникод. Тем не менее, открывая потом файл, вижу, что русский текст сохранен в ANSI. Как добиться его сохранения в юникоде?
    • От Вадим Смоленский
      Писал на Delphi 10.2 Tokyo под Windows. У тестеров приложение валится при первой же попытке обращения к БД с сообщением "unable to open database file". У меня на компе всё нормально. Файл sqlite3.dll версии 3.21.0.0 в дистрибутив включен, кладется рядом с исполнимым файлом. Что может быть не так?
    • От Вадим Смоленский
      В своем VCL-проекте я использовал оригинальный способ застраховаться от повторного запуска приложения. Обычно это делают через Mutex. Но умные люди на experts-exchange.com много лет назад посоветовали мне следующее:
      // в главном окне: protected procedure CreateParams(var Params: TCreateParams); override; procedure TMyApp.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); Params.WinClassName:='MyAPP String ID'; end; // В файле .dpr: var AWnd, A1Wnd: HWND; AWnd:=FindWindow('MyApp String ID',nil); if IsWindow(AWnd) then begin A1Wnd := GetWindow(AWnd, GW_OWNER); if IsWindow(A1Wnd) then AWnd := A1Wnd; ShowWindow(AWnd, SW_RESTORE); SetForegroundWindow(AWnd); end else begin Application.Initialize; ....... end Способ хорош тем, что он не просто блокирует повторный запуск, а выводит уже запущенное приложение на передний план, тычет юзера в него носом. Но при переходе на FireMonkey возникла закавыка: компилятору не нравится TCreateParams. Говорит: undeclared identifier. Чем бы его заменить?
    • От Вадим Смоленский
      Перейдя с Берлина на Токио, столкнулся с неприятным феноменом. Раньше, выводя на экран форму с обилием TLabel, которые нужно было заполнить текстом и выровнять, я спокойно ставил везде AutoSize=True, присваивал нужные значения полям Text, после чего ширина каждого TLabel принимала новое значение, и мой код их красиво выравнивал. Теперь же ширина не меняется до полной отрисовки на экране всего и вся. Соответственно, на этапе выравнивания код оперирует со значениями ширины, которые были еще на этапе дизайна. Как следствие - всё наперекосяк! Что делать?
    • От Вадим Смоленский
      Windows, Berlin. Когда TWebBrowser на форме получает фокус, он начинает перехватывать все нажатия клавиш. До FormKeyDown управление уже не доходит. Отключение свойства браузера CanFocus не помогает, своего события OnKeyDown у него нет. Как быть? В идеале хотелось бы оставить браузеру навигационные клавиши (стрелки, PgDn, PgUp, Home, End), но все остальные отправлять на форму. Возможно ли это?
    • От Вадим Смоленский
      Работаю в Windows с FireDAC (SQLite). При каждом обращении к базе данных экранный курсор превращается в песочные часы с надписью SQL. Пользователи моего продукта далеки от программирования и ни про какой SQL не слыхивали, им это совершенно ни к чему. Как мне подавить этот феномен? В свойствах TFDConnection я ничего на эту тему не нахожу...
  • Последние посетители   0 пользователей онлайн

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