Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Combo  [new]
кэт
Guest
Подскажите, уважаемое собрание
есть комбо, источник массив[x,3]
x-количество столбцов в гриде
3-это
а-название хедера(чуть не получилось некрасивое слово :о))
в-источник значений для столбца(CONTROLSOURCE)
с-название колумна
Все это я определяю в init контейнера, на котором стоит комбо
в, с-невидимы
Value комбо=LIST

пользователь выбирает поле
В свойства контейнера записываю нужные свойства
в InteractiveChage комбо пытаюсь в свойство контейнера записать
название колумна(с) не получается
CONTROLSOURCE(в)-записываю в свойство-все нормально(потому что Value )

Как записать???
LIST пробовала, рефрешила все и многое многое другое--все равно свойство пустое
Спсибо за внимание.
15 авг 03, 21:13    [302690]     Ответить | Цитировать Сообщить модератору
 Поправка  [new]
кэт
Guest
Чего то прочла, а форум вродь как символы не прописал....?
Повтор
Подскажите, уважаемое собрание
есть комбо, источник массив[x,3]
x-количество столбцов в гриде
3-это
а-Caption хедера(чуть не получилось некрасивое слово :о))
в-источник значений для столбца(CONTROLSOURCE)
с-название колумна
Все это я определяю в init контейнера, на котором стоит комбо
в, с-невидимы
Value комбо=LIST(2)
пользователь выбирает поле
В свойства контейнера записываю нужные свойства
в InteractiveChage комбо пытаюсь в свойство контейнера записать
название колумна(с) не получается
CONTROLSOURCE(в)-записываю в свойство-все нормально(потому что Value )
Как записать???
LIST (3)пробовала, рефрешила все и многое многое другое--все равно свойство пустое
Вообщем как получить в свойство(переменную) неявляющееся
VALUE колонку комбо
Спасибо за внимание.
15 авг 03, 21:18    [302692]     Ответить | Цитировать Сообщить модератору
 Re: Combo  [new]
Burn
Guest
При инициализации комбо присвой Combo.Value=1, тогда после выбора в Value будет индекс массива по ниму и присваивй - List(This.Value,1), List(This.Value,2), List(This.Value,3), если List - твой массив
16 авг 03, 00:45    [302756]     Ответить | Цитировать Сообщить модератору
 Re: Combo  [new]
кэт
Guest
Я без кода ввела Вас в заблуждение
Вот как все выглядит в ините контейнера
lcMyGridname=THIS.MyGridname && выясняем название грида
lcMyGridname=[THISFORM.]+lcgg
loGridname=&lcMyGridname && делаем ссылку на объект

PUBLIC aHeaderCaption
n = m.loGridname.ColumnCount && количество столбцов в этом гриде
DIMENSION aHeaderCaption(m.n,3)
FOR i=1 TO m.n
aHeaderCaption(i,1) = m.loGridname.Columns.Header1.Caption
aHeaderCaption(i,2) = m.loGridname.Columns.ControlSource
aHeaderCaption(i,3) = m.loGridname.Columns.Name
ENDFOR

THIS.Combo1.RowSourceType = 5
THIS.Combo1.RowSource = "aHeaderCaption"
THIS.Combo1.ColumnCount=3
THIS.Combo1.BoundColumn=2
THIS.Combo1.ColumnWidths="180,0,0"
This.Combo1.ColumnLines= .F.
THIS.Combo1.VALUE =THIS.Combo1.LIST

