Посмотрите плиз, бэйсик чудит опять и за что мне эта напасть

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Посмотрите плиз, бэйсик чудит опять и за что мне эта напасть

Сообщение Pantalone » 14.11.2006 (Вт) 13:29

Постараюсь удержаться от ругани в сторону бэйсика и его вечных багов и еще много слов как я его люблю :)
Посмотрите аттач, там в момент перехода указателя мышки из верхнего листа в нижний меняется курсор на их границе, а затем должен опять нормальным стать. И хде нормальный???
Вложения
bred.zip
(1.53 Кб) Скачиваний: 23

lister
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 389
Зарегистрирован: 15.01.2005 (Сб) 7:34
Откуда: Страна оления

Сообщение lister » 14.11.2006 (Вт) 13:41

ну, видимо, потому что условие y >= picNW.Height And y <= picSW.Top всегда True. Здесь и копай.
А что хочешь сотворить? Размеры панелей менять?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 14.11.2006 (Вт) 13:46

И действительно бред... (имеется ввиду, что сей код есть бред, Бейсик как всегда ни причем). Вариант решения:

Ловить MouseMove над формой отдельно, над ListView отдельно, т.е. должен быть код типа:

Код: Выделить всё
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    MousePointer = vbSizeNS
End Sub
Private Sub picNW_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    MousePointer = vbNormal
End Sub
Private Sub picSW_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    MousePointer = vbNormal
End Sub
Последний раз редактировалось Viper 14.11.2006 (Вт) 14:14, всего редактировалось 1 раз.
Весь мир матрица, а мы в нем потоки байтов!

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 14.11.2006 (Вт) 13:50

lister писал(а):ну, видимо, потому что условие y >= picNW.Height And y <= picSW.Top всегда True. Здесь и копай.
А что хочешь сотворить? Размеры панелей менять?

Не может оно быть True.
Сплиттер делаю.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 14.11.2006 (Вт) 13:56

!Viper!
Нет это бред, потому что это баг в натуральном виде.
Твой код тоже не пашет нормально значит и твой код - бред если рассуждать по твоему :)

Попробуй перемещать курсор из нижнего списка в верхний и посмотри какой курсор будет на скролбаре верхнего списка.
Вложения
bred2.zip
(1.61 Кб) Скачиваний: 31

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 14.11.2006 (Вт) 14:07

мой код у меня при любом направлении перемещения меняет форму курсора так как надо.
Весь мир матрица, а мы в нем потоки байтов!

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 14.11.2006 (Вт) 14:08

!Viper!
Загрузи второй аттач-то :)

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 14.11.2006 (Вт) 14:18

Скачал... а для ликвидция глюка с полосой прокрутки пиши код так

Код: Выделить всё
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
If y >= picNW.Height And y <= picSW.Top Then
    MousePointer = vbSizeNS
Else
    MousePointer = vbNormal
End If
End Sub
Private Sub picNW_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    MousePointer = vbNormal
End Sub
Private Sub picSW_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    MousePointer = vbNormal
End Sub


ИМХО. Если делаешь сплиттер, можно еще поместить между верхним и нижним объектом пиктеребокс, и его использовать как сплиттер... думаю проще будет
Последний раз редактировалось Viper 14.11.2006 (Вт) 14:44, всего редактировалось 1 раз.
Весь мир матрица, а мы в нем потоки байтов!

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 14.11.2006 (Вт) 14:21

!Viper!
Ок, будем думать.
Хотя не, посмотрел тоже не работает. Ты равенства перепутал во первых, а во вторых вот я писал:
Попробуй перемещать курсор из нижнего списка в верхний и посмотри какой курсор будет на скролбаре верхнего списка.
Последний раз редактировалось Pantalone 14.11.2006 (Вт) 14:32, всего редактировалось 1 раз.

_ae_
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 165
Зарегистрирован: 08.10.2006 (Вс) 14:37

Сообщение _ae_ » 14.11.2006 (Вт) 14:30

Я особо в код не вникал. Вам требуется отловить момент, когда мышь попадает на границу PictureBox?
Тогда SetCapture и проверять в MouseMove координаты, если например y<5 and y>-5 - значит курсор где-то вблизи границы. Только не забывайте снять capture.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 14.11.2006 (Вт) 14:33

