powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Toolbar и 2Gridа
10 сообщений из 10, страница 1 из 1
Toolbar и 2Gridа
    #35569159
Zitz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситуация: есть Toolbar, есть форма на которой расположены 2 грида. Необходимо при нажатии кнопки Toolbara в зависимости от того на каком гриде фокус вызвать соответствующую форму.
Вопрос: как определить на каком гриде находится фокус? Пробовала через _screen.activeform.activecontrol, выдает ошибку ACTIVECONTROL не является объектом.
...
Рейтинг: 0 / 0
Toolbar и 2Gridа
    #35569263
BRROE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Классический вариант:
Создать на форме Property в которое гриды будут в событии When записывать ссылку на себя/свое имя или еще чего, в событии VALID "Выписываться"
Затем в Toolbar считывать и делать вызов нужной формы.
...
Рейтинг: 0 / 0
Toolbar и 2Gridа
    #35569419
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ToolBar должен обрабатывать активную в данный момент форму, то логично делегировать эту обработку самой форме. Т.е. вызвать метод формы. А уж форма сама разберется "кто на ком стоял".

Если _screen.activeform.activecontrol выдает ошибку, что activecontrol - не объект, то это означает, что либо Вы деактивировали форму (переключились на другую форму), либо не установили фокус ни на один объект активной в данный момент формы.

На всякий случай напомню, что "активная" и "видимая" - это две большие разницы.
...
Рейтинг: 0 / 0
Toolbar и 2Gridа
    #35569446
При переходе фокуса на грид становится активной рабочая область с данными для грида. Отсюда можно плясать.
...
Рейтинг: 0 / 0
Toolbar и 2Gridа
    #35569535
Zitz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну во-первых, спасибо за ответы :). Во-вторых, тогда другой вопрос: при клике на пустом гриде фокус к нему переходит? Проверила какая форма является активной - все в порядке, та что нужна. Добавила метод формы в котором для проверки вывожу алиас таблицы, открытой в данный момент в рабочей области. Результат - таблица, которая источник для 2го грида, этот результат выводится вне зависимости от того, на каком гриде был клик. Попробовала сделать как предложил BRROE, результат тот же, выводится наименование 2го грида в независимости от того, на каком гриде был клик.
Оба грида пусты.
...
Рейтинг: 0 / 0
Toolbar и 2Gridа
    #35569621
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZitzОба грида пусты.
Наверно поэтому вариант BRROE не срабатывает, но копать надо в эту сторону.
Запусти в отладчике "Event tracking" попереходи между гридами и посмотри какие методы у грида отрабатывают, выбери что больше подойдет, туда и поставь изменение свойства какой грид активный.
...
Рейтинг: 0 / 0
Toolbar и 2Gridа
    #35569942
12345зайчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Zitz

посмотрите пример, там без тулбара,
но также используется предварительное сохр-е ссылок

Вам правильно посоветовали
авторкоторое гриды будут в событии When записывать ссылку на себя
...
Рейтинг: 0 / 0
Toolbar и 2Gridа
    #35570307
BRROE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если гриды пусты, то и желания надавить на кнопку тулбара возникать не должно.

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

Вот Вам пример, попроще.

***********************************
create cursor test1 (UID I)
For lnI = 1 to 10
Insert into test1 (UID) values (lnI)
EndFor
go 1 in "test1"


SElect Uid+10 as UID from test1 into cursor Test2

Public oTollBar

oTollBar = CreateObject('MySuperToolBar')
oForm1 = CreateObject('TestForm')
oForm1.Top = 50
oForm1.Left = 100

oForm2 = CreateObject('TestForm')
oForm2.Top = 100
oForm2.Left = 200

oTollBar.show()
oForm1.Show()
oForm2.Show()
Read Event

clear memory
close all
quit

*------------------------------------------------------
define class TestForm as Form
height = 150
Width = 350
add object grid1 as LinkGrid with top = 5, Left =5,RecordSource = "Test1"
add object grid2 as LinkGrid with top = 5, Left =130, RecordSource = "Test2"
add object Txt1 as TextBox with top = 110, Left =5

Procedure QueryUnload
thisform.Release()
EndPRoc
EndDefine

*------------------------------------------------------
Define Class MySuperToolBar as ToolBar
oGrid = .Null.
Add object cmdVizov as commandButton with top = 1, Left =1, Width = 100,Caption = "Вызофф..."

Procedure oGrid_assign
Lparameters vNewVal
This.cmdVizov.Enabled = (VarType(m.vNewVal) = 'O')
This.oGrid = m.vNewVal
EndProc

Procedure cmdVizov.Click
This.Parent.oGrid.BackColor = rgb(250,200,200)
EndProc

Procedure destroy
clear events
EndProc
EndDefine

*------------------------------------------------------
Define Class LinkGrid as grid
Width = 120
Height = 100

Procedure When
IF VARTYPE(oTollBar)='O' .And. .Not. Isnull(oTollBar)
oTollBar.oGrid = this
ENDIF
EndProc

Procedure Valid
IF VARTYPE(oTollBar)='O' .And. .Not. Isnull(oTollBar)
oTollBar.oGrid = .Null.
This.ResetToDefault('BackColor')

ENDIF
EndProc
EndDefine
...
Рейтинг: 0 / 0
Toolbar и 2Gridа
    #35570471
BRROE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пустой курсор создать для этого примера можно так:
Select UID from test1 where .F. into cursor Test2
...
Рейтинг: 0 / 0
Toolbar и 2Gridа
    #35570919
Zitz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем отвечающим, буду пробовать :)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Toolbar и 2Gridа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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