powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как отметить одну или несколько строк в Grid?
7 сообщений из 57, страница 3 из 3
Как отметить одну или несколько строк в 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
7 сообщений из 57, страница 3 из 3
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как отметить одну или несколько строк в Grid?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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