Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Как узнать если на форме конкретный обьект типа command44  [new]
Valerii
Member

Откуда:
Сообщений: 749
Народ,
На форме есть набор кнопок, которые нужно нажать набрав определенные символы с клавиатуры.
Допустим есть кнопка command44 на форме и ее Caption = '44'. Пользователь набирает "44" и я устнавливаю фокус на эту кнопку. Но вдруг он сдури наклацал непонятно что, я должен проверить есть ли такая кнопка на форме типа command555.
Можно проехаться циклом по всем объектам формы - но ведь должен быть механизм проверки существования конкретного обьекта?...
Всем спасибо.
26 сен 08, 12:02    [6231986]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать если на форме конкретный обьект типа command44  [new]
проходящий.
Guest
автор
но ведь должен быть механизм проверки существования конкретного обьекта?...

Thisform.Command1 и Thisform.Container1.Command1 это одно и тоже или разные? Это конкретные объекты или нет?
26 сен 08, 12:05    [6232018]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать если на форме конкретный обьект типа command44  [new]
Valerii
Member

Откуда:
Сообщений: 749
На форме много кнопок и находяться они просто на форме.
то есть
WITH thisForm
.command1. ...
.command2. ...
.command3. ...
.command4. ...
.command5. ...
....
.command100. ...
ENDWITH
26 сен 08, 12:20    [6232128]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать если на форме конкретный обьект типа command44  [new]
homik
Member

Откуда:
Сообщений: 146
Retrieves an attribute for a property, event, method, or object.

PEMSTATUS(oObjectName | cClassName, cProperty | cEvent | cMethod
| cObject, nAttribute
26 сен 08, 12:28    [6232185]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать если на форме конкретный обьект типа command44  [new]
проходящий.
Guest
Valerii
На форме много кнопок и находяться они просто на форме.

И что, на этот частный случай не действуют принципы общего случая? Объекты от этого стали сами по себе, без привязок к родительским объектам?
И чем в этом конкретном случае не нравится type('thisform.command'+str(yjvth_ryjgrb))='О' ?
26 сен 08, 12:29    [6232191]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать если на форме конкретный обьект типа command44  [new]
12345зайчик
Guest
type('thisform.command'+str(yjvth_ryjgrb))='О' 
это работает медленно

более быстрый вариант
 
if pemstatus(thisform, "command'+ltrim(str(yjvth_ryjgrb)),5)
   local loCmd
   loCmd = getpem(thisform, "command'+ltrim(str(yjvth_ryjgrb)))
   if vartype(loCmd)="O"
      ....
26 сен 08, 13:58    [6232838]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать если на форме конкретный обьект типа command44  [new]
Valerii
Member

Откуда:
Сообщений: 749
в VFP 6.0 этого нет
pemstatus(thisform, "command'+ltrim(str(yjvth_ryjgrb)),5)
26 сен 08, 17:25    [6234416]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать если на форме конкретный обьект типа command44  [new]
Valerii
Member

Откуда:
Сообщений: 749
соррри , есть ... ;-)))
26 сен 08, 17:26    [6234422]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать если на форме конкретный обьект типа command44  [new]
HalK2
Member

Откуда:
Сообщений: 758
Valerii
...
Можно проехаться циклом по всем объектам формы - но ведь должен быть механизм проверки существования конкретного обьекта?...
Всем спасибо.


Вот мелкий пример, пригодится:
x=0
FOR EACH oButton IN thisform.Controls
    IF LOWER(oButton.BaseClass) = 'commandbutton' && регистр чувствителен
       x=x+1
    ENDIF
ENDFOR
MESSAGEBOX('На форме '+ALLTRIM(STR(x))+' кнопок')
27 сен 08, 00:09    [6235246]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить