А такое реально?

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

А такое реально?

Сообщение Fedorfx » 05.05.2004 (Ср) 3:15

Всем привет.
Интересует такая возможность.
Есть некий обьект. Например форма. Допустим я хочу добавить ему некоторые свойства. Предположим это будудет способность, позволяущая перемещать форму за любое место а не только за шапку.
Код: Выделить всё
Dim cx As Single, cy As Single, dx As Single, dy As Single
Dim bDrag As Boolean

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    bDrag = True
    dx = X: dy = Y: cx = Me.Left: cy = Me.Top
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If bDrag Then
        cx = cx + X - dx: cy = cy + Y - dy
        Me.Move cx, cy
    End If
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
bDrag = False
End Sub


Сорри что код на VB 6 но это не суть вопроса.

Как видно из кода мне для добавления этой способности, приходится обьявлять 5 переменных и прописывать ручками 3 события.
Я так понимаю что в VB.NET есть новые возможности и может быть там можно както подругому заставить некий обьект обладать новыми свойствами. Например сделать класс и внедрить его вместе с свойсвами в подопытный??
Хз я в этом не силен пока, может кто подскажет где что читать и как копать? Просто в VB 6 приходилось очень много лишней работы делать. Я сейчас перегоняю проект в Net и не хочу вставать на грабельки второй раз.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.05.2004 (Ср) 10:12

Судя по статьям Гайдара, есть процедура WndProc, я бы её заценил :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Lobo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 08.01.2004 (Чт) 16:49
Откуда: Таллинн, Эстония

Сообщение Lobo » 05.05.2004 (Ср) 17:38

Ну, WndProc, видимо, предлагется использовать для мышки. А вообще - да, пользоваться наследованием. Например создать класс MyForm на основе Form и затем уже клепать не объекты класса Form, а объекты класса MyForm. Читать Inheritance в хелпе по .Net.
Изображение Вопросы - рёбрами!

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Сообщение Fedorfx » 06.05.2004 (Чт) 0:36

мля
Второй день юзаю 2003 VB.NET и охреневаю от кайфа.
Какой же я му..ак был, когда два года назад купил 8 дисков с свежим 2002 Net, поставил, посмотрел 15 минут, сделал неправильные выводы и кильнул его нахрен.
Вот теперь понимаю что был неправл и очень жалко потерянное время.
Ну да ладно, на то они и ночи, чтобы учить чтото новое :-)

P.S. За WinProc спасибо, именно то что надо. Теперь не надо самому субклассинг обьявлять.

aaf
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 190
Зарегистрирован: 08.02.2002 (Пт) 13:48
Откуда: Russia

Сообщение aaf » 06.05.2004 (Чт) 8:35

В чем кайф-то? А то я чей-то никак поймать не могу... :(
Вечный LAmer

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.05.2004 (Чт) 9:23

А я ходил, ходил вокруг 8 дисков 2002... :) Ходил, ходил... Долго ходил. А потом перестал :)

Ты мне скажи такую весчь... Редактирование кода в дебаге без остановки ессь?


ЗЫ:
Код: Выделить всё
Option Explicit

Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function ReleaseCapture Lib "user32.dll" () As Long

Private Const HTCAPTION As Long = 2
Private Const WM_NCLBUTTONDOWN As Long = &HA1

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  ReleaseCapture
  SendMessage Me.hwnd, WM_NCLBUTTONDOWN, HTCAPTION, ByVal 0&
End Sub
:wink:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Сообщение Fedorfx » 06.05.2004 (Чт) 15:01

В чем кайф-то? А то я чей-то никак поймать не могу...


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

Ты мне скажи такую весчь... Редактирование кода в дебаге без остановки ессь?

к сожалению нет. Хорошо что хоть можно брекпоинты ставить и значения переменных смотреть полюдски, а то совсем туго бы пришлось.
P.S. А пример на все сто соответсвует подписи :-)

Lobo
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 108
Зарегистрирован: 08.01.2004 (Чт) 16:49
Откуда: Таллинн, Эстония

Сообщение Lobo » 06.05.2004 (Чт) 15:11

Слушай, а можно ли в дебаге посмотреть, как выглядит форма и данные на ней, или только белый прямоугольник? :?:
Изображение Вопросы - рёбрами!

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Сообщение Fedorfx » 06.05.2004 (Чт) 16:34

не знаю правильно ли я понял вопрос,
но если поставить брекпоинт то все что на форме видно, но стоит провести над формой другую форму то все стирается.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 40

    TopList