Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
6 / 6 / 0
Регистрация: 18.07.2011
Сообщений: 77

FindComponent в VC++CLI

18.07.2011, 15:51. Показов 2863. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
напишыте пожалуйста как должен етот код выглядеть на C++CLI
вот мой код:

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
for (int i = 1; i < 10; i++)
((TCheckBox*)FindComponent("CheckBox"+In tToStr(i)))->Checked = false;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.07.2011, 15:51
Ответы с готовыми решениями:

findComponent
procedure TfmMain.Savedate; var I:integer; tempComponent:TlistBox; begin InputQuery('Введите полное имя...

Ошибка в FindComponent
Привет. Сделал вроде как программу, все было хорошо. В коде ничего не менял, ехе тоже, но через пару дней (тобиш сегодня) включаю ее, а она...

Ошибка с FindComponent
Не могу разобраться с FindComponent. Создал тестовую форму, на ней: BitBtn - 4 шт Button -1 шт Изначально BitBtn имеют пустые...

7
Эксперт С++
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
18.07.2011, 16:31
C++
1
2
3
4
5
6
private:
    void button1_Click(System::Object ^ sender, System::EventArgs ^ e)
        {
        for(int i = 1; i < 10; ++i)
           ((System::Windows::Forms::CheckBox ^)Controls["CheckBox" + i.ToString()])->Checked = false;
        }
или можно ещё так:
C++
1
2
3
4
5
6
private:
    void button1_Click(System::Object ^ sender, System::EventArgs ^ e)
        {
        for(int i = 1; i < 10; ++i)
           ((System::Windows::Forms::CheckBox ^)Controls->Find("CheckBox" + i.ToString(), false)[0])->Checked = false;
        }
1
6 / 6 / 0
Регистрация: 18.07.2011
Сообщений: 77
18.07.2011, 19:11  [ТС]
а как сделать штобы проверяло все баттоны а не только последний в моем коде?заранее спасибо за ответ. Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private:
    bool In()
            {       
                int y,y1,z1,x,x1,z,m,l,m1,l1;m1=pictureBox1->Width;l1=pictureBox1->Height;y1=pictureBox1->Top;x1=pictureBox1->Left;
                for(i=1;i<3;i++)
                {
                m=((System::Windows::Forms::Button ^)Controls["Button" + Convert::ToString(i)])->Width;
                l=((System::Windows::Forms::Button ^)Controls["Button" + Convert::ToString(i)])->Height;
                y=((System::Windows::Forms::Button ^)Controls["Button" + Convert::ToString(i)])->Top;
                x=((System::Windows::Forms::Button ^)Controls["Button" + Convert::ToString(i)])->Left;
                z1=y-y1;z=x-x1;}
                if((y<y1&&z1>=-1*l)&&(z<=m1-5&&z>=-1*m+5))return false;else return true;    
...
private: System::Void textBox1_TextChanged(System::Object^  sender, System::EventArgs^  e)
             {
                 int y=pictureBox1->Top;int x=pictureBox1->Left;
                 if((textBox1->Text=="W"&&y<=2||textBox1->Text=="w"&&y<=2)||In()==false)y-=0;else 
                 if((textBox1->Text=="W"&&y>2||textBox1->Text=="w"&&y>2)&&In()==true)y-=1;  
            }
Оно проверяет только button2 а баттон 1 оно игнорит почему?
0
Эксперт С++
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
18.07.2011, 19:35
KING1994, судя по всему, те значения m,l,x,y,z1,z, которые вычисляются в цикле, вычисляются для каждой кнопки, а уже потом , после цикла Вы проверяете значение этих переменных и делаете выбор, что вернуть. Так вот при такой логике после цикла все эти переменные будут содержать только характеристики , относящиеся к последней кнопке, и в if мы будем проверять условие только для этой последней кнопки. Наверное стоит завести bool переменную, if внести в цикл , условия проверять для каждой кнопки и обновлять эту булеву переменную на каждой итерации, учитывая каждую из кнопок.
1
6 / 6 / 0
Регистрация: 18.07.2011
Сообщений: 77
18.07.2011, 23:57  [ТС]
Ну вот if занес в цыкл и всеравно не работает.Теперь оно проверяет button1,а button2 игнорит(
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
bool In()
            {   
                int y,y1,z1,x,x1,z,m,l,m1,l1;m1=pictureBox1->Width;l1=pictureBox1->Height;
                y1=pictureBox1->Top;x1=pictureBox1->Left;
                for(i=1;i<3;i++)
                {
                m=((System::Windows::Forms::Button ^)Controls["Button" + Convert::ToString(i)])->Width;
                l=((System::Windows::Forms::Button ^)Controls["Button" + Convert::ToString(i)])->Height;
                y=((System::Windows::Forms::Button ^)Controls["Button" + Convert::ToString(i)])->Top;
                x=((System::Windows::Forms::Button ^)Controls["Button" + Convert::ToString(i)])->Left;
                z1=y-y1;z=x-x1;
                if((y<y1&&z1>=-1*l)&&(z<=m1-5&&z>=-1*m+5))return false;else return true;
                }
            }
0
Эксперт С++
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
19.07.2011, 00:10
KING1994, наверное, я не зря подписал в конце про булеву переменную, Вы как-то проигнорировали мои слова.
Не разбирался, что у Вас там точно творится, но, как понимаю, нужно следующее : требуется, чтобы условия, которые в if выполнялись и для первого Button, и для второго, если для обоих выполняется, то возвращаем true, иначе false(если неправильно понял, поправьте).
С учётом того, как я понял, код выглядеть будет примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
bool In()
    {       
    int y,y1,z1,x,x1,z,m,l,m1,l1;m1=pictureBox1->Width;l1=pictureBox1->Height;
    bool condition = true;
    y1=pictureBox1->Top;x1=pictureBox1->Left;
    for(i=1;i<3;i++)
        {
        m=((System::Windows::Forms::Button ^)Controls["Button" + Convert::ToString(i)])->Width;
        l=((System::Windows::Forms::Button ^)Controls["Button" + Convert::ToString(i)])->Height;
        y=((System::Windows::Forms::Button ^)Controls["Button" + Convert::ToString(i)])->Top;
        x=((System::Windows::Forms::Button ^)Controls["Button" + Convert::ToString(i)])->Left;
        z1=y-y1;z=x-x1;
        if((y<y1&&z1>=-1*l)&&(z<=m1-5&&z>=-1*m+5))condition = false;else condition = condition && true;
        }
    return condition;
    }
А в таком виде, как у Вас, просто на самой же первой итерации вернется true или false, а до Button2 дело и не дойдет.
1
6 / 6 / 0
Регистрация: 18.07.2011
Сообщений: 77
19.07.2011, 00:36  [ТС]
Спасибо большое все роботает.Я не игнорировал вашу булеан а просто не так вас понял и ничего из етого не выходило.Теперь я все понял)ещераз спасибо)

Добавлено через 10 минут
Только можно еще один вопрос?Што значит выражения else condition =condition&& true;и чем оно отличаетса от else condition=true;?заранее ещераз спасибо)
0
Эксперт С++
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
19.07.2011, 00:40
KING1994, на самом деле, оно здесь и не нужно, оно никак не влияет на значение переменной condition, если оно было true, то останется true, если было false, то и останется false, это я просто автоматически переработал код, не подумал поначалу, что код бесполезный, можете вырезать эту ветку else.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.07.2011, 00:40
Помогаю со студенческими работами здесь

совет с FindComponent
Помогите реализовать то что в комментариях и если есть ошибки то укажите пожалуйста. var Form1: TForm1; ...

FindComponent и Tedit
for i:=1 to 10 do begin Sed:='Edit'+IntToStr(i); scb:='ComboBox'+intToStr(i); with (FindComponent(Scb) as...

FindComponent ошибка
Имеется база данных со значениями. Которые мне нужно отобразить на форме, но при поиске объекта происходит ошибка в CheckBox: for i...

Findcomponent label
Здравствуйте! Асбсолютно идентично, но для label не работает, наверняка где-то затупил, но не могу понять, ткните пожалуйста, скрин...

FindComponent не находит компонент
Здравствуйте! Полчаса ломаю голову - почему FindComponent не видит динамически созданный компонент (EAccessViolation)? Подскажите,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru