powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как отметить одну или несколько строк в Grid?
57 сообщений из 57, показаны все 3 страниц
Как отметить одну или несколько строк в Grid?
    #36825819
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На форме есть Grid, отображающий курсор, как результат запроса к Informix. Можно ли и как реализовать возможность визуально помечать отдельные строки в Grid-е с целью дальнейшей обработки только отмеченных по нажатию кнопки на той же форме?
Сразу уточню, что таблица, из которой делается выборка, не содержит подходящего столбца (логического типа), к которому можно было бы привязать функцию отметки.
Создание такого столбца функцией CAST() не дает желаемого эффекта (или я не так ее использую).
Посоветуйте как быть?
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36825875
Юрий Р.Создание такого столбца функцией CAST() не дает желаемого эффекта (или я не так ее использую).
Посоветуйте как быть?Для начала показать свои попытки.
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36826058
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что конкретно показать? Запрос?
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36826084
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пожалуйста.

Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT idsubunit,iduser, pay_date, cash_symbol, cash_acc, transit_account, 
      COUNT(transit_account) pay_count, SUM(pay_sum) total_pay_sum, CAST('0' AS Integer) is_checked 
   FROM bst_payments 
   WHERE pay_date BETWEEN DATE('01.08.2010') AND DATE('26.08.2010') 
   GROUP BY cash_symbol, transit_account, pay_date, idsubunit, iduser, cash_acc 
   ORDER BY idsubunit, cash_symbol
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36826110
Юрий Р.,
прелестно. А теперр расскажите, что у Вас с этим запросом не сложилось. Особенно интересует согласование высказывания "таблица, из которой делается выборка, не содержит подходящего столбца (логического типа), к которому можно было бы привязать функцию отметки.
Создание такого столбца функцией CAST() не дает желаемого эффекта" с CAST('0' AS Integer) is_checked? Почему символ нуля? Где тут логическое поле?
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36826246
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Каюсь, пытался подстроится под тип значения свойства Value элемента Checkbox. Не нахожу как создать колонку типа Boolen.
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36826253
Юрий Р.Не нахожу как создать колонку типа Boolen.М-да...
Код: plaintext
, .f. as  is_checked 
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36826289
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще READWRITE добавь в конце селекта, а то он ReadOnly по умолчанию
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36826319
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс, это не заметил:
Юрий Р. курсор, как результат запроса к Informix.
хз как там логический тип задать
сделай поле числовое, чекбокс умеет с 0-1 работать
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36826344
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,

Так изначально числовым и делал, т.е. Integer
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36826345
Юрий Р.,
ха, кстати, про informix тоже не заметил.
Оставить запрос как есть без поля is_checked. Потом так:
авторselect * from <как там получившийсяя курсор называется> into cursor <как там получившийсяя курсор называется> readwrite
alter table <как там получившийсяя курсор называется> add column is_checked l
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36826353
Юрий Р.Dima T,

Так изначально числовым и делал, т.е. IntegerТолько почему то преобразованием из строки? Нафига? Просто 0 не прокатил бы?
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36826409
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проходящий.,

Код: plaintext
1.
..., ,f, as is_checked ...

- точно не катит.
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36826418
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сорри
Код: plaintext
1.
..., .f. as is_checked ...
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36826438
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий Р.Dima T,

Так изначально числовым и делал, т.е. Integer
Разбирайся - что-то не так дальше делал. Чекбокс нормально привязывается к полю типа Integer и пишет в него 0-1, 0 - это галка снята.
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36826641
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проходящий.Юрий Р.,
ха, кстати, про informix тоже не заметил.
Оставить запрос как есть без поля is_checked. Потом так:
авторselect * from <как там получившийсяя курсор называется> into cursor <как там получившийсяя курсор называется> readwrite
alter table <как там получившийсяя курсор называется> add column is_checked l
Очень жаль, но насчет ALTER TABLE фокс говорит "Function is not supported on remote tables".
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36826669
Юрий Р.проходящий.Юрий Р.,
ха, кстати, про informix тоже не заметил.
Оставить запрос как есть без поля is_checked. Потом так:
авторselect * from <как там получившийсяя курсор называется> into cursor <как там получившийсяя курсор называется> readwrite
alter table <как там получившийсяя курсор называется> add column is_checked l
Очень жаль, но насчет ALTER TABLE фокс говорит "Function is not supported on remote tables".Очень жаль, что некоторые или плохо читают, или плохо видят или еще что-то. Я запрос перед alter table от нечего делать писал?
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36827811
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проходящий.,