В InterActiveСh Combo
*определяем список полей, значение берем из комбо
LOCAL leValue,lcExpres
leValue=THIS.VALUE
lcExpres=[TRANSFORM(]+(leValue)+")"
THIS.PARENT.listfields=lcExpres
DODEFAULT()
THIS.Parent.Refresh

Как тута выловить название колумна-из 3 столбца массива
(aHeaderCaption(i,3) = m.loGridname.Columns.Name)
Спасибо за внимание
16 авг 03, 07:41    [302802]     Ответить | Цитировать Сообщить модератору
 Re: Combo  [new]
Кэт
Guest
Тут не правильно, описка вышла.Но тем не менее вопрос остается в силе
Вот как все выглядит в ините контейнера
lcMyGridname=THIS.MyGridname && выясняем название грида
lcMyGridname=[THISFORM.]+lcgg
loGridname=&lcMyGridname && делаем ссылку на объект
Читать

lcMyGridname=THIS.MyGridname && выясняем название грида
lcMyGridname1=[THISFORM.]+lcMyGridname
loGridname=&lcMyGridname1 && делаем ссылку на объект
16 авг 03, 07:49    [302804]     Ответить | Цитировать Сообщить модератору
 Re: Combo  [new]
Burn
Guest
>Как тута выловить название колумна-из 3 столбца массива
m.ColumnName=aHeaderCaption(This.ListIndex,3)
16 авг 03, 20:38    [303049]     Ответить | Цитировать Сообщить модератору
 Re: Combo  [new]
Кэт
Guest
Спасибо за ответ
Все получилось
Слушайте этот форум "жрет символы" квадратных скобок "[]"
вот тут у меня же не может быть ...m.loGridname.Columns.Header1.Caption...
а должно быть(да и было) ...m.loGridname.Columns(i).Header1.Caption...


Ну да ладно
но вот проблема
Если пользователь ничего не выбрал, проводиться проверка
В моем методе
*Проверка введенных значений
IF THIS.Text1.Value=""
MESSAGEBOX("Введите выражение")
THIS.Text1.SetFocus
RETURN
ENDIF

IF THIS.Combo1.ListIndex=0
MESSAGEBOX("Выберете поле ")
THIS.Combo1.SetFocus
RETURN
ENDIF

Так вот с текстовым полем то получается, а с комбо нет
Как я только не извращалась
и при инициации
THIS.Combo1.Value="" и потом проверяла
IF THIS.Combo1.ListItemID=-1 не проходит
Вообщем как проверить, что пользователь ничего не выбрал
17 авг 03, 12:08    [303202]     Ответить | Цитировать Сообщить модератору
 Re: Combo  [new]
Burn
Guest
Лично я предпочитаю не давать пользователю уйти с Комбо ничего не выбрав, задав ListIndex=1 при попадании фокуса на объект. Хочет отказатся - пусть жмет нужную кнопку или клавишу Esc. Но у меня великолепно работает проверка на Empty(This.Value) в Valid комбо
17 авг 03, 15:32    [303241]     Ответить | Цитировать Сообщить модератору
 Re: Combo  [new]
Кэт
Guest
Может конечно я запуталась вся
но никак у меня не получается
ListIndex=1 не хочется
юзер ничего не выбрал
В созданном мною методе перед его выполнение проверяю
IF Empty(THIS.Combo1.Value)
MESSAGEBOX("Выберете поле ")
THIS.Combo1.SetFocus
RETURN
ENDIF

Пролетает это место, не обрабатывает RETURN
Еще раз -источник комбо-массив
Ниччеегооо не понимаю
Спасибо за внимание
17 авг 03, 16:30    [303254]     Ответить | Цитировать Сообщить модератору
 Re: Combo  [new]
Burn
Guest
Поставь в Valid самого комбо:

IF Empty(THIS.Value)
MESSAGEBOX("Выберете поле ")
RETURN 0
ENDIF
RETURN .t.
17 авг 03, 22:12    [303330]     Ответить | Цитировать Сообщить модератору
 Re: Combo  [new]
Кэт
Guest
Конечно пока не попробовала, от Фокса и проекта далеко
но есть интернет
Так вот
Наверно Valid обработается когда фокус стоял, а потом уходит с комбо.
а уменя текстовое поле, комбо, кнопка
В клике кнопки-тот метод, в котором должна выполнятся
проверка выбора в комбо
Терзают меня смутные сомнеия, что юзер может на комбо и "не взглянуть"
например сразу будет кликать выполнение метода, а там без выбора комбо куча ошибок
То есть фокус на комбо и не поподет

Позволю себе настаивать на проверки непустого значения комбо
в другом методе(ведь тексбокс ведь проверяет)
>В моем методе MyFind
*Проверка введенных значений
IF THIS.Text1.Value=""
MESSAGEBOX("Введите выражение")
THIS.Text1.SetFocus
RETURN
ENDIF
IF THIS.Combo1.ListIndex=0
MESSAGEBOX("Выберете поле ")
THIS.Combo1.SetFocus
RETURN
ENDIF
Так вот с текстовым полем то получается, а с комбо нет
Спасибо большое за внимание.
18 авг 03, 08:41    [303433]     Ответить | Цитировать Сообщить модератору
 Re: Combo  [new]
Burn
Guest
>Терзают меня смутные сомнеия, что юзер может на комбо и "не взглянуть"
например сразу будет кликать выполнение метода

Ну так в Click-е кнопки оправь юзера на тотже VALID комбо... Но в принципе проверка на Empty(This.Combo.Value) должна работать
18 авг 03, 09:01    [303448]     Ответить | Цитировать Сообщить модератору
 Re: Combo  [new]
кэт
Guest
Спсибо за помощь
И в валиде никак
Мылю класс.
18 авг 03, 09:40    [303487]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить