Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Рамка изменяющая размеры Добавлено: 20.09.05 22:52  

Автор вопроса:  Shark | Web-сайт: www.ma26.ru | ICQ: 284036855 
Помогите сделать рамку на форме чтобы ее размер и местоположение можно было изменять мышью. Желательно получить размеры получившейся рамки.

Ответить

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

Номер ответа: 1
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 20.09.05 23:30
а MDI форма не подойдёт?

Ответить

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



ICQ: 284036855 

Вопросов: 35
Ответов: 155
 Web-сайт: www.ma26.ru
 Профиль | | #2
Добавлено: 21.09.05 09:06
Желательно что нибудь поменьше.

Ответить

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



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #3 Добавлено: 21.09.05 11:05
Используй сплиттеры. Полно контролов, есть даже примеры исходников. Пользуйся поиском.

Ответить

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



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #4
Добавлено: 21.09.05 17:26

Как на счет формы на форме? Создать форму, удалить заголовок. Убедиться, что ее удается ресайзить. А потом использовать Api SetParent, чтобы засунуть форму без заголовка в форму-контейнер.
Примечание: еще надо использовать функцию.
Пробуйте: http://vt-dbnz.narod.ru/forms_fun.rar (1.8kb)

Ответить

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



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #5
Добавлено: 21.09.05 17:27
Простите, поторопился, не дописал.
Примечание: еще надо использовать функцию SetWindowLong для установки ее Style на WS_Child.

Ответить

Номер ответа: 6
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #6 Добавлено: 22.09.05 00:27
Victor, нафиг SetParent, MDI форма - тот же контейнер. А далее показал новую форму, а её соответственно можно и ресайзить. А ещё я рамку (Frame) пробовал двигать, если бы получилось - изминение размеров аналогично. Трабла в том что, при высчитывании кордината курсора и прибавлении к этому положения нашекго окна, для того чтобы потом в фрейм передвинуть и попасть в именно в наше окно... ну короче там сдвиг получается, немного не туда фрейм становится, кому интерестно, вот:



VERSION 5.00
Begin VB.Form Form1
   Caption         =   "Form1"
   ClientHeight    =   3552
   ClientLeft      =   48
   ClientTop       =   360
   ClientWidth     =   5736
   LinkTopic       =   "Form1"
   ScaleHeight     =   296
   ScaleMode       =   3  'Pixel
   ScaleWidth      =   478
   StartUpPosition =   3  'Windows Default
   Begin VB.Frame Frame1
      Caption         =   "Frame1"
      Height          =   1932
      Left            =   0
      TabIndex        =   0
      Top             =   0
      Width           =   3132
      Begin VB.Image Image4
         Height          =   132
         Left            =   0
         MousePointer    =   6  'Size NE SW
         Top             =   1800
         Width           =   132
      End
      Begin VB.Image Image3
         Height          =   132
         Left            =   -12
         MousePointer    =   8  'Size NW SE
         Top             =   84
         Width           =   132
      End
      Begin VB.Image Image2
         Height          =   132
         Left            =   2988
         MousePointer    =   6  'Size NE SW
         Top             =   108
         Width           =   132
      End
      Begin VB.Image Image1
         Height          =   132
         Left            =   3000
         MousePointer    =   8  'Size NW SE
         Top             =   1800
         Width           =   132
      End
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'Определяет текущую позицию курсора
Private Declare Function GetCursorPos Lib "USER32" (lpPoint As POINTAPI) As Long
'Структура POINTAPI
Private Type POINTAPI
        X As Long
        Y As Long
End Type
    Dim Curs As POINTAPI
    Dim flag1 As Boolean 'флаг того что перемещаем

Private Sub Frame1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
    flag1 = True
    MoveFrame
End If
End Sub

Private Sub MoveFrame()
Do While flag1 = True
DoEvents
GetCursorPos Curs
Frame1.Left = Curs.X - (Me.Left / 16)
Frame1.Top = Curs.Y - (Me.Top / 16)
Me.Caption = "Frame1.Left=" & Frame1.Left & "|" & "Frame1.Top=" & Frame1.Top
Loop
End Sub

Private Sub Frame1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
flag1 = False
End Sub




если эту канитель отладить, по такуму принципу можно двигать image которые по краями фрейма для ресайза. Двигаем например за правый нижний, значит высота растояние от правого верхнего до правого нижнего, а правый нижний двигаем - вот и весь ресайз :)

Ответить

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



ICQ: 284036855 

Вопросов: 35
Ответов: 155
 Web-сайт: www.ma26.ru
 Профиль | | #7
Добавлено: 22.09.05 10:27
Всем спасибо. Нашел контрол который позволяет изменять все что угодно

Ответить

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



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #8
Добавлено: 22.09.05 21:47
Ну на счет MDI. это не всегда хорошо. Например, на ней сложно рисовать. Но оно надо редко.
А самое, наверно, главное - ее нельзя Show vbModal (если я не ошибаюсь, VB не может показать две MDI формы одновременно).
В моем варианте, правда, тоже есть одна загвоздочка. Невозможно Tab'ом переместить фокус из одной формы в другую. Правда это мало кого волнует.

Ответить

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


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #9 Добавлено: 23.09.05 01:30
если я не ошибаюсь, VB не может показать две MDI формы одновременно


ошибаешся!

и Show vbModal можно вроде...

2 Shark
Что за контрол?

Ответить

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



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #10
Добавлено: 23.09.05 18:23

Не ошибаюсь. Проверил.
а) не могу создать две mdi формы в проекте. VBE засеривает пункт Add MDIForm
б) написал MDIForm1.Show vbModal. -> Runtime Error '403'
MDI forms cannot be shown modally

Ответить

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



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #11
Добавлено: 23.09.05 18:24

На всякий слкчай уточню: VB6 sp3

Ответить

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



ICQ: 284036855 

Вопросов: 35
Ответов: 155
 Web-сайт: www.ma26.ru
 Профиль | | #12
Добавлено: 23.09.05 21:32
Не знаю откуда скачал называется Resizer. При щелчке меняешь свойство на и появляются вокруг точки которые можно двигать

Ответить

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


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #13 Добавлено: 23.09.05 21:47
видел я тот Resizer, ну рабочий... но и глюкавый, имхо лучше "своё"
-----

а) "не могу создать две mdi..." Слабо динамически создать форму API функциями :)

б) MDIForm1.Show vbModal также можно организовать API функцией ShowWindow.

Ответить

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



ICQ: 345743490 

Вопросов: 42
Ответов: 385
 Web-сайт: vt-dbnz.narod.ru
 Профиль | | #14
Добавлено: 09.10.05 00:33
Ну да. Убедил. Но мне слабо MDI форму создать API-шками. Ну, может и не слабо, но надо долго и упорно help копать.

Ответить

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


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #15 Добавлено: 09.10.05 17:51
ну слабо <> невозможно

Ответить

Страница: 1 |

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



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