Почти заработало в таком виде:
Код: plaintext
1.
2.
3.
SELECT * FROM cashord_tmp INTO TABLE cashord
USE IN cashord_tmp
ALTER TABLE cashord ADD COLUMN is_checked L
Т.е. столбец добавляет, но при клике на нем в Grid выдает окно диалога открытия таблицы.
При попытке открыть говорит, что таблица уже юзается. Значение в ячейке грида и в таблице изменяется.
Не подскажете в чем ошибка?
Текст события Click для Chekbox в Grid:
Код: plaintext
1.
2.
replace cashord.is_checked WITH this.Value
this.Refresh
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36827924
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, Юрий Р. !!!
найди пять отличий в выделенном тексте и сделай как сказали, а не как захотелось:
Юрий Р.SELECT * FROM cashord_tmp INTO TABLE cashord
проходящий.select * from <как там получившийсяя курсор называется> [b]into cursor[b] <как там получившийсяя
курсор называется> readwrite

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36827936
Игорь Горбонос,
спасиб. А то бы я несколько резче бы ответил. :)
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36827980
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий Р., я уже выше писал что дело не в логическом поле, у тебя проблема где-то дальше.

В аpхиве пример формы с гридом где чекбокс привязан к полю integer
Смотри, сравнивай со своим, разбирайся чего у тебя не так
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36827999
Игорь Горбонос,
да, и еще заметил: в моих запросах стояла только одна единственная строка для замены "<как там получившийсяя курсор называется>" и никаких других вариантов не было. Никаких _tmp и без него.
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828020
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос & проходящий

Вчера я пробовал с "into cursor", выдавала какие-то ошибки типа "ALTER TABLE не поддерживает работу с таким источником...". Затем попробовал с таблицей - получилось. Собственно я предугадал Ваше негодование и снова переделал на "cursor". Так что пишу этот комент после того как все заработало. Но при клике на Checkbox все равно просит открыть таблицу. Из-за чего это может происходить? Может дело в RecordSourceType грида (у меня "1-Alias")?
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828030
Юрий Р.Может дело в RecordSourceType грида (у меня "1-Alias")?Сударь, может займемся делом и не будем заниматься гаданиями? Какое имя у курсора с данными для грида? Что написано в recordsource грида?
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828033
Юрий Р.Но при клике на Checkbox все равно просит открыть таблицу.Таки грид показывается? Без вопросов? И вопрос возникает только после трогания чекбокса?
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828044
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проходящий.Игорь Горбонос,
да, и еще заметил: в моих запросах стояла только одна единственная строка для замены "<как там получившийсяя курсор называется>" и никаких других вариантов не было. Никаких _tmp и без него.
Делал именно так. Получил "Alias name is already in use".
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828065
Юрий Р.проходящий.Игорь Горбонос,
да, и еще заметил: в моих запросах стояла только одна единственная строка для замены "<как там получившийсяя курсор называется>" и никаких других вариантов не было. Никаких _tmp и без него.
Делал именно так. Получил "Alias name is already in use".При наличии into table - сколько угодно. При наличии прочих ошибок или самодеятельности - тоже.
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828067
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проходящий.,

Имя алиаса: CASHORD,
RECORDSOURCE = "CASHORD",
Проблема существует именно при "трогании" ячейки с чекбоксом, а именно выдается диалоговое окно открытия таблицы.
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828073
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
	SELECT * FROM cashord INTO CURSOR cashord READWRITE
Результат - упомянутая выше ошибка.
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828079
Юрий Р.Проблема существует именно при "трогании" ячейки с чекбоксом, а именно выдается диалоговое окно открытия таблицы.Так какого лешего Вы прицепились к гриду и его источникам данных? Вот настройки чекбокса и ковыряйте. Там, наверняка, в recordsourse или controlsource стоит какойто левый алиас.
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828087
Юрий Р.
Код: plaintext
1.
	SELECT * FROM cashord INTO CURSOR cashord READWRITE
