-
Постов
2 124 -
Зарегистрирован
-
Посещение
-
Победитель дней
390
Весь контент Brovin Yaroslav
-
Может меняется порядок инициализации юнитов, которая приводит к неправильному порядку?
-
По скольку указанная мною цена оказалась для участников форума завышенной. То я сбрасываю цену: Учащиеся - 1 000 р Остальные - 1 200 р
-
С моей точки зрения, метод TThread.Queue имеет один весомый недостаток. А именно: Если вызов метода TThread.Queue идет в главном потоке, то код будет вызыван немедленно. class procedure TThread.Queue(const AThread: TThread; AMethod: TThreadMethod); var LSynchronize: PSynchronizeRecord; begin if AThread <> nil then AThread.Queue(AMethod) else begin New(LSynchronize); try LSynchronize.FThread := nil; LSynchronize.FSynchronizeException := nil; LSynchronize.FMethod := AMethod; Synchronize(LSynchronize, True); // <-- Смотрим сюда finally if MainThreadID = CurrentThread.ThreadID then Dispose(LSynchronize); end; end; end; А потом на кусочек этого кода: class procedure TThread.Synchronize(ASyncRec: PSynchronizeRecord; QueueEvent: Boolean = False); var SyncProc: TSyncProc; SyncProcPtr: PSyncProc; begin if CurrentThread.ThreadID = MainThreadID then begin if Assigned(ASyncRec.FMethod) then ASyncRec.FMethod() else if Assigned(ASyncRec.FProcedure) then ASyncRec.FProcedure(); end else Из реализации метода Synchronize, как раз и видно, что код будет вызван немедленно, если текущий тред - это главный поток. Итог TThread.Queue заменяет PostMessage, если вызов идет не из главного потока. Если вызов TThread.Queue идет из главного потока, то это равносильно прямому вызову процедуры или метода.
-
Если вы хотите, чтобы ваш класс компонента мог быть использован в TStyleBook, нужно пометить ваш дизайн тайм пакет, как всегда загружаемым: ForceDemandLoadState(dlDisable); В этом случае при старте среды, ваш пакет с компонентами не зависимо от того, использует ли среда или нет, будет загружен. А значит ваши компоненты будут зарегистриованы в среде.
-
Добрый день, Да, ошибку исправлю. Используйте ComboBox.Clear; Вместо: ComboBox.Items.Clear;
-
Да, конечно. У TPresentedControl есть методы для этого. Но они к сожалению в протектед секции. Я повышу им область видимости, так как здесь нету причин делать их protected. А пока делаем старым "дедовским способом": type TOpenPresentedControl = class(TPresentedControl); TOpenPresentedControl(Edit).ReloadPresentation;
-
Раньше нельзя было прикреплять 7z файлы. Я после вашего сообщения добавил эти файлы в список разрешенных к прикреплению.
-
У вас остались собранные файлы от предыдущей версии моей библиотеки. Потому что в последней версии в файлах FGX.Helpers.Androd нету функции GetNativeTheme. Поищите и удалите все dcu файлы с префиксом FGX.
-
Даже лучше OnChange.
-
Могу вам предложить использовать TListBox.OnItemClick. Он возвращает в параметры выделенный итем. Из него можно извлечь текст и передать в ApplySelection
-
У меня компонент состоит из двух частей: Внутреннее представление документа. Оно состоит из базовых элементов и служебных. Базовые - отображают что-то (текси, картинки, параграфы, списки) и служебные (перенос строк, смена параметров шрифта вложенных элементов) Парсеры. Пока у меня есть очень в зачаточном состоянии HTML парсер, который считывает разметку и генерирует на входе представление документа. По идеи у меня заложено, что можно сделать свой парсер, который будет разбирать любой документ. Но времени на парсер особо нет. Меня больше интересует первая часть. Так как она основопологающая.
-
Дело в том, что в андроиде нету нормального ввода текста. Весь ввод идет через IME. А вот цифры идет отдельно, поэтому ввод цифр шел напрямую в всплывающее окно. MM_Data_Changed - это уведомление, когда пользователь меняет значение свойства в Model.Data. DoChangeTracking (Аналог MM_EDIT_TEXT_CHANGING) - это уведомление о том, что текст в TEdit меняется. Поэтому это две разных по сути сущности Если вы хотите, чтобы при изменении данных в моделе, модель не уведомляла об этом презентацию, то используйте парные методы модели: Model.DisableNotify; try // Меняем данные в моделе без уведомлений finally Model.EnableNotify; end;
-
Любопытная ошибка. Попробуйте внести следующие изменения в FMX.Platform.Android.pas так: Найдите метод function TWindowManager.FindTopWindow: TAndroidWindowHandle; var I: Integer; begin for I := FWindows.Count - 1 downto 0 do if FWindows[I].Form.Visible then Exit(FWindows[I]); Result := nil; end; И замените условие IF на следующее: if FWindows[I].Form.Visible and not (FWindows[I].Form is TCustomPopupForm) then По идеи это должно помочь
-
В текущую версию добавлена поддержка: Нумерованные списки Ненумерованные списки Форматированный код. Пока только сохранение отступов в коде и применение моношрифта. В будущем планирую добавить систему плагинов расширяющих базовые элементы разметки для реализации подсветки кода. Добавлено прокручивание текста
-
Не за что :-)
- 3 ответа
-
- Remove
- TMapMarker
-
(и ещё 1 )
C тегом:
-
Добрый день, При добавлении маркера, методы возвращаюют вам инстанс маркера. /// <summary>Add marker specified by Descriptor and return new TMapMarker object</summary> function AddMarker(const Descriptor: TMapMarkerDescriptor): TMapMarker; /// <summary>Add circle specified by Descriptor and return new TMapCircle object</summary> function AddCircle(const Descriptor: TMapCircleDescriptor): TMapCircle; /// <summary>Add polygon specified by Descriptor and return new TMapPolygon object</summary> function AddPolygon(const Descriptor: TMapPolygonDescriptor): TMapPolygon; /// <summary>Add polyline specified by Descriptor and return new TMapPolyline object</summary> function AddPolyline(const Descriptor: TMapPolylineDescriptor): TMapPolyline; Сохраните его. И когда нужно будет его удалить, выполните: Marker.Remove; Marker.Free; Или Marker.DisposeOf;
- 3 ответа
-
- Remove
- TMapMarker
-
(и ещё 1 )
C тегом: