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

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

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

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

  • Посещение

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

    5

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

  1. Положить - и всё? Я вижу, там еще поля какие-то есть: DefaultPath, SearchPath, DriverID... Надо что-нибудь заполнять?
  2. Писал на Delphi 10.2 Tokyo под Windows. У тестеров приложение валится при первой же попытке обращения к БД с сообщением "unable to open database file". У меня на компе всё нормально. Файл sqlite3.dll версии 3.21.0.0 в дистрибутив включен, кладется рядом с исполнимым файлом. Что может быть не так?
  3. Ну хорошо. Должен одинаково на всех платформах. Но ведь не зря существуют фишки вроде {$IFDEF MSWINDOWS}. Разве нельзя добиться, чтобы это или что-то похожее работало хотя бы только под Windows?
  4. В своем 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. Чем бы его заменить?
  5. FREEFAR, спасибо, ApplyStyleLookup прекрасно помог! (пробовал здесь поаккуратнее переписать ваш код, но скрипту почему-то не понравилось)
  6. > а этап выравнивания это когда? У меня так: есть некий фрейм, до поры невидимый. По определенному событию (щелчок по кнопке) все TLabel на фрейме заполняются текстом и свойство Visible фрейма переводится в True. В Tokyo получается так, что пока фрейм невидим, размеры TLabel не меняются, невзирая на AutoSize. Какой здесь может быть другой момент для расчетов?
  7. Перейдя с Берлина на Токио, столкнулся с неприятным феноменом. Раньше, выводя на экран форму с обилием TLabel, которые нужно было заполнить текстом и выровнять, я спокойно ставил везде AutoSize=True, присваивал нужные значения полям Text, после чего ширина каждого TLabel принимала новое значение, и мой код их красиво выравнивал. Теперь же ширина не меняется до полной отрисовки на экране всего и вся. Соответственно, на этапе выравнивания код оперирует со значениями ширины, которые были еще на этапе дизайна. Как следствие - всё наперекосяк! Что делать?
  8. Спасибо. Но нельзя ли поподробнее про хук на клавиатуру? Что это за зверь?
  9. Windows, Berlin. Когда TWebBrowser на форме получает фокус, он начинает перехватывать все нажатия клавиш. До FormKeyDown управление уже не доходит. Отключение свойства браузера CanFocus не помогает, своего события OnKeyDown у него нет. Как быть? В идеале хотелось бы оставить браузеру навигационные клавиши (стрелки, PgDn, PgUp, Home, End), но все остальные отправлять на форму. Возможно ли это?
  10. Maximus, спасибо! Оказывается, это все-таки есть в свойствах TFDConnection и доступно через Object Inspector. Просто нужно было знать, что это называется SilentMode. Теперь всё красиво!
  11. Работаю в Windows с FireDAC (SQLite). При каждом обращении к базе данных экранный курсор превращается в песочные часы с надписью SQL. Пользователи моего продукта далеки от программирования и ни про какой SQL не слыхивали, им это совершенно ни к чему. Как мне подавить этот феномен? В свойствах TFDConnection я ничего на эту тему не нахожу...
  12. Пока эксперты размышляли, нашел решение сам. Эффекты нужно было просто разнести по времени - мне ведь не нужна тень, пока идет анимация, тень можно налепить по ее окончании. Два обработчика событий для TFloatAnimation решили вопрос: по OnProcess свойство Enabled компонента TShadowEffect устанавливается в False; по OnFinish - в True.
  13. Мастерю из TRectangle всплывающую подсказку с тенью и анимацией (увеличиваю Opacity от 0 до 1). Без TFloatAnimation тень нормально отображается, а с анимацией пропадает. Действительно ли здесь есть какие-то ограничения, или проблему можно решить?
  14. Спустя полгода решение проблемы все-таки нашлось. Благодарю эксперта kami!
  15. Решение проблемы нашлось в другой ветке. Оказалось, что всё дело в компоненте TWebBrowser. Подробнее:
  16. Kami, огромное спасибо! Получается, белый квадрат как раз и возникал из-за TWebBrowser - вот почему у меня в первый раз не получилось воспроизвести проблему с квадратом на маленьком проекте. Теперь всё заработало. Низкий поклон!
  17. Этот вопрос сложился из двух, которые я здесь уже задавал, но ответов не получил. Первый касался странного поведения TWebBrowser. Второй - ненужного мелькания в виде белого квадрата при вызове TPopup и TPopupMenu. Теперь оказалось, что эти проблемы связаны. Мне удалось их воспроизвести в маленьком демонстрационном проекте (Windows), который прилагаю в виде зипа и скриншота. Кнопка Hide/Show прячет и снова показывает TWebBrowser. Но если хоть один раз (когда TWebBrowser виден) вызвать TPopupMenu или TPopup, это перестает работать - TWebBrowser отказывается прятаться. Характерно еще то, что в момент вызова TPopupMenu или TPopup в левом верхнем углу формы на долю секунды появляется непрошенный белый квадрат, и на эту же долю секунды TWebBrowser пропадает. Если минимизировать форму в трей и снова открыть (при условии, что TWebBrowser при этом как бы не виден, т.е. после нечетного числа щелчков по кнопке), то функциональность восстанавливается. Иными словами, проблема в отрисовке. Своими силами справиться не смог. Буду признателен за дельный совет. Побороть белый квадрат тоже очень хотелось бы, с ним некрасиво. TWebBrowserProblem.zip
  18. Работаю в Berlin, делаю приложение под Windows. При каждом вызове метода Popup для TPopupMenu, а также при создании и выводе на экран компонента TPopup, в левом верхнем углу формы на долю секунды появляется белый прямоугольник 50х50 пикселей. Нельзя ли как-нибудь это явление подавить?
  19. Да, похоже на то... Ну что ж, буду выравнивать через стиль.
  20. В Object Inspector подгружаю ImageList к TTabControl, иду в отдельные TTabItem, выбираю номера для ImageIndex. Иконки выводятся прижатыми к левому краю. Как выровнять их по центру? Текста не предусматриваю, будут только иконки.
  21. Вон оно что... Насчет TMenuBar и сам уже думал, но здесь в другой теме написали, что это имитация, которая подглючивает. Хотелось бы, конечно, знать, чего в этом смысле нужно опасаться. А впрочем, попробую.
  22. > Меню RAD Studio сделано на TActionMainMenuBar. У себя в Tool Palette я такого компонента не наблюдаю. Где его добывают?
  23. Если главное окно приложения для Windows выполнено как MDI и занимает почти весь экран, то пункты главного меню концентрируются слева, оставляя справа длинную пустую полосу. Этого пространства жалко, его можно было бы использовать с пользой - как, собственно, и сделано в интерфейсе RAD Studio: после пункта меню Help идет вертикальная полоска из точек, а дальше иконки, боксы поиска и прочее хозяйство. Как это можно сделать?
  24. К сожалению, истинную причину так и не смог установить. Но обратил внимание, что упомянутый белый прямоугольник исчезает, лишь только фокус перейдет на другое окно. Поэтому поступил просто: при переходе на другой режим сначала закрываю проблемное окно, а после отрисовки снова его открываю. Проблема решена ценой некоторого лишнего мелькания.
×
×
  • Создать...