Результат - упомянутая выше ошибка.Покажите весь код начиная с команды sqlexec().
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828093
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделай так и никаких альтеров не надо:
Код: plaintext
SELECT .F. as is_checked, * FROM cashord_tmp INTO CURSOR cashord READWRITE
PS селект cashord в cashord не сработает
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828112
Dima TPS селект cashord в cashord не сработаетНе смотря на сие утверждение у меня такие конструкции работают в нескольких местах. Что я делаю неправильно?
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828125
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проходящий.,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
...
lnSQLResult = SQLEXEC(gnConnHandle, lcMySQL, "cashord")
	
this.cursorcreated = (lnSQLResult != - 1 )

IF !this.cursorcreated
	= MESSAGEBOX("Курсор не создан.",  16 , "Ошибка")
ELSE

	IF USED("cashord")
		USE IN cashord
	ENDIF
	SELECT * FROM cashord INTO CURSOR cashord READWRITE    && выдает указанную ошибку
	ALTER TABLE cashord ADD COLUMN is_checked L
ENDIF
...
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828129
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вижу глупость
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828135
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ох жешь, заставили дурака Богу молиться
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828161
Юрий Р.проходящий.,

Код: plaintext
1.
2.
3.
4.
5.
	IF USED("cashord")
		USE IN cashord
	ENDIF
	SELECT * FROM cashord INTO CURSOR cashord READWRITE    && выдает указанную ошибку
...
Вы хоть немного думали над своими действиями? Вы пробовали хотя бы в уме произвести те действия, которые Вы написали компьютеру?
В переводе не русский язык Ваш код выглядит так:

Код: plaintext
1.
2.
3.
если есть курсор cashord
 грохнуть этот курсор
конецесли
выбрать из грохнутого курсора и т.д.
Можно поинтересоваться, для чего Вы убиваете только что полученный курсор, с которым даже еще ничего не успели сделать? Чем он Вам помешал?
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828279
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проходящий.,

Да ладно Вам... Чего в спешке не бывает? Главное, что я это сам породил, сам и убил.
А вот чекбокс по прежнему глючит.

Дима Т.,

Должен огорчить. Таки селект cashord в cashord работает. Сам только что убедился.
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828306
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Юрий Р.
> А вот чекбокс по прежнему глючит.

грохни этот чекбокс и поставь туда новый и снова переназначь правильно свойства и методы.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828324
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящий.Dima TPS селект cashord в cashord не сработаетНе смотря на сие утверждение у меня такие конструкции работают в нескольких местах. Что я делаю неправильно?
Это я неправильно проверял: из DBF-ки в одноименный курсор не работает. Курсор в курсор работает.

Юрий Р.Дима Т.,
Должен огорчить. Таки селект cashord в cashord работает. Сам только что убедился.
Работает, а остальное читал что я выше писал? С полем integer тоже все работает.
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828362
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Юрий Р.Дима Т.,
Должен огорчить. Таки селект cashord в cashord работает. Сам только что убедился.
Работает, а остальное читал что я выше писал? С полем integer тоже все работает.
Но ведь должен же работать и с Logical?!
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828406
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий Р.Но ведь должен же работать и с Logical?!
У меня работают оба варианта. Самплес с Logical в архиве
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828410
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
архив не прицепился
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828543
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima Tархив не прицепился
Спасибо за примеры. Вылечилось удалением моего текста процедуры Click. Все работает по умолчанию.
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828547
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромная благодарность всем, кто помогал мне разобраться.
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36828649
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу добавить в заключение, что команда
Код: plaintext
1.
ALTER TABLE cashord ADD COLUMN is_checked L
вызывала ошибку "Invalid operation for the cursor" в том случае, если в результирующем курсоре были столбцы с именами длиннее 10-ти символов.
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36830416
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть несколько решений для выделения строк в Grid не через объект CheckBox, а по стандартным правилам Windows. Т.е. клавишей мыши с нажатыми клавишами Ctrl или Shift

Отметка произвольной группы записей в Grid'е - наиболее простое и понятное
Отметки в Grid
Petrovich Grid (AKA Grid от Petrovich)