_ae_ писал(а):Я особо в код не вникал. Вам требуется отловить момент, когда мышь попадает на границу PictureBox?
Тогда SetCapture и проверять в MouseMove координаты, если например y<5 and y>-5 - значит курсор где-то вблизи границы. Только не забывайте снять capture.

Нет меня не интересует применение PictureBox, хочу без него обойтись и это прекрасно работает кроме этого бага с курсором, который не хочет меняться на нормальный, редиска.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 14.11.2006 (Вт) 14:48

поправил код выше. действительно перепутал условия... в таком виде работет все
Весь мир матрица, а мы в нем потоки байтов!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 14.11.2006 (Вт) 15:16

Один из простых сплиттеров.
Использование сплиттера:
1. Поместить на форму, задать свойство ImmediateArrange=True.
2. На форму поместить Label1, Text1 (слева от сплиттера), Label2, Text2 (справа от сплиттера).
3. В Form_Load написать:
Код: Выделить всё
splMain.ControlClear
splMain.ControlAdd Label1, -1, 120
splMain.ControlAdd Text1, -1, 120
splMain.ControlAdd Label2, 1, Me.ScaleWidth - 120
splMain.ControlAdd Text2, 1, Me.ScaleWidth - 120
splMain.Arrange
Вложения
Splitter.zip
UserControl, добавляемый в проект.
(3.99 Кб) Скачиваний: 25
Lasciate ogni speranza, voi ch'entrate.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 14.11.2006 (Вт) 15:25

!Viper!
Попробуй перемещать курсор из нижнего списка в верхний и посмотри какой курсор будет на скролбаре верхнего списка.
У меня на скроллере стрелки получаются.
http://bbs.vbstreets.ru/download.php?id=5014

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 14.11.2006 (Вт) 15:34

Эхх, велосипедисты-баянисты...
Вложения
EasySplitter_Code.zip
(17.38 Кб) Скачиваний: 21
Лучший способ понять что-то самому — объяснить это другому.

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 14.11.2006 (Вт) 15:49

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

lister
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 389
Зарегистрирован: 15.01.2005 (Сб) 7:34
Откуда: Страна оления

Сообщение lister » 14.11.2006 (Вт) 15:57

Pantalone писал(а):Не может оно быть True.

Ну как это не может...
Курсор на стрелки меняется? Меняется... Значит True все-таки есть

inf
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 53
Зарегистрирован: 28.09.2006 (Чт) 21:10
Откуда: мы все оттуда

Сообщение inf » 14.11.2006 (Вт) 16:07

!Viper! писал(а):И действительно бред... (имеется ввиду, что сей код есть бред, Бейсик как всегда ни причем). Вариант решения:

Ловить MouseMove над формой отдельно, над ListView отдельно, т.е. должен быть код типа:

Код: Выделить всё
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    MousePointer = vbSizeNS
End Sub
Private Sub picNW_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    MousePointer = vbNormal
End Sub
Private Sub picSW_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    MousePointer = vbNormal
End Sub


Код правильный не спорю. НО если мышку резко убрать с формы вообще, то останется старый курсор и не поменяется пока не проведешь по форме.

Здесь нодо обрабатывать MouseOut, а не MouseMove я с такой проблемкой сталкивался. Так легче и лучше получается.

З.Ы. Надо сверять позиции курсора.
Изображение

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 14.11.2006 (Вт) 16:16

Pantalone писал(а):!Viper!
Попробуй перемещать курсор из нижнего списка в верхний и посмотри какой курсор будет на скролбаре верхнего списка.
У меня на скроллере стрелки получаются.
http://bbs.vbstreets.ru/download.php?id=5014


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

Это все в варианте кода, приведенного мною выше.
Весь мир матрица, а мы в нем потоки байтов!

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 14.11.2006 (Вт) 16:25

!Viper!
Ну странно, вот аттач с кодом о котором ты говоришь и у меня, если я с нижнего списка веду курсор на верхний, то на границе списков он меняется на стрелки и далее, пролетая над скроллером, он не меняется на нормальный, хотя скроллер находится под юрисдикцией верхнего списка и стрелок там быть уже не должно, но они есть! На моем компе есть, могу видео прислать :)
Вложения
bred3.zip
(1.6 Кб) Скачиваний: 32

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 14.11.2006 (Вт) 16:37

