Как обновить список ComboBox?

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

Как обновить список ComboBox?

Сообщение vic7tar »

Всем привет.
C63(ABC)
В ComboBox список формируется из файла (например, file.tps).
Файл file.tps изменился. А как обновить список ComboBox? Вручную переформировывать очередь Queue:FileDropCombo:xxx?
C10, Win10x64
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Как обновить список ComboBox?

Сообщение kreator »

Например, вызвать:

Код: Выделить всё

FDCB1.ResetQueue(1)
We are hard at work… for you. :)
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

Как обновить список ComboBox?

Сообщение vic7tar »

Первым делом пытался использовать. Не срабатывает.
C10, Win10x64
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Как обновить список ComboBox?

Сообщение kreator »

Есть ещё просто Reset. У меня везде ResetQueue, работает железно.
We are hard at work… for you. :)
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

Как обновить список ComboBox?

Сообщение vic7tar »

kreator писал(а): 23 Ноябрь 2020, 12:30 Есть ещё просто Reset.
Имеется ввиду ThisWindow.Reset()? - тоже никакого эффекта.
C10, Win10x64
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Как обновить список ComboBox?

Сообщение kreator »

Есть FDCB1.Reset(). Но это наследник ViewManager'а. Ну его на фиг. В справке чёрным по белому написано, что ResetQueue перезаливает очередь. Надо разбираться - что у Вас не так.
We are hard at work… for you. :)
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

Как обновить список ComboBox?

Сообщение vic7tar »

Вот метод ResetQueue (ABDROPS.CLW):

Код: Выделить всё

FileDropClass.ResetQueue PROCEDURE(BYTE Force)

i   LONG,AUTO
ptr LONG,AUTO
  CODE
  IF SELF.ApplyRange() OR Force OR ~SELF.Loaded
    i = 0
    SELF.Loaded = 1
    SETCURSOR(CURSOR:Wait)
    FREE(SELF.ListQueue)
    SELF.Reset
    LOOP
        IF SELF.UseMRP
           IF SELF.View{PROP:IPRequestCount} = 0
              SELF.View{PROP:IPRequestCount} = 20
           END
        END
        IF SELF.Next()<>Level:Benign THEN BREAK.
        SELF.SetQueueRecord
        IF  SELF.AddRecord()
          ptr = POINTER (SELF.ListQueue)

          IF i = 0
            IF  SELF.BufferMatches()
              i = ptr
            END
          ELSIF ptr <= i
            i += 1
          END
        END
    END
    SELF.Close
    SELF.ClearFilesRecord()

    IF i = 0 AND SELF.DefaultFill AND RECORDS(SELF.ListQueue) THEN i = 1 .
    IF i
       IF SELF.ListField = SELF.ListControl
          SELF.ListField{PROP:Selected}=i
       ELSE
          SELF.ListField{PROP:Selected}=i
          SELF.ListControl{PROP:Selected}=1
       END
       SELF.TakeNewSelection(SELF.ListField)
    END
    SELF.ListField{PROP:VScroll}=CHOOSE(RECORDS(SELF.ListQueue)>SELF:ListField{PROP:Items})
    SETCURSOR
  ELSE
    i = CHOICE(SELF.ListField)
  END
  RETURN i
А где тут упоминание о формировании очереди из файла?
C10, Win10x64
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

Как обновить список ComboBox?

Сообщение kreator »

A SELF.Next() и последующий вызов SELF.SetQueueRecord и SELF.AddRecord() не оно?
We are hard at work… for you. :)
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

Как обновить список ComboBox?

Сообщение vic7tar »

kreator писал(а): 23 Ноябрь 2020, 12:30 У меня везде ResetQueue, работает железно.
Всё правильно, срабатывает при FDCBx.ResetQueue(1), я по глупости параметр опускал.
C10, Win10x64
Ответить