Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Вопросы начинающего разработчика Добавлено: 26.12.11 22:37  

Автор вопроса:  Harter
Visual Basic 6.0. Осваиваю MDI-интефейс. Возник первый вопрос.
Как перебрать все SDI-формы и получить их имена, если создаются они вот таким образом:
Dim NewForm As New frmWindow
Load frmWindow
NewForm.Show
NewForm.Caption = window_name & "#" & form_counter
?

Ответить

  Ответы Всего ответов: 16  

Номер ответа: 1
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #1
Добавлено: 26.12.11 23:53
Когда создаешь новую форму пиши что нить в .Tag
  1. NewForm.Tag = "new"


Если хочешь пробежаться по всем новым формам юзай цикл
  1. Dim Form As Form
  2. For Each Form In Forms
  3.     If Form.Tag = "new" Then
  4.         '...
  5.     End If
  6. Next Form

Ответить

Номер ответа: 2
Автор ответа:
 Harter



Вопросов: 2
Ответов: 7
 Профиль | | #2 Добавлено: 27.12.11 00:49
Большое спасибо за ответ, но я нифига не понял как же в моём случае всё-таки пробежаться по формам.
*MDI окно - frmMain, SDI окно(а)- frmChild.

    Dim Form As frmChild
    For Each Form In Forms 'В дебаггере Form="Nothing"
        MsgBox Form.Caption
    Next Form

Что такое "Forms"?

Ответить

Номер ответа: 3
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #3
Добавлено: 27.12.11 13:12
forms - это коллекция из всех загруженных форм

Ответить

Номер ответа: 4
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #4
Добавлено: 27.12.11 13:44
вот раскопал старый кот
  1. Dim frm As Form
  2. For Each frm In Forms
  3.     If frm.Name = "frmTile" Then
  4.         ....
  5.     End If
  6. Next frm

Ответить

Номер ответа: 5
Автор ответа:
 Harter



Вопросов: 2
Ответов: 7
 Профиль | | #5 Добавлено: 30.12.11 12:26
Дошло) Спасибо.

Возник ещё один вопрос. Можно ли как-то сделать дополнительные свойства (контейнера данных) для PictureBox'а? Мне надо хранить в нём ещё два изображения (помимо основного) и четыре переменных типа Integer.

Ответить

Номер ответа: 6
Автор ответа:
 Серёга



ICQ: 262809473 

Вопросов: 17
Ответов: 561
 Web-сайт: houselab.narod.ru
 Профиль | | #6
Добавлено: 30.12.11 19:16
Можно ли как-то сделать дополнительные свойства

Создать новый класс

Ответить

Номер ответа: 7
Автор ответа:
 Harter



Вопросов: 2
Ответов: 7
 Профиль | | #7 Добавлено: 30.12.11 19:45
Если с помощью Type и ReDim, тогда ясно. Если как-то иначе - поподробнее пожалуйста.
А вообще жаль, что нельзя добавить именно к PictureBox'у. Это бы избавило меня от лишнего гемора.

Ответить

Номер ответа: 8
Автор ответа:
 Harter



Вопросов: 2
Ответов: 7
 Профиль | | #8 Добавлено: 30.12.11 20:01
И ещё, как отловить событие сворачивания/разворачивания окна? Просто Resize срабатывает в обоих случаях...

Ответить

Номер ответа: 9
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #9 Добавлено: 31.12.11 00:12
ну вот в обоих случаях смотри WindowState

Ответить

Номер ответа: 10
Автор ответа:
 Harter



Вопросов: 2
Ответов: 7
 Профиль | | #10 Добавлено: 02.01.12 02:15
AgentFire, WindowState помог. Спасибо!

  1. Public Type Obj
  2.     pic As PictureBox
  3. ...
  4. End Type
  5.  
  6. Dim my_obj As Obj
  7.  
  8. ...
  9. 'Создание PictureBox'а.
  10. my_obj.pic.Visible=True 'Здесь и получаю ошибку '91': Object variable or With block variable not set.


Нагуглил, как правильно создавать объект, но не понял как использовать Set в моём случае:
  1. 'Dim MyObject As Object ' Create object variable.
  2.  'Set MyObject = Sheets(1) ' Create valid object reference.
  3.  'MyCount = MyObject.Count ' Assign Count value to MyCount.

Ответить

Номер ответа: 11
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #11
Добавлено: 02.01.12 19:51
  1. Option Explicit
  2. Private Type picWithParams
  3.     pic1 As StdPicture
  4.     pic2 As StdPicture
  5.     a As Long
  6.     b As Long
  7.     c As Long
  8.     d As Long
  9. End Type
  10. Dim x As picWithParams
  11.  
  12. Private Sub Command1_Click()
  13.     Static loadedPic As Boolean
  14.     If loadedPic Then _
  15.         Set Picture1.Picture = x.pic2 _
  16.     Else Set Picture1.Picture = x.pic1
  17.     loadedPic = Not loadedPic
  18. End Sub
  19.  
  20. Private Sub Form_Load()
  21.     Set x.pic1 = LoadPicture("D:\_1235586635666s.jpg")
  22.     Set x.pic2 = LoadPicture("D:\_1235586684021s.jpg")
  23. End Sub

Ответить

Номер ответа: 12
Автор ответа:
 Harter



Вопросов: 2
Ответов: 7
 Профиль | | #12 Добавлено: 06.01.12 23:31
Winand, спасибо, теперь понятно, как загружать и хранить изображения, но вопрос заключался в том, как проделать это всё с PictureBox'ом. Никто не подскажет?

Ответить

Номер ответа: 13
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #13
Добавлено: 06.01.12 23:53
Что - это всё?

Ответить

Номер ответа: 14
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #14
Добавлено: 06.01.12 23:57
в пикчербоксе нельзя хранить более одного изображения. У него только одно свойство Picture. Дополнительные данные можно хранить в поле Tag, если припрёт.

Ответить

Номер ответа: 15
Автор ответа:
 Harter



Вопросов: 2
Ответов: 7
 Профиль | | #15 Добавлено: 07.01.12 17:32
Извините, что непонятно выразился. Я хотел спросить, как хранить PictureBox в типе, т.е. как создавать его и как к нему потом обращаться?
  1. Type ololo
  2.     Pic As PictureBox
  3.     Img1 As StdPicture
  4.     Img2 As StdPicture
  5.     ...
  6. End Type

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам