Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / 2 combo box / 15 сообщений из 15, страница 1 из 1
10.02.2005, 08:14
    #32909313
PAUL fARB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2 combo box
How do I filter the items displayed in a second combo or

list box based on the selection made in the first?
...
Рейтинг: 0 / 0
10.02.2005, 08:40
    #32909338
Hel!Riser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2 combo box
/topic/64700&hl=%ea%ee%ec%e1%ee+set+filter
...
Рейтинг: 0 / 0
10.02.2005, 10:18
    #32909513
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2 combo box
1. Rebuild/requery the row source for the 2nd control each time the 1st changes its selection (I prefer arrays and "select ... into array" constructions to use).
2. Use relations.
3. Use SET KEYs TO.
4. Use filters.
...
Рейтинг: 0 / 0
10.02.2005, 10:21
    #32909514
Hel!Riser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2 combo box
Urri
2. Use relations.
will not give effect
...
Рейтинг: 0 / 0
10.02.2005, 17:05
    #32910652
PAUL fARB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2 combo box
Urri1. Rebuild/requery the row source for the 2nd control each time the 1st changes its selection (I prefer arrays and "select ... into array" constructions to use).
2. Use relations.
3. Use SET KEYs TO.
4. Use filters.

Eto, to chto ya i delal, no y menya ne polychaetsya. On poprezhnemy vybiraet vse dannye, a ne fil'tryet ix.
Y menya v kazhdom pole sidit array, mozhet iz-za etogo problemy.
1-e combo:
SELECT ids.sys_id;
FROM IDS;
WHERE IDS.FLAGS LIKE "N";
INTO ARRAY COMBO1_ARR

2-e combo:
SELECT EMP_ID, FIRST_NAME, LAST_NAME;
FROM EMPLOYEES;
WHERE SUBSTR(FLAGS,2,1) = 'S';
OFFICE_ID = THISFORM.COMBO3.VALUE;
ORDER BY 3;
INTO ARRAY COMBO2_ARR

Teper' on vydaet resyl'tat s value in OFFICE_ID field tol'ko po pervomy recordy.
Pri izmenenii dannyx v pervom combo, ostaetsya tozhe znachenie. Ya dymaju, chto value v OFFICE_ID fielde, ostaetsya tozhe i ne prinimaet drygix znachenij, a vot pochemy, ya neznaju.
Delaju refresh() formy i refresh() combo, takzhe delaju requery, no nichego nerabotaet.
Proboval sozdat' value = THISFORM.COMBO3.VALUE
prosto byt' yverenym, chto znachenie popadaet v 1-j combo, no i zdes' nichego nepolychaetsya.
Mozhet ya nepravel'no propisal ARRAY?!
...
Рейтинг: 0 / 0
10.02.2005, 17:27
    #32910712
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2 combo box
Combo2.Requery() - обновляет источник данных для Combo. Т.е. то, что указано в RowSource

Combo2.Refresh() - обновляет текущее выбранное значение. Т.е. DisplayValue.
...
Рейтинг: 0 / 0
10.02.2005, 17:39
    #32910737
PAUL fARB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2 combo box
ВладимирМCombo2.Requery() - обновляет источник данных для Combo. Т.е. то, что указано в RowSource

Combo2.Refresh() - обновляет текущее выбранное значение. Т.е. DisplayValue.

