Сколько времени закладка TDataset остается допустимой?

Мне не ясно, что вы подразумеваете под «компонентами пользовательского интерфейса Javascript», поскольку это может относиться ко многим различным вещам, таким как компоненты реакции или угловые компоненты. Но Elm поддерживает стандартные веб-компоненты - пользовательские элементы .

Вот неполный пример того, как это выглядит со стороны Вяза, заимствовано (и немного отредактировано) из Начинающий вяз :

googleMap : List (Attribute a) -> List (Html a) -> Html a
googleMap =
    Html.node "google-map"


onGoogleMapDrag : Attribute Msg
onGoogleMapDrag =
    coordinatesDecoder
        |> Json.Decode.map UpdateCenter
        |> on "google-map-drag"


view : Model -> Html Msg
view model =
    googleMap
        [ attribute "latitude" (toString model.center.latitude)
        , attribute "longitude" (toString model.center.longitude)
        , attribute "drag-events" "true"
        , attribute "zoom" "5"
        , onGoogleMapDrag
        ]
        (List.map viewMarker model.markers)

10
задан Rob Kennedy 11 May 2009 в 22:14
поделиться

3 ответа

Как уже упоминалось в c0rwin и skamradt : поведение закладки зависит от используемого потомка TDataSet.

В общем случае закладки становятся недействительными. во время:

  1. закрыть / открыть
  2. обновить (в наборах данных, которые его поддерживают)
  3. изменения данных (иногда только удаления)

Я знаю, 1. и 2. могут сделать ваши закладки в TClientDataSets недействительными. Я почти уверен, что для TClientDataSets не имеет значения, какой базовый поставщик используется (TSQLQuery, TIBQuery и т. Д.).

Единственный способ убедиться, что работает, а что нет, - это его тестирование. Это означает, что вы совершенно правы, не используя их: закладки имеют естественный шанс быть ненадежными.

На всякий случай всегда вызывайте BookmarkValid перед тем, как переходить к закладке.

6
ответ дан 4 December 2019 в 00:26
поделиться

Лично я закладки использую редко. Вместо этого я использую идентификатор просматриваемой записи и выполняю поиск по ней после завершения обновления. Если мне нужно перебрать все записи в наборе, я делаю это с помощью клона tClientDataset (который получает собственный курсор).

Насколько я понимаю, реализация закладки зависит от поставщика потомка tDataset и может варьироваться в зависимости от реализации. В моем очень простом наборе данных ( tBinData ) я реализовал закладки в качестве физического номера записи, чтобы он сохранялся между обновлениями, пока запись не была удалена. Я не могу сказать это верно для всех реализаций.

4
ответ дан 4 December 2019 в 00:26
поделиться

TDataSet реализует методы виртуальных закладок. Хотя эти методы гарантируют, что любой объект набора данных, производный от TDataSet, возвращает значение при вызове метода закладки, возвращаемые значения являются просто значениями по умолчанию, которые не отслеживают текущее местоположение. Потомки TDataSet, такие как TBDEDataSet, повторно реализуют методы закладок для возврата значимых значений, как описано в следующем списке:

  • BookmarkValid , для определения того, используется ли указанная закладка.
  • CompareBookmarks , чтобы протестируйте две закладки, чтобы убедиться, что они одинаковы.
  • GetBookmark , чтобы выделить закладку для вашего текущего положения в наборе данных.
  • GotoBookmark , чтобы вернуться к закладке, ранее созданной GetBookmark
  • FreeBookmark , чтобы освободить закладку, ранее размещенную GetBookmark.

Получите это из здесь

2
ответ дан 4 December 2019 в 00:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: