Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перебор контролов на страницах TabControl. / 11 сообщений из 11, страница 1 из 1
09.06.2004, 13:58
    #32554210
dencat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор контролов на страницах TabControl.
Задача, по значению True или False переменной SW поменять значение ReadOnly у текстовых полей находящихся на закладках TabControl.

Для простой формы пишу так
Код: plaintext
1.
2.
3.
4.
5.
6.
Dim oCurr As Object
For Each oCurr In Me.Controls()
            If TypeOf oCurr Is TextBox Then
                oCurr.ReadOnly = sw
            End If
        Next
и все работает

Для TabControl наверное надо так
Код: plaintext
1.
2.
3.
4.
5.
For Each oCurr In TabControl1.Controls()
            If TypeOf oCurr Is TextBox Then
                oCurr.ReadOnly = sw
            End If
        Next

но не работает, что я не так делаю?
...
Рейтинг: 0 / 0
09.06.2004, 14:22
    #32554280
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор контролов на страницах TabControl.
dencat
Для TabControl наверное надо так
Код: plaintext
1.
2.
3.
4.
5.
For Each oCurr In TabControl1.Controls()
            If TypeOf oCurr Is TextBox Then
                oCurr.ReadOnly = sw
            End If
        Next

но не работает, что я не так делаю?

Таким образом вы перебираете TabPage

Добраться до TextBox можно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
For Each oCurr In TabControl1.Controls()
    Dim myControl as Control
    For Each myControl In oCurr.Controls()
       If TypeOf myControl Is TextBox Then
              myControl.ReadOnly = sw
       End If
    Next
Next
...
Рейтинг: 0 / 0
09.06.2004, 14:27
    #32554304
dencat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор контролов на страницах TabControl.
Спасибо, сейчас попробую.
Как бы весь этот синтаксис и структуру выучить, побыстрее в смысле...:)
...
Рейтинг: 0 / 0
09.06.2004, 14:28
    #32554310
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор контролов на страницах TabControl.
dencatСпасибо, сейчас попробую.
Как бы весь этот синтаксис и структуру выучить, побыстрее в смысле...:)

Ctrl + Alt + J = Object Browser и вперед :-)
...
Рейтинг: 0 / 0
09.06.2004, 14:38
    #32554345
dencat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор контролов на страницах TabControl.
Спасибо, заработало так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
For Each oCurr In TabControl1.Controls()
            Dim myControl As Object
            For Each myControl In oCurr.controls()
                If TypeOf myControl Is TextBox Then
                    myControl.readOnly = sw
                End If
            Next
        Next

Но есть проблема, некоторые TextBox находятся в рамках,GroupBox, вот до них как добраться?
...
Рейтинг: 0 / 0
09.06.2004, 15:00
    #32554414
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор контролов на страницах TabControl.
dencat
Но есть проблема, некоторые TextBox находятся в рамках,GroupBox, вот до них как добраться?

Если вложенность известна , то можно легко доработать текущую процедуру проверить если текущий control является GroupBox, то запустить еще один For Each для него.

А вообще во времена великого VFP, я для этих целей писал рекурсивную процедуру перебирающей все контролы на форме.
Тоже самое можно сваять и здесь, будут "перебираться" все контролы на форме. Про эффективность такого подхода для "больших форм" не скажу, надо проверять.
...
Рейтинг: 0 / 0
09.06.2004, 15:52
    #32554613
dencat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор контролов на страницах TabControl.
Получилост так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
Dim oCurr As Object

            For Each oCurr In TabControl1.Controls()

                Dim myControl As Object

                For Each myControl In oCurr.controls()

                    'Обрабатываем контролы в GroupBox ах.
                    If TypeOf myControl Is GroupBox Then
                        Dim myGroupBox As Object
                        For Each myGroupBox In myControl.controls()
                            If TypeOf myGroupBox Is TextBox Then
                                myGroupBox.readOnly = sw
                            End If
                            If TypeOf myGroupBox Is Button Then
                                myGroupBox.enabled = Not sw
                            End If
                            If TypeOf myGroupBox Is DataGrid Then
                                myGroupBox.enabled = Not sw
                            End If
                        Next
                    End If
                    'Обрабатываем TextBox
                    If TypeOf myControl Is TextBox Then
                        myControl.readOnly = sw
                    End If
                    'Обрабатываем Button
                    If TypeOf myControl Is Button Then
                        myControl.enabled = Not sw
                    End If
                    'Обрабатываем DataGrid
                    If TypeOf myControl Is DataGrid Then
                        myControl.enabled = Not sw
                    End If

                Next

            Next
...
Рейтинг: 0 / 0
09.06.2004, 16:02
    #32554641
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор контролов на страницах TabControl.
dencatПолучилост так:


4+ :-)
...
Рейтинг: 0 / 0
09.06.2004, 16:42
    #32554796
dencat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор контролов на страницах TabControl.
Еще вопрос, каким образом можно очистить форму при закрытии, или при открытии.
А то открываю форму на просмотр данных, все гуд(Вашими стараниями:)), потом закрываю.
Нажимаю кнопку ввода новых данных, должна открываться таже форма но со всеми пустыми полями, открывается естественно заполненая данными, которые просматривал в последний раз.

Вопрос, есть ли какойнибудь метод, типа myform.clear() чтобы очистить форму, или нужно закручивать обратный цикл на присвоение текстовым полям "", а кнопки обратно включать?
...
Рейтинг: 0 / 0
10.06.2004, 07:25
    #32555387
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор контролов на страницах TabControl.
dencat
Нажимаю кнопку ввода новых данных, должна открываться таже форма но со всеми пустыми полями, открывается естественно заполненая данными, которые просматривал в последний раз.

Пусть класс формы ввода данных называется EditForm.
Из другой формы (mainForm) открываем модальный или не модальный EditForm

Код: plaintext
1.
2.
Dim f as EditForm = new EditForm()  ' Всегда создаем экземпляра нашего класса EditForm, следовательно и поля будут пустыми
f.ShowDialog()

dencat
Вопрос, есть ли какойнибудь метод, типа myform.clear() чтобы очистить форму, или нужно закручивать обратный цикл на присвоение текстовым полям "", а кнопки обратно включать?

Такого метода нет, но проблема решается (обычно не возникает, хотя я не знаю вашу задачу) при создании нового экземпляра формы при необходимости ее запуска
...
Рейтинг: 0 / 0
10.06.2004, 16:15
    #32556571
dencat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебор контролов на страницах TabControl.
Спасибо, сейчас попробую.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перебор контролов на страницах TabControl. / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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