Страница 1 из 1

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

Добавлено: 22 Ноябрь 2020, 20:55
vic7tar
Всем привет.
C63(ABC)
В ComboBox список формируется из файла (например, file.tps).
Файл file.tps изменился. А как обновить список ComboBox? Вручную переформировывать очередь Queue:FileDropCombo:xxx?

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

Добавлено: 23 Ноябрь 2020, 12:18
kreator
Например, вызвать:

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

FDCB1.ResetQueue(1)

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

Добавлено: 23 Ноябрь 2020, 12:24
vic7tar
Первым делом пытался использовать. Не срабатывает.

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

Добавлено: 23 Ноябрь 2020, 12:30
kreator
Есть ещё просто Reset. У меня везде ResetQueue, работает железно.

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

Добавлено: 23 Ноябрь 2020, 12:49
vic7tar
kreator писал(а): 23 Ноябрь 2020, 12:30 Есть ещё просто Reset.
Имеется ввиду ThisWindow.Reset()? - тоже никакого эффекта.

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

Добавлено: 23 Ноябрь 2020, 13:14
kreator
Есть FDCB1.Reset(). Но это наследник ViewManager'а. Ну его на фиг. В справке чёрным по белому написано, что ResetQueue перезаливает очередь. Надо разбираться - что у Вас не так.

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

Добавлено: 23 Ноябрь 2020, 13:33
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
А где тут упоминание о формировании очереди из файла?

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

Добавлено: 23 Ноябрь 2020, 14:06
kreator
A SELF.Next() и последующий вызов SELF.SetQueueRecord и SELF.AddRecord() не оно?

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

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