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

list box based on the selection made in the first?
...
Рейтинг: 0 / 0
2 combo box
    #32909338
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/topic/64700&hl=%ea%ee%ec%e1%ee+set+filter
...
Рейтинг: 0 / 0
2 combo box
    #32909513
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
2 combo box
    #32909514
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Urri
2. Use relations.
will not give effect
...
Рейтинг: 0 / 0
2 combo box
    #32910652
PAUL fARB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
2 combo box
    #32910712
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Combo2.Requery() - обновляет источник данных для Combo. Т.е. то, что указано в RowSource

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

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

postavil eto v VALID, no nichego neproisxodit. :-(
...
Рейтинг: 0 / 0
2 combo box
    #32910784
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотри вложение. Пример написан в VFP6SP5
...
Рейтинг: 0 / 0
2 combo box
    #32910945
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hel!Riser Urri
2. Use relations.
will not give effect
AFAIR, it will (for listboxes).
...
Рейтинг: 0 / 0
2 combo box
    #32910954
PAUL fARB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМСмотри вложение. Пример написан в 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
2 combo box
    #32911099
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Цель визардов - это обучение. Использовать их в готовых приложениях я очень бы не советовал. Т.е. в принципе можно, но только в том случае, если Вы "расковыряли" его "до нутра" и вполне понимаете что и как он делает.

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

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
2 combo box
    #32912634
PAUL fARB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМЦель визардов - это обучение. Использовать их в готовых приложениях я очень бы не советовал. Т.е. в принципе можно, но только в том случае, если Вы "расковыряли" его "до нутра" и вполне понимаете что и как он делает.

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

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
2 combo box
    #32912655
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместе с 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
2 combo box
    #32913431
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi PAUL fARB!

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

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
2 combo box
    #32917390
PAUL fARB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМВместе с 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
15 сообщений из 15, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / 2 combo box
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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