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

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

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

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

  • Посещение

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

    5

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

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

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

13 239 просмотров профиля
  1. Даже в голову не пришло! Огромное спасибо, дурацкий вопрос разрешен и снят.
  2. Обновился до версии 11 и обнаружил, что под этой версией в Windows-приложениях любые контролы всегда показывают всплывающую подсказку, даже если ShowHint=False. Похоже, баг. Есть ли несложные способы его обойти?
  3. До сих пор использовал RAD Studio только для разработки под Windows. Сейчас решил наконец поэкспериментировать с Маком. Согласно инструкциям, иду в Project Manager, но в разделе Target Platform не нахожу пункта Mac OS. Нажимаю правую кнопку, чтобы воспользоваться командой меню Add platform, и эта команда там есть, но она неактивна! Что тут не так? Допускаю, что RAD Studio недостаточно хорошо установилась. На нынешний компьютер я ее ставил из ISO (пользователь Krapotkin тогда помог), и всё вроде работает, но при каждом запуске выдается огромное окно, в котором написано: "Platforms availability. No more platforms pending to install". Всякий раз приходится его закрывать; на старом компьютере такого не было. Не означает ли это какого-то дефекта установки, связанного именно с доступностью альтернативных платформ?
  4. Огромнейшее спасибо!!! Всё прекрасно установилось и работает как часы. Вопрос снят.
  5. Спасибо, скачал. Но далее пошло доселе неизведанное. В меню нужно выбрать "Burn disc image", так? Потом оно просит установить "disc burner", который непонятно откуда брать. У меня, правда, стоит ImgBurn, при помощи которого я всегда изготовлял CD. Может, он сгодится?
  6. Ну, видимо, да. Запускаю exe-файлы, с которых когда-то всё устанавливал на старом компе. Попробовать из ISO-шечки мешает невежество. Если расскажете, как это делать, непременно попробую. Насчет запуска чистого проекта: вы имеете в виду запустить RAD Studio в этом виде и попробовать создать новый проект? Увы. Жму на "Create a new project" и получаю вот такое:
  7. Этот простой выход мне не по душе. Стараюсь по возможности не делать собратьям по программному ремеслу того, чего сам себе не желаю. Но, конечно, такая жесткость лицензионной политики весьма удручает.
  8. Писал уже в поддержку — ответили, что сроки истекли, отфутболили к renewals@idera.com. Написал и туда, ответа нет. Как следует зачистить, в моем понимании — это удалить папки Embarcadero из Program Files, Program Data и Documents, а также удалить всю секцию Embarcadero из регистра. Что тогда останется незачищенным? Да, если запустить более ранний установочный файл, radstudio10_2_1_esd.exe, то инсталляция выполняется без ругани насчет истекшей поддержки, но в конце выдается сообщение, о котором я писал в своем посте:
  9. Если папку Program Data\Embarcadero целиком не копировать, получается вот что (см. скриншоты) Довольно странно всё это. Неужели истекшая подписка лишает меня права продолжать пользоваться старой версией?
  10. А как сообщить инсталлятору, где этот слип лежит? Такое впечатление, что он ожидает его увидеть именно в Program Data\Embarcadero и более нигде. Задает вопрос о том, есть ли этот слип вообще, а вопроса о местонахождении не задает.
  11. Работаю на 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." Есть ли способы эту проблему побороть?
  12. Ну вот я и хочу найти выход. И пока не нахожу. Оттого и обратился к коллективному разуму.
  13. Это замечательная новость. Но у меня 10.2, и бесплатно обновиться до 10.4, как я понимаю, нельзя.
  14. В 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)). Но и это работает не всегда. Например, если окно было развернуто на весь экран, а свернуто было щелчком по кнопке «Свернуть все окна», то после его разворачивания опять фокуса нет (насколько могу судить, в этом случае не запускается таймер). Нет ли более изящного и надежного способа наладить фокус?
  15. А впрочем, неважно. Самое главное, что оператор Button:=TButton(SenderButton.Clone(SenderButton.Owner)) работает, как задумано. Спасибо!
×
×
  • Создать...