строка меню "Окно"

  • Автор темы Alex77777
  • Дата начала
A

Alex77777

#1
при исользовании материнского окна и его дочерних окно иногда требуется, чтобы открытые окна располагались в определенном порядке: горизонтально, каскадом, вертикально, во весь экран и т.п. Я знаю только первые три константы Arrange vbTileHorizontal, Arrange vbTileVertical и Arrange vbCascade, а вот остальные не знаю, кто знает другие константы расположения дочерних окон напишите плиз.
 
A

Alex77777

#3
как я понял чтоб сделать дочернее окно во весь экран нужно в коде материнского окна строки меню"Окно" прописать просто константу "VbArrangeIcons" (т.к. другие константы работают), только вот она не работет, может ли это быть из-за того что я при загрузке формы задаю ее ширину-высоту?
 

Normann

Well-known member
09.08.2007
168
1
#4
Любая vb константа это всего лишь число, в основном это перечисления от 0 и т.д. . Те константы которые ты перечислил и есть такое перечисление, в твоем случае это 1, 2 и 0 соответсвенно (не веришь проверь (msgbox vbTile.....)). Что тебе мешает использовать просто следующие числа которые будут соответствовать другим константам?
 
A

Alex77777

#5
долго меня не было в городе
пишу msgbox vbTile3 ит.д. ругается: "переменная не определена",
либо по другому, тоже ругается:ошибку синтаксиса"
может я просто тормоз :) , и чего то не догоняю :) , разъясните мне пожалуйста поподробнее.
 

Normann

Well-known member
09.08.2007
168
1
#6
долго меня не было в городе
пишу msgbox vbTile3 ит.д. ругается: "переменная не определена",
либо по другому, тоже ругается:ошибку синтаксиса"
может я просто тормоз :( , и чего то не догоняю :) , разъясните мне пожалуйста поподробнее.
А на кой черт ты скажи ты так пишешь? Вообщето под ..... подразумевалось Horizontal или Vertical :) . А 1, 2 или 3 это значения констант еще раз повторяю:
vbTileHorizontal = 1
vbTileVertical = 2
vbCascade = 0
Использовать числа вместо констант это значит что-то в роде:
В место
MDIForm1.Arrange vbTileHorizontal
MDIForm1.Arrange vbTileVertical
MDIForm1.Arrange vbCascade
использовать
MDIForm1.Arrange 1
MDIForm1.Arrange 2
MDIForm1.Arrange 0

Когда это испробуешь смотри вопрос из предидущего моего поста по этой теме.
 
A

Alex77777

#7
про цифры я понял, работает! :)
константе VbArrangeIcons соответствует цифра "3"
ставлю ее и она не работает,
если поставить 4 и выше ругается: "недопустимый вызов процедуры или параметра".
Вопрос: почему не раскрывает на весь экран, хотя стоит цифра "3" или сама константа "VbArrangeIcons"?
 

Normann

Well-known member
09.08.2007
168
1
#8
Потому что она не должна делать этого. Arrange - англ. инф. Упорядочивать.
 
A

Alex77777

#9
Спасибо за пояснение! ;)
Значит придется вычеркнуть этот пункт из меню на неопределенное время, пока не подвернется данная констатнта.
 

Normann

Well-known member
09.08.2007
168
1
#10
Не будет другой константы, их всего четыре. Если функция назвается упорядочивание то она и занимается только упорядочиванием. Развертывать окна тебе придется самому.
 
A

Alex77777

#11
тогда как же работает данная функция во всех приложения???
может быть там стоит код: активная форма ширина и высота = параметрам экрана???
вот что у меня получилось и все работает так ка надо: :D

If not Me.activeForm Is nothing Then
dim As object
Set A = activeForm
With A
.left=0
.top=0
.Width=Screen.Width
.Heigt=Screen.Heigt
End With
End if

Всем огромное спасибо!!!
Теперь хоть про константы эти больше знать буду. ;)
 

Normann

Well-known member
09.08.2007
168
1
#12
<!--QuoteBegin-Normann+20:08:2007, 14:28 -->
<span class="vbquote">(Normann @ 20:08:2007, 14:28 )</span><!--QuoteEBegin-->Развертывать окна тебе придется самому.
[snapback]75758" rel="nofollow" target="_blank[/snapback]​
[/quote]
Вообщето я имел в виду "тебе" как программисту, а не как пользователю, есетвенно нужно код писать, только не такой как у тебя, а окно действительно должно быть развернуто, а не растянуто. Используй свойство формы WindowState. И на кой ты используешь эту А?
 
A

Alex77777

#13
спасибо за замечание про "А", код сократился ;)
свойство формы WindowState я не могу использовать, т.к. при загрузке дочерней формы ее размер уже задан мной. если я ставю данное свойство как:
ActiveForm.WindowState.Maximized , то он ругается
 

Normann

Well-known member
09.08.2007
168
1
#14
Если бы я был компилятором то я тоже ругался бы :(

Код:
ActiveForm.WindowState.Maximized
Полная бессмыслица.
Во первых точки используются в бейсике для раскрытия членов каких либо объектов, WindowState это не объект а свойство которому можно либо задавать либо извлекать значение. Поверь WindowState и нужен для того чтобы во время выполнения ним задавать состояние окна.
 
A

Alex77777

#15
Окей, я все понял и разобрался: нужно просто как константе присвать свойству WindowState цифровое значение в данном случае от 0 до 2. Так????
по крайне мере у меня все работает, и код еще больше сократился :blink:
Огромное спасибо!