Pantalone писал(а):Antonariy
Ладно тебе, такую тучу кода ради сплиттера использовать, у меня немного другой сплиттер будет. Просто хотел разобраться что за нафиг такой с этими курсорами в моем примере.
А не все равно, куча или нет? Пример-то отличный. Простой в интеграции и работает как часы.
Лучший способ понять что-то самому — объяснить это другому.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 15.11.2006 (Ср) 8:10

2 Pantalone, скачанный код из bred3.zip без изменений работает как надо, т.е. форма курсора меняется так как и должна меняться.
Весь мир матрица, а мы в нем потоки байтов!

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 15.11.2006 (Ср) 11:12

!Viper!
Ну а вот и видео подоспело, именно того примера который у тебя работает :)
Вложения
video.rar
(14.98 Кб) Скачиваний: 35

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: Посмотрите плиз, бэйсик чудит опять и за что мне эта нап

Сообщение Andrey Fedorov » 15.11.2006 (Ср) 12:16

Pantalone писал(а):Постараюсь удержаться от ругани в сторону бэйсика и его вечных багов и еще много слов как я его люблю :)


Ну ты просто поисковик багов... В темной комнате.
Я бы на твоем месте взял бы просто нормальный сплиттер. Готовый.
Тот же MBSplit или EBSplitter - похожий на него и есть в интернете в исходниках, а не выискивал бы баги там где их нет...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 15.11.2006 (Ср) 12:29

Andrey Fedorov
Если ты багов не видел это не значит что их нет, я знаю уже не один и не два.
Я хочу свой сплиттер, почему бы не сделать? MBSplit не поддерживает hwnd.
Тема больше не актуальна, я все уже сделал. Единственное только меня интересует поведение курсора на видео.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 15.11.2006 (Ср) 13:32

Pantalone писал(а):Если ты багов не видел это не значит что их нет, я знаю уже не один и не два.


IMHO я их знаю гораздо меньше... С чего бы это?

Pantalone писал(а):Я хочу свой сплиттер, почему бы не сделать? MBSplit не поддерживает hwnd.


Ну я тебе и ткнул пальцем на EBSplitter - он в исходниках легко находится в интернете:

Длинная ссылка, портившая всем настроение, заставляя страницу быть шире, чем надо -- GSerg

Возьми и приделай к нему hWnd.

Pantalone писал(а):Единственное только меня интересует поведение курсора на видео.


ListView не выдает MouseMove при перемещении по своему ScrollBar-у. Что тут непонятно? Надо подписываться на события собственно ScrollBar-а.

А
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 15.11.2006 (Ср) 14:02

Andrey Fedorov писал(а):ListView не выдает MouseMove при перемещении по своему ScrollBar-у. Что тут непонятно? Надо подписываться на события собственно ScrollBar-а.

Ну стало быть это баг, так и запишем :)

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

Сообщение GSerg » 15.11.2006 (Ср) 14:11

Pantalone, тебя не смущает, что когда ты водишь мышью по заголовку формы, событие MouseMove не возникает? Это тоже баг?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 15.11.2006 (Ср) 14:14

Andrey Fedorov писал(а):Ну я тебе и ткнул пальцем на EBSplitter - он в исходниках легко находится в интернете:

Довольно посредственный, кстати, компонент.
То, что выкладывал Antonariy, на порядок качественнее.
Правда и в том, и в другом, зачем-то события (MouseMove) вручную пересылаются в сплиттер, никак не пойму причину этого.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 15.11.2006 (Ср) 14:20

alibek писал(а):
Andrey Fedorov писал(а):Ну я тебе и ткнул пальцем на EBSplitter - он в исходниках легко находится в интернете:

Довольно посредственный, кстати, компонент.
То, что выкладывал Antonariy, на порядок качественнее.
Правда и в том, и в другом, зачем-то события (MouseMove) вручную пересылаются в сплиттер, никак не пойму причину этого.


Влом разбираться...
И компонент вполне нормальный - для обычной жизни его вполне хватает. Работать с ним просто.

При желании можно и с этим поиграться:

http://www.planet-source-code.com/Uploa ... 212005.zip

А вообще много их всяких...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

След.

Вернуться в Visual Basic 1–6

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

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

    TopList