В последних двух разобраться можно, но они значительно более сложны для понимания. Хотя, принцип, в общем-то, тот же.

Идея в том, что по некоему действию пользователя фиксируется некий идентификатор строки (в массиве или в курсоре) как признак того, что эта запись выбрана. А затем выполняется отрисовка фона опять же через методы Column.Dynamic... Отличия только в степени "крутизны" и различных "наворотов" накрученных вокруг этой идеи. Первый вариант содержит минимально необходимый код, поэтому его проще понять. Там ничего не "накручено".

Если надо, можно сделать и пометку через CheckBox. Причем вовсе не обязательно для этого создавать поле (хотя с полем все значительно упрощается). Идея в том, что в столбец Grid кладется два объекта CheckBox. Один с установленной галкой, другой - нет. И по клику мышки в Column.DynamicCurrentControl запоминаешь пометку и выбираешь какой из контролов отображать. Разумеется, столбец не привязан к какому-либо источнику данных и имеет Column.Bound = .F.
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36830933
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

Большое спасибо!
Обязательно разберусь и возьму на вооружение предложенные Вами варианты решения задачи (или один из них).
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36831082
FoxSoftware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Юрий Р.На форме есть Grid, отображающий курсор, как результат запроса к Informix. Можно ли и как реализовать возможность визуально помечать отдельные строки в Grid-е с целью дальнейшей обработки только отмеченных по нажатию кнопки на той же форме?
Сразу уточню, что таблица, из которой делается выборка, не содержит подходящего столбца (логического типа), к которому можно было бы привязать функцию отметки.
Создание такого столбца функцией CAST() не дает желаемого эффекта (или я не так ее использую).
Посоветуйте как быть?
Можно,
используй свойство колонок грида DynamicBackColor и функцию RGB().
Меняет цвет, но может влиять на скорость переотображения записей в таблице грид.
Дело вкуса.
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36831491
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ... Если надо, можно сделать и пометку через CheckBox. Причем вовсе не обязательно для этого создавать поле (хотя с полем все значительно упрощается). Идея в том, что в столбец Grid кладется два объекта CheckBox. Один с установленной галкой, другой - нет. И по клику мышки в Column.DynamicCurrentControl запоминаешь пометку и выбираешь какой из контролов отображать. Разумеется, столбец не привязан к какому-либо источнику данных и имеет Column.Bound = .F.
Что-то туго соображаю. Не совсем понятен механизм использования св-ва Column1.DynamicCurrentControl.
Я его пытаюсь изменить в событии Checkbox.Click, но выдается ошибка о несогласовании типа данных Value.
Код события не привожу, так как его наличие/отсутствие не влияет на ошибку. Даже при попытке узнать тип с помощью функции VARTYPE(thisform.grid1.column1.checkbox1.value) в Form1.Init выдается та же ошибка: Error with Checkbox1 - Value: data type mismatch.
Может покажете кусочек соответствующего кода?
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36832780
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий Р.Я его пытаюсь изменить в событии Checkbox.Click, но выдается ошибка о несогласовании типа данных Value.
В дизайнере по умолчанию установлено CheckBox.Value = 0. Это означает, что CheckBox ожидает значение типа Integer. А Вы, вероятно, пытаетесь присвоить ему значение типа Logical. Установите там же в дизайнере

CheckBox.Value = .F. или .T.

Это будет означать, что CheckBox ожидает значение типа Logical
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36833831
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

Не получается изменить значение св-ва Column1.DynamicCurrentControl. На любую попытку сделать это выдает сообщение:
Код: plaintext
1.
2.
3.
4.
Expression is invalid. Use a valid
expression for
DYNAMICCURRENTCONTROL
property.

Например такая строка вызывает сообщение:
Код: plaintext
1.
thisform.Grid1.Column1.DynamicCurrentControl = "Checkbox1"
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36834222
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. В столбец Grid необходимо добавить нужные объекты. По умолчанию, если добавляется CheckBox, то его имя будет CheckBox1

Как в дизайнере вставить объект в столбец Grid

2. Создаете новый метод формы. С именем, например, "SelectedControl"

3. В созданном методе пишите пока что одну строчку

Код: plaintext
return "CheckBox1"

