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

Тема в разделе "Visual Basic", создана пользователем Alex77777, 3 авг 2007.

  1. Alex77777

    Alex77777 Гость

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

    Pasha Гость

  3. Alex77777

    Alex77777 Гость

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

    Normann Well-Known Member

    Регистрация:
    9 авг 2007
    Сообщения:
    168
    Симпатии:
    2
    Любая vb константа это всего лишь число, в основном это перечисления от 0 и т.д. . Те константы которые ты перечислил и есть такое перечисление, в твоем случае это 1, 2 и 0 соответсвенно (не веришь проверь (msgbox vbTile.....)). Что тебе мешает использовать просто следующие числа которые будут соответствовать другим константам?
     
  5. Alex77777

    Alex77777 Гость

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

    Normann Well-Known Member

    Регистрация:
    9 авг 2007
    Сообщения:
    168
    Симпатии:
    2
    А на кой черт ты скажи ты так пишешь? Вообщето под ..... подразумевалось 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

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

    Alex77777 Гость

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

    Normann Well-Known Member

    Регистрация:
    9 авг 2007
    Сообщения:
    168
    Симпатии:
    2
    Потому что она не должна делать этого. Arrange - англ. инф. Упорядочивать.
     
  9. Alex77777

    Alex77777 Гость

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

    Normann Well-Known Member

    Регистрация:
    9 авг 2007
    Сообщения:
    168
    Симпатии:
    2
    Не будет другой константы, их всего четыре. Если функция назвается упорядочивание то она и занимается только упорядочиванием. Развертывать окна тебе придется самому.
     
  11. Alex77777

    Alex77777 Гость

    тогда как же работает данная функция во всех приложения???
    может быть там стоит код: активная форма ширина и высота = параметрам экрана???
    вот что у меня получилось и все работает так ка надо: :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

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

    Normann Well-Known Member

    Регистрация:
    9 авг 2007
    Сообщения:
    168
    Симпатии:
    2
    <!--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. И на кой ты используешь эту А?
     
  13. Alex77777

    Alex77777 Гость

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

    Normann Well-Known Member

    Регистрация:
    9 авг 2007
    Сообщения:
    168
    Симпатии:
    2
    Если бы я был компилятором то я тоже ругался бы :(

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

    Alex77777 Гость

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

    Normann Well-Known Member

    Регистрация:
    9 авг 2007
    Сообщения:
    168
    Симпатии:
    2
    Ты все правильно понял :)
     
Загрузка...

Поделиться этой страницей