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

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

Пользователи
  • Постов

    219
  • Зарегистрирован

  • Посещение

  • Победитель дней

    5

Вадим Смоленский стал победителем дня 3 декабря 2018

Вадим Смоленский имел наиболее популярный контент!

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

Достижения Вадим Смоленский

  1. Огромнейшее спасибо!!! Всё прекрасно установилось и работает как часы. Вопрос снят.
  2. Спасибо, скачал. Но далее пошло доселе неизведанное. В меню нужно выбрать "Burn disc image", так? Потом оно просит установить "disc burner", который непонятно откуда брать. У меня, правда, стоит ImgBurn, при помощи которого я всегда изготовлял CD. Может, он сгодится?
  3. Ну, видимо, да. Запускаю exe-файлы, с которых когда-то всё устанавливал на старом компе. Попробовать из ISO-шечки мешает невежество. Если расскажете, как это делать, непременно попробую. Насчет запуска чистого проекта: вы имеете в виду запустить RAD Studio в этом виде и попробовать создать новый проект? Увы. Жму на "Create a new project" и получаю вот такое:
  4. Этот простой выход мне не по душе. Стараюсь по возможности не делать собратьям по программному ремеслу того, чего сам себе не желаю. Но, конечно, такая жесткость лицензионной политики весьма удручает.
  5. Писал уже в поддержку — ответили, что сроки истекли, отфутболили к renewals@idera.com. Написал и туда, ответа нет. Как следует зачистить, в моем понимании — это удалить папки Embarcadero из Program Files, Program Data и Documents, а также удалить всю секцию Embarcadero из регистра. Что тогда останется незачищенным? Да, если запустить более ранний установочный файл, radstudio10_2_1_esd.exe, то инсталляция выполняется без ругани насчет истекшей поддержки, но в конце выдается сообщение, о котором я писал в своем посте:
  6. Если папку Program Data\Embarcadero целиком не копировать, получается вот что (см. скриншоты) Довольно странно всё это. Неужели истекшая подписка лишает меня права продолжать пользоваться старой версией?
  7. А как сообщить инсталлятору, где этот слип лежит? Такое впечатление, что он ожидает его увидеть именно в Program Data\Embarcadero и более нигде. Задает вопрос о том, есть ли этот слип вообще, а вопроса о местонахождении не задает.
  8. Работаю на RAD Studio 10.2 Tokyo. Обновиться до свежих версий нынешняя лицензия не дает; покупка новой лицензии в планах, но не в ближайших. Сроки поддержки тоже истекли. Пытаюсь перенести всё хозяйство со старого компа на новый. Обозвал комп таким же именем, перенес всю как есть папку Program Data\Embarcadero с файлом *.slip в аналогичное место, после этого запускаю radstudio10_2_1_esd.exe. Лицензия подхватывается, инсталляция проходит вроде бы гладко, но потом вылезает окно "Platform selection" с загадочным сообщением "No more platforms pending to install". После чего в запущенном RAD Studio не удается открыть ни один проект: "The project can not be loaded because the required personality Delphi.Personality is not available." Есть ли способы эту проблему побороть?
  9. Ну вот я и хочу найти выход. И пока не нахожу. Оттого и обратился к коллективному разуму.
  10. Это замечательная новость. Но у меня 10.2, и бесплатно обновиться до 10.4, как я понимаю, нельзя.
  11. В FireMonkey приходится перехватывать сообщения Windows, чтобы обеспечить корректное сворачивание и разворачивание окон. Это здесь уже обсуждалось. Я в итоге сделал у себя так: var TheFormIsMinimized: Boolean = False; TheFormWasMaximized: Boolean = False; function NewWndProc(Wnd: HWND; Msg: UINT; WParam: WPARAM; LParam: LPARAM): LRESULT; stdcall; begin if (Msg = WM_SHOWWINDOW) and (LParam = SW_PARENTCLOSING) and (not TheFormIsMinimized) then begin TheFormIsMinimized := True; TheFormWasMaximized := (MainForm.WindowState=TWindowState.wsMaximized); SendMessage(FormToHWND(MainForm), WM_SYSCOMMAND, SC_MINIMIZE, 0); MainFormp.WindowState := TWindowState.wsMinimized; end else if (Msg = WM_SHOWWINDOW) and (LParam = SW_PARENTOPENING) and (TheFormIsMinimized) then begin TheFormIsMinimized := False; SendMessage(FormToHWND(MainForm), WM_SYSCOMMAND, SC_RESTORE, 0); if TheFormWasMaximized then begin SendMessage(FormToHWND(MainForm),WM_SYSCOMMAND,SC_MAXIMIZE,0); LookUp.WindowState:=TWindowState.wsMaximized; end else begin SendMessage(FormToHWND(MainForm),WM_SYSCOMMAND,SC_RESTORE,0); LookUp.WindowState:=TWindowState.wsNormal; end; end else Result:=CallWindowProc(OldWndProc, Wnd, Msg, WParam, LParam); end; Это работает — но восстановленное из трея окно находится не в фокусе. Пользователь должен дополнительно щелкнуть по нему мышкой. Вставка оператора SetFocus(FormToHWND(MainForm)) непосредственно сюда же ничего не дает — равно как и операторов SendMessage(FormToHWND(MainForm),WM_ACTIVATE,WA_ACTIVE,0), Winapi.Windows.SetActiveWindow(FormToHwnd(MainForm)) или SetForegroundWindow(FormToHWND(MainForm)). Мне приходится запускать из этого места специальный таймер — и уже в обработчике таймера, после некоторой задержки, вызывать SetFocus(FormToHWND(MainForm)). Но и это работает не всегда. Например, если окно было развернуто на весь экран, а свернуто было щелчком по кнопке «Свернуть все окна», то после его разворачивания опять фокуса нет (насколько могу судить, в этом случае не запускается таймер). Нет ли более изящного и надежного способа наладить фокус?
  12. А впрочем, неважно. Самое главное, что оператор Button:=TButton(SenderButton.Clone(SenderButton.Owner)) работает, как задумано. Спасибо!
  13. Простите, но пока плохо понимаю. Мне нужно клонировать объект, созданный в design time. А в вашем примере SenderButton создается как локальная переменная. Какой в этом смысл?
  14. Туплю, не могу понять, как именно нужно клонировать объект. Пишу так: Button2:=FMX.Types.TFmxObject.Clone(Button1); Delphi ругается, говорит: This form of method call only allowed for class methods or constructor. Что делаю не так?
  15. Здесь, к сожалению, никто проблемой не заинтересовался. Пришлось обратиться на experts-exchange.com, и тамошние специалисты подтвердили мою догадку: виноват размер файла со шрифтом (17.2 Mb). Такие файлы не лезут в ресурсы в рамках IDE, но есть обходной путь. Кому интересно, вот ссылка, там все инструкции: https://www.experts-exchange.com/questions/29204716/Adding-a-huge-font-file-to-Delphi-resources.html Выяснилось также, что шрифт вовсе не обязательно запихивать в ресурсы, можно просто добавить файл в deployment и установить непосредственно из файла: AddFontResource(PChar('MyFont.ttf')); SendMessage(FormToHWND(MainForm),WM_FONTCHANGE,0,0); Говорят, что важно еще не забыть этот шрифт в конце убрать: RemoveFontResource(PChar('MyFont.ttf')); SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); У меня всё заработало.
×
×
  • Создать...