4. В свойстве DynamicCurrentControl указываете в качестве значения вызов этого нового метода ThisForm.SelectedControl(). Если это происходит в дизайнере в окне Properties, то обрамлять кавычками не надо. Если присвоение происходит программно в коде какого-либо метода, то обязательно следует обрамить кавычками

Код: plaintext
thisform.Grid1.Column1.DynamicCurrentControl = "ThisForm.SelectedControl()"

Если это все заработало, то потом останется только записать в методе SelectedControl() алгоритм выбора имени нужного объекта

Замечание

В младших версиях FoxPro иногда вызов метода следовало предварять знаком равенства, как признаком того, что далее идет вызов некой функции.

Код: plaintext
thisform.Grid1.Column1.DynamicCurrentControl = "=ThisForm.SelectedControl()"

однако в VFP9 этого, как правило, не требуется
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36834279
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, по умолчанию, если вставляется CheckBox, то он получает имя "Check1". Посмотрите внимательно, какое имя (свойство Name) имеет объект, вставленный в столбец.

Обратите внимание, что свойство Caption после вставки будет иметь то же самое значение, что и Name. Но идентификация объекта происходит именно по значению Name. Не перепутайте.
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36836830
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ1. В столбец Grid необходимо добавить нужные объекты. По умолчанию, если добавляется CheckBox, то его имя будет CheckBox1

Как в дизайнере вставить объект в столбец Grid

2. Создаете новый метод формы. С именем, например, "SelectedControl"

3. В созданном методе пишите пока что одну строчку

Код: plaintext
return "CheckBox1"

4. В свойстве DynamicCurrentControl указываете в качестве значения вызов этого нового метода ThisForm.SelectedControl(). Если это происходит в дизайнере в окне Properties, то обрамлять кавычками не надо. Если присвоение происходит программно в коде какого-либо метода, то обязательно следует обрамить кавычками

Код: plaintext
thisform.Grid1.Column1.DynamicCurrentControl = "ThisForm.SelectedControl()"

Если это все заработало, то потом останется только записать в методе SelectedControl() алгоритм выбора имени нужного объекта

Замечание

В младших версиях FoxPro иногда вызов метода следовало предварять знаком равенства, как признаком того, что далее идет вызов некой функции.

Код: plaintext
thisform.Grid1.Column1.DynamicCurrentControl = "=ThisForm.SelectedControl()"

однако в VFP9 этого, как правило, не требуется

Большое спасибо за развернутый пример. Но у меня не все получилось.

В событии Click обоих Checkbox пишу
Код: plaintext
thisform.checkstate = this.Value && checkstate - заданное мною св-во формы
, в теле предложенного Вами метода пишу
Код: plaintext
1.
2.
3.
4.
5.
6.
LOCAL lcCheckBoxName as String

* CheckOn, CheckOff - имена Checkbox-ов

lcCheckBoxName = IIF(thisform.checkstate, "CheckOn", "CheckOff")

RETURN lcCheckBoxName
и ничего не происходит.

Пробовал несколько похожих вариантов. Догадываюсь, что дело в условии, по которому должны выбираться контролы. Но как еще его составить, если к столбцу не привязано поле да и другие поля не позволяют такое условие описать?

Похоже самый первый вариант (с полем в столбце) есть и самый рабочий.

Кстати, почему-то именно такой формат записи
Код: plaintext
thisform.Grid1.Column1.DynamicCurrentControl = "=ThisForm.SelectedControl()"
(так, немного экспериментировал) заработал у меня, хотя использую VFP9 SP2.
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36837067
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример во вложении. Написан на VFP9
...
Рейтинг: 0 / 0
Как отметить одну или несколько строк в Grid?
    #36837594
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

Спасибо. Идея понятна. Однако должен признаться, Ваш пример не совсем корректно отрабатывает.
Например, если щелкнуть мышкой в выделенном столбце Column3, Checkbox визуально изиеняет свое состояние на противоположное только после первого клика.

В любом случае большое спасибо Вам за такой обстоятельный диалог. По-крайней мере я знаю где "копать".
...
Рейтинг: 0 / 0
57 сообщений из 57, показаны все 3 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как отметить одну или несколько строк в Grid?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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