postavil eto v VALID, no nichego neproisxodit. :-(
...
Рейтинг: 0 / 0
10.02.2005, 17:58
    #32910784
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2 combo box
Смотри вложение. Пример написан в VFP6SP5
...
Рейтинг: 0 / 0
10.02.2005, 19:02
    #32910945
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2 combo box
Hel!Riser Urri
2. Use relations.
will not give effect
AFAIR, it will (for listboxes).
...
Рейтинг: 0 / 0
10.02.2005, 19:07
    #32910954
PAUL fARB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2 combo box
ВладимирМСмотри вложение. Пример написан в VFP6SP5

YRA!!! YRA!!! YRA!!!
Vse zarabotalo!
Spasibo bol'shoe vsem kto otkliknylsya. Etot forum VYSHIJ KLASS!
Eshe raz vsem spasibo!

Da, problema byla v tom, chto ya rabotal so vtorym COMBO, a pro pervoe COMBO kak to i nepodymal. Pomestiv v pervom COMBO::VALID sledyjushij code, vse zarabotalo:

LOCAL lnCombo1
lnCombo1 = This.Value

SELECT EMP_ID, FIRST_NAME, LAST_NAME, OFFICE_ID;
FROM employees;
where OFFICE_ID = m.lnCombo3;
ORDER BY 3;
INTO ARRAY COMBO2_ARR

ThisForm.Combo2.Requery()
ThisForm.Combo2.Refresh()

Spasibo eshe raz vsem!

P.S. Pol'zyyas' vashim xoroshim raspolozhenie, proshy pomoch' mne s drygim voprosom. Delo v tom, chto ya nikogda ne rabotal s FoxPro (do etogo ya bol'she rabotal s MS ACCESS. A vot nashel novyju raboty i poslednii 3 mesyaca rabotaju s FoxPro, poetomy dlya menya mnogoe sdes' v novinky.
Tak vot, vopros zakljuchaetsya v sledyjushem::
y menya v tablice est' BUTTONSET so standartnymi knopkami (TOP, PREV, NEXT, BOTTOM, FIND, PRINT, ADD, EDIT, DELETE, EXIT). Vse knopki iz WIZARDA. Knopki ADD i EDIT, pri nazhatie menyajut svoje nazvanie (LABLE). Esli nazhat' ADD, to ADD menyaetsya na SAVE, a EDIT na REVERT. To zhe samoe proisxodit pri nazhatii EDIT.
Pisat' kakie libo kody mozhno tol'ko v ADD i EDIT knopkax, a SAVE i REVERT dazhe net v BUTTONSETe. Ya neznaju kak mne posmotret' etot kod kogda knopki menyajut svoe nazvanie i poetomy ya ne ponimaju kak mne s nimi operirovat'.
Naprimer mne nyzhno bylo sdelat' tak, chto pri nazhatie na EDIT, kakoj nibyd' field na etoj forme stanovitsya ENABLED = .F., a pri nazhatii REVERT (chto yavlyaetsya toj zhe EDIT) opyat' stanovitsya ENABLED = .T.
Ya reshil ety zadachy drygim sposobom, no vse taki interesno, kak s etim borotsya na bydyjushee.

Eto moe reshenii etoj zadachi.

DODEFAULT()
txtbtns.cmdEdit::click
THISFORM.COMMANDGROUP1.Command1.ENABLED = .F.

txtbtns.cmdEdit::click
WITH THISFORM
IF .CHECK1.ENABLED = .F.
THISFORM.COMMANDGROUP1.Command1.ENABLED = .T.
ENDIF
.Refresh
ENDWITH

Spasibo zaranee za vnimanie!!
...
Рейтинг: 0 / 0
10.02.2005, 21:11
    #32911099
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2 combo box
Цель визардов - это обучение. Использовать их в готовых приложениях я очень бы не советовал. Т.е. в принципе можно, но только в том случае, если Вы "расковыряли" его "до нутра" и вполне понимаете что и как он делает.

Визарды создаются не сами по себе, а на основе классов, физически расположенных в директории

Home()+"Wizards\"

Функция Home() возвращает путь доступа к папке в которой собственно и установлен FoxPro.

Открываете форму, созданную визардом и смотрите свойства:

ButtonSet1.Class - какой класс был использован для создания объекта
ButtonSet1.ClassLibrary - это в каком файле находится используемый класс.

Можно начать с класса собственно формы, но на ней нет кнопок.

Закрываем форму и открываем сам класс, дав команду в командном окне

Код: plaintext
modify class txtBtns of (Home()+'wizards\wizbtns.vcx')

На всякий случай, можно еще посмотреть свойство ParentClass на случай, если класс создан на базе другого класса (иерархия классов). Но здесь не тот случай. Класс Container - это один из базовых классов FoxPro влезть в код которого уже невозможно.

Ну, а дальше, смотрим код события Click() для нужной кнопки. Пройдясь по цепочке вызываемых методов упремся в метод SetCaption(), который просто заменяет Caption тех же самых кнопок. Ну, там по ходу дела, еще флаги расставляются, которые и определяют как именно будет обработано нажатие кнопки.

Вобщем, код достаточно запутанный. Лично мне не нравится не столько то, что там написано, сколько сама идея навигации по таблице при помощи кнопок типа "Вперед", "Назад". Более естесственным является отображение списка.
...
Рейтинг: 0 / 0
11.02.2005, 22:43
    #32912634
PAUL fARB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2 combo box
ВладимирМЦель визардов - это обучение. Использовать их в готовых приложениях я очень бы не советовал. Т.е. в принципе можно, но только в том случае, если Вы "расковыряли" его "до нутра" и вполне понимаете что и как он делает.

Визарды создаются не сами по себе, а на основе классов, физически расположенных в директории

Home()+"Wizards\"

Функция Home() возвращает путь доступа к папке в которой собственно и установлен FoxPro.

Открываете форму, созданную визардом и смотрите свойства:

ButtonSet1.Class - какой класс был использован для создания объекта
ButtonSet1.ClassLibrary - это в каком файле находится используемый класс.

Можно начать с класса собственно формы, но на ней нет кнопок.

Закрываем форму и открываем сам класс, дав команду в командном окне

Код: plaintext
modify class txtBtns of (Home()+'wizards\wizbtns.vcx')

На всякий случай, можно еще посмотреть свойство ParentClass на случай, если класс создан на базе другого класса (иерархия классов). Но здесь не тот случай. Класс Container - это один из базовых классов FoxPro влезть в код которого уже невозможно.

Ну, а дальше, смотрим код события Click() для нужной кнопки. Пройдясь по цепочке вызываемых методов упремся в метод SetCaption(), который просто заменяет Caption тех же самых кнопок. Ну, там по ходу дела, еще флаги расставляются, которые и определяют как именно будет обработано нажатие кнопки.

Вобщем, код достаточно запутанный. Лично мне не нравится не столько то, что там написано, сколько сама идея навигации по таблице при помощи кнопок типа "Вперед", "Назад". Более естесственным является отображение списка.


Spasibo bol'shoe!
Ochen' yprostilo moj kod.

A eshe vopros, mozhno? :-)
Vopros sledyjushij: Kak vtyknyt' hyperlink na formy (k label) ili pod knopky. Neobxodimo, chto by etot link otkryval v browsere document kotoryj ya sdelal (.mht - eto PowerPoint dlya HTML)
V MS Accesse eto bylo legko sdelat', a vot sdes' ochen' kak to slozhno. Mozhet est' legche sposob prosto otkryt' IE Browser?! Spasibo!!
...
Рейтинг: 0 / 0
11.02.2005, 23:37
    #32912655
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2 combo box
Вместе с FoxPro поставлется несколько проектов примеров. Посмотри проект Solution.pjx

