Дополнить dropList своими записями
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- Бывалый
- Сообщения: 60
- Зарегистрирован: 12 Июнь 2015, 22:59
- Откуда: Новороссийск
- Благодарил (а): 4 раза
- Поблагодарили: 1 раз
Дополнить dropList своими записями
Добрый день!
с10 abc (! Новичок)
На Browse добавил control FileDrop, который использую для фильтрации данных окна.
Подскажите в какой embed и какой код добавить, чтобы
в выпадающий список добавились новые строки, которых нет в таблице и которые нужны только
на время работы приложения. Сильно не пинайте. Спасибо
с10 abc (! Новичок)
На Browse добавил control FileDrop, который использую для фильтрации данных окна.
Подскажите в какой embed и какой код добавить, чтобы
в выпадающий список добавились новые строки, которых нет в таблице и которые нужны только
на время работы приложения. Сильно не пинайте. Спасибо
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Дополнить dropList своими записями
Методы класса для формирования списков примерно похожи (что лист, что дроп-лист, что комбо), но немного неодинаково работают. SV объявляли об идее привести всё к одному и тому же, но похоже руки не дошли. Попробуй вставить свой текст в метод ResetQueue после Parent Call. Только нужна проверка на количество записей в очереди. Сдаётся мне, что этот метод не один раз вызывается (в отличии от обычного Browse). И ещё нужно не забыть о сортировке или принудительном добавлении своих записей на определённую позицию в очереди. Если не получиться (что может быть), то можно попробовать вставить в SetQueueRecord. Тоже с проверкой, например на отсутствие записей.
We are hard at work… for you.
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Дополнить dropList своими записями
Сам код простой, типа:
FDB1 можно заменить на self. Наверно.
Код: Выделить всё
FDB1.Q.Field1 = 1
FDB1.Q.Field2 = 2
add(FDB1.Q)
...
We are hard at work… for you.
-
- Бывалый
- Сообщения: 60
- Зарегистрирован: 12 Июнь 2015, 22:59
- Откуда: Новороссийск
- Благодарил (а): 4 раза
- Поблагодарили: 1 раз
Дополнить dropList своими записями
Да..., после ШВС не привычно. Как и предсказывалось выше в методе ResetQueue добавилось, но стало работать. В SetQueueRecord добавилось многократно. В общем перебором получил нужный мне результат в Reset после parent. Спасибо
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Дополнить dropList своими записями
ИМХО в Reset неправильно ставить. В общем случае метод ResetQueue может быть вызван отдельно (не из Reset) и Вы потеряете свои строчки. Что нет так с ResetQueue?
We are hard at work… for you.
- morkovin
- Ветеран
- Сообщения: 910
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
Дополнить dropList своими записями
!для дроп-контрола на окне указываешь источник-очередь
From : GLO:RaionQ
!где-то в словаре прописываешь очередь
!declare Global queue
RaionQ QUEUE,PRE(Glo)
RaionName STRING(50)
END
...........
!заполняешь очереди из ini-файла
!fill drop boxes in main windows open
IniMgr.FetchQueue('Status','Stat',Glo:StatusQ,Glo:StatusQ.Status)
IniMgr.FetchQueue('Nadbavka','Period',Glo:PeriodQ,Glo:PeriodQ.Period)
IniMgr.FetchQueue('Vyplat','StatVypl',Glo:VyplStatQ,Glo:VyplStatQ.VypStatus)
IniMgr.FetchQueue('Raion','RaionName',Glo:RaionQ,Glo:RaionQ.RaionName)
!-------- так это выглядит в file.INI ----
[Raion]
RaionName=9
RaionName_1=Центральный
RaionName_2=Советский
RaionName_3=Дзержинский
RaionName_4=Ворошиловский
RaionName_5=Кировский
RaionName_6=Краснооктябрьский
RaionName_7=Тракторозаводский
RaionName_8=Красноармейский
RaionName_9=иногородний
RaionName_10=
RaionName_11=
RaionName_12=
RaionName_13=
использую это для мелких дроп-листов, которые редко но могут изменяться
From : GLO:RaionQ
!где-то в словаре прописываешь очередь
!declare Global queue
RaionQ QUEUE,PRE(Glo)
RaionName STRING(50)
END
...........
!заполняешь очереди из ini-файла
!fill drop boxes in main windows open
IniMgr.FetchQueue('Status','Stat',Glo:StatusQ,Glo:StatusQ.Status)
IniMgr.FetchQueue('Nadbavka','Period',Glo:PeriodQ,Glo:PeriodQ.Period)
IniMgr.FetchQueue('Vyplat','StatVypl',Glo:VyplStatQ,Glo:VyplStatQ.VypStatus)
IniMgr.FetchQueue('Raion','RaionName',Glo:RaionQ,Glo:RaionQ.RaionName)
!-------- так это выглядит в file.INI ----
[Raion]
RaionName=9
RaionName_1=Центральный
RaionName_2=Советский
RaionName_3=Дзержинский
RaionName_4=Ворошиловский
RaionName_5=Кировский
RaionName_6=Краснооктябрьский
RaionName_7=Тракторозаводский
RaionName_8=Красноармейский
RaionName_9=иногородний
RaionName_10=
RaionName_11=
RaionName_12=
RaionName_13=
использую это для мелких дроп-листов, которые редко но могут изменяться
WBR, morkovin
-
- Бывалый
- Сообщения: 60
- Зарегистрирован: 12 Июнь 2015, 22:59
- Откуда: Новороссийск
- Благодарил (а): 4 раза
- Поблагодарили: 1 раз
Дополнить dropList своими записями
kreator, в ResetQueue по клику моей записи фильтруются данные как будто я щелкаю по предыдущей. С записями созданными шаблонами все нормально
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Дополнить dropList своими записями
Вот такой кусок обнаружил (правда, не мой, коллеги, но, видимо, работает):
И ещё. Есть сейчас опция для дроплиста "All". Так вот эта строчка добавляется в ResetQueue.
И ещё. Знаю, что в комбо могут быть проблемы, потому что там идёт поиск по первым буквам. Может сейчас что-то изменилось, но раньше проблемы были.
Можете привести кусок текста как вы добавляете свои записи.
Код: Выделить всё
FDB4.SetQueueRecord PROCEDURE
CODE
IF RECORDS(FDB4.Q) = 0
FDB4.Q.PS:NOMER = ''
FDB4.Q.PS:NAME = '> Все подразделения...'
ADD(FDB4.Q,1)
IF ERRORCODE() THEN STOP(ERROR()).
END
PS:NAME = CLIP(PS:NOMER) & ' ' & CLIP(PS:NAME)
И ещё. Знаю, что в комбо могут быть проблемы, потому что там идёт поиск по первым буквам. Может сейчас что-то изменилось, но раньше проблемы были.
Вот не очень понятно. Как у Вас происходит передача значения из дроплиста? Руками? Или в Actions положили параметр? Я бы отменил настройку в Actions. Делал бы руками. Стандартно происходит обращение в таблицу. В таблице этого значения нет, берётся старое. Перестраховались.
Можете привести кусок текста как вы добавляете свои записи.
We are hard at work… for you.
- ingasoftplus
- Ветеран
- Сообщения: 426
- Зарегистрирован: 26 Декабрь 2006, 17:07
- Откуда: Оттуда :)
- Благодарил (а): 90 раз
- Поблагодарили: 5 раз
Дополнить dropList своими записями
Код: Выделить всё
! Add the custom row in the reset method
FDBLocation.Reset PROCEDURE
CODE
! Add <All> entry to the queue
IF Records(SELF.Q) = 0
Clear(SELF.Q)
SELF.Q.PRE:DisplayFieldName = '<All>'
Add(SELF.Q)
END
PARENT.Reset
! Then later on when the selection occurs detect if the user has selected our custom row and deal with it.
FDBLocation.TakeNewSelection PROCEDURE
CODE
PARENT.TakeNewSelection
IF SELF.Q.PRE:DisplayFieldName = '<All>'
Clear(PRE:Record)
! Do whatever else you need to do here I guess!
END
-
- Бывалый
- Сообщения: 60
- Зарегистрирован: 12 Июнь 2015, 22:59
- Откуда: Новороссийск
- Благодарил (а): 4 раза
- Поблагодарили: 1 раз
Дополнить dropList своими записями
Парни, спасибо за науку и помощь. Все получилось. За 2 дня узнал во сто крат больше, чем от чтения help-а
-
- ✯ Ветеран ✯
- Сообщения: 5006
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Дополнить dropList своими записями
Видимо, специфика ООП, что help трудно доходит. Я взял за привычку смотреть сразу соурсы в каталоге \libsrc. Ну не сразу, но вообще очень полезная штука.
We are hard at work… for you.