Modify Project (Home(2)+"\Solution\Solution.pjx")

И в нем форму

HyperLink.scx

Эта форма использует класс из библиотеки

Home()+"FFC\_hyperLink.vcx"

Если опустить всю эту красоту, то по простому получается примерно так:

-) Кладешь на форму НЕ визуальный объект "Hyperlink Object". Он есть в стандартной панели инструментов "Forms Control Toolbars" с иконкой в виде глобуса

-) Кладешь на форму Label. И настраиваешь его Caption и шрифт как текст гиперссылки, а в событии Click() этого Label пишешь примерно такой код

ThisForm.Hyperlink1.NavigateTo("http://www.sql.ru/forum/actualtopics.aspx?bid=37")

Вот, собственно, и весь код
...
Рейтинг: 0 / 0
13.02.2005, 19:10
    #32913431
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2 combo box
Hi PAUL fARB!

Зачем тебе hyperlink? Это-же локальный файл :) Пользуй ShellExecute (пример
есть в FFC, но IMHO проще тут поиск сделать и посмотреть как в 3 строки это
замутить :) )

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
15.02.2005, 23:10
    #32917390
PAUL fARB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
2 combo box
ВладимирМВместе с FoxPro поставлется несколько проектов примеров. Посмотри проект Solution.pjx

Modify Project (Home(2)+"\Solution\Solution.pjx")

И в нем форму

HyperLink.scx

Эта форма использует класс из библиотеки

Home()+"FFC\_hyperLink.vcx"

Если опустить всю эту красоту, то по простому получается примерно так:

-) Кладешь на форму НЕ визуальный объект "Hyperlink Object". Он есть в стандартной панели инструментов "Forms Control Toolbars" с иконкой в виде глобуса

-) Кладешь на форму Label. И настраиваешь его Caption и шрифт как текст гиперссылки, а в событии Click() этого Label пишешь примерно такой код

ThisForm.Hyperlink1.NavigateTo("http://www.sql.ru/forum/actualtopics.aspx?bid=37")

Вот, собственно, и весь код

SPASIBO, OCHEN' POMOGLI MNE!!! VSE POLYCHILOS'!!!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / 2 combo box / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]