Scrolling массива лейблов в пикчербоксе.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
tsaMolotoff
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 12
Зарегистрирован: 12.08.2006 (Сб) 11:29

Scrolling массива лейблов в пикчербоксе.

Сообщение tsaMolotoff » 12.08.2006 (Сб) 11:33

Здраствуйте!
Возникла такая проблема: при скроллинге массива лейблов в пикчербоксе возникает flickering(не знаю как по русски)
Никто не знает как это избежать?
Код: Выделить всё

Private Sub MoveURLS(Optional XValue = 0, Optional YValue As Integer = 0)
Dim iTmp As Integer
Select Case XValue
Case Is <> 0
   For iTmp = 0 To Label2.Count - 1
        Label2(iTmp).Left = XValue
   Next iTmp
Case Else
   Label2(0).Top = YValue
   For iTmp = 1 To Label2.Count - 1
       Label2(iTmp).Top = Label2(iTmp - 1).Top + Label2(iTmp - 1).Height
   Next iTmp

End Select
End Sub


Изменеие AutoRedraw не помогает.

Efiop
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 69
Зарегистрирован: 06.06.2006 (Вт) 12:14
Откуда: РК

Сообщение Efiop » 12.08.2006 (Сб) 21:22

tsaMolotoff,
flickering(не знаю как по русски)

ты не русский что ли?
Переводчик говорит, что flickering - мерцание
Но че-то каког-либо мерцания не заметил с 10-ю элементами.
Может примерчик.

IIIypuk
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 10.06.2006 (Сб) 12:39

Сообщение IIIypuk » 13.08.2006 (Вс) 12:51

Мож я неправильно понял, но.....

Обычно в PictureBox суют второй PictureBox и двигают его, чтоб не двигать все контролы по циклу и т.д. Производительность, опять же, больше.
Есть 10 типов людей. Те, кто понимает двоичную систему исчисления, и те, кто не понимает...

tsaMolotoff
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 12
Зарегистрирован: 12.08.2006 (Сб) 11:29

Сообщение tsaMolotoff » 13.08.2006 (Вс) 14:13

Я не русский :wink: , а русско-татарин.
Так сказал, потому что не могу выразить все состояние этого!!!
pic->pic нельзя, т.к. рисунок должен оставаться неподвижным.
Мерцание есть, если контролы на каком либо фоне.
Попробую сделать свой контрол

IIIypuk
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 10.06.2006 (Сб) 12:39

Сообщение IIIypuk » 13.08.2006 (Вс) 15:14

Ну извини, про рисунок ты ничего не говорил.
Есть 10 типов людей. Те, кто понимает двоичную систему исчисления, и те, кто не понимает...

tsaMolotoff
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 12
Зарегистрирован: 12.08.2006 (Сб) 11:29

Сообщение tsaMolotoff » 13.08.2006 (Вс) 16:27

Никто не подскажет как считать значения left/top UserControl'a внутри него? А то Extend и GetWindowRect не помогают- воротят СТАРОЕ значение контрола(бывшее при запуске проги)

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

Сообщение GSerg » 13.08.2006 (Вс) 16:33

Да нет, extender.left правильно...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 14.08.2006 (Пн) 5:21

tsaMolotoff
Какая информация находится в лейблах? Просто лучшим решением будет не создавать сто лейблов для ста выводимых информационных значений, а создать всего десять и при псевдо-скроллинге просто менять надписи на лейблах.
А я все практикую лечение травами...

Efiop
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 69
Зарегистрирован: 06.06.2006 (Вт) 12:14
Откуда: РК

Сообщение Efiop » 14.08.2006 (Пн) 5:43

Просто лучшим решением будет не создавать сто лейблов для ста выводимых информационных значений, а создать всего десять и при псевдо-скроллинге просто менять надписи на лейблах.

это наверное будет лучшим решением, если нет никаких но...

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 14.08.2006 (Пн) 8:40

Каких но? Этот метод не подойдет только если прокручивать нужно картинку...
А я все практикую лечение травами...

Efiop
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 69
Зарегистрирован: 06.06.2006 (Вт) 12:14
Откуда: РК

Сообщение Efiop » 14.08.2006 (Пн) 9:56

Twister,
Каких но?

...если прокручивать нужно картинку...

Вот только автор почему-то молчит.
tsaMolotoff лучше бы написал для чего ему это нужно, тогда можно было делать выводы, а так мне (нам) не известно, что именно
tsaMolotoff'у нужно.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 14.08.2006 (Пн) 10:24

[offtop]
Efiop
Что значит Откуда: РК?
[/offtop]
А я все практикую лечение травами...

tsaMolotoff
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 12
Зарегистрирован: 12.08.2006 (Сб) 11:29

Сообщение tsaMolotoff » 14.08.2006 (Пн) 10:53

Это -список ссылок в моем проекте.
Менять надписи я уже делал, но это некрасиво!
Нужен нормальный скроллинг, а не псевдо!
А свойства left/right extender'a не меняются, если перемещать userControl любыми методами, как же узнать их положение???
Если это будет известно - проблема решена:
1. ПУСТОЙ UC - В методе Paint рисует на Parente надпись согласно своему положению(через TextOut) - таким образом мерцание может быть устранено, и нужен будет только 1 контрол.

ЗЫ Если кого то интересует, то все можно узнать на http://www.tsa-molotoff.jino-net.ru

Efiop
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 69
Зарегистрирован: 06.06.2006 (Вт) 12:14
Откуда: РК

Сообщение Efiop » 14.08.2006 (Пн) 11:26

tsaMolotoff, максимум сколько записей необходимо тебе скролить?
Возможно тебе подойдет ListView. Там и фоновую картинку можно вставить, скролить и картинки(иконки) в записи тоже всавляются, так что возможно он те подойдет.

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

Сообщение Andrey Fedorov » 14.08.2006 (Пн) 11:39

1. А нафига вообще Label-ы - просто рисовать на PictureBox что ли нельзя или дюже сложно?
2. Посмотри описание функции LockWindowUpdate
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

tsaMolotoff
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 12
Зарегистрирован: 12.08.2006 (Сб) 11:29

Сообщение tsaMolotoff » 14.08.2006 (Пн) 13:55

To Andrey Fedorov:
Вот Ёменно :) !

Не нужны лабелы, а надо, как я писал выше, нормальные коорды юзерконтрола! Если буду знать, сразу сделаю все нормально - с помощью печати на девайсе окна-хозяина(просто будут меняться координаты печати).

tsaMolotoff
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 12
Зарегистрирован: 12.08.2006 (Сб) 11:29

Сообщение tsaMolotoff » 14.08.2006 (Пн) 13:57

Efiop
Лист Вью нету апишного :cry: ! Тем более уже и без сабклассинга у меня проект сильно нагружен, не хочу чтобы вылетало.

Efiop
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 69
Зарегистрирован: 06.06.2006 (Вт) 12:14
Откуда: РК

Сообщение Efiop » 14.08.2006 (Пн) 14:18

tsaMolotoff а че mscom твой проект сильно нагрузит?
Не хочешь лишние компоненты таскать?
Какие проблемы, есть, пользуй.
А вообще твой проект, решать тебе.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 14.08.2006 (Пн) 14:56

tsaMolotoff писал(а):Efiop
Лист Вью нету апишного :cry: !
А чем отличается АПИшный от НЕАПИшного? :wink:
А я все практикую лечение травами...

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

Сообщение Antonariy » 14.08.2006 (Пн) 16:14

tsaMolotoff писал(а):To Andrey Fedorov:
Вот Ёменно :) !

Не нужны лабелы, а надо, как я писал выше, нормальные коорды юзерконтрола! Если буду знать, сразу сделаю все нормально - с помощью печати на девайсе окна-хозяина(просто будут меняться координаты печати).
Дык в чем проблема-то? И координаты тебе не нужны.
Вложения
scroll.rar
Пример грубый, но понятный.
(1.48 Кб) Скачиваний: 41
Лучший способ понять что-то самому — объяснить это другому.

tsaMolotoff
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 12
Зарегистрирован: 12.08.2006 (Сб) 11:29

Сообщение tsaMolotoff » 14.08.2006 (Пн) 17:45

Twister:
Я имел в виду OCX-ный, мне не надо левых COM-компонентов, только внутренние или нормальные библиотеки(без регистрации).

Antonariy:
Как это не нужны - а картинку с парента каким образом считывать???
или печатать в нужном месте???
OnLine Shell - winner of citywide young programmers contest(2006), 2nd e of Republican young programmers contest(2006)

tsaMolotoff
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 12
Зарегистрирован: 12.08.2006 (Сб) 11:29

Сообщение tsaMolotoff » 14.08.2006 (Пн) 18:35

Не подскажите почему событие Paint(любое положение AutoRedraw) не происходит???
код такой:
Код: Выделить всё
Dim i&
Dim tRes&
Dim cc As POINTAPI
Me.CurrentX = tX
Me.CurrentY = tY
Me.Cls
GetRC
tRes& = GetCursorPos(cc)
Label1.Caption = CStr(cc.x) + " " + CStr(cc.y)
cc.x = cc.x - rc.Left
cc.y = cc.y - rc.Top
Dim mX&, mY&
mX = Int(cc.x / Me.TextHeight(strings(0)))
If mX >= 0 And mX <= UBound(strings) Then
        mY = cc.y - Me.TextWidth(strings(mX))
            If mY <= 0 Then
                cNum = mX
                    Else
                        cNum = -1
                End If
            Else
    cNum = -1
End If
Debug.Print CStr(cNum)
For i = 0 To UBound(strings)
With Me
If i = cNum Then .ForeColor = vbRed Else .ForeColor = vbBlack
.CurrentY = tY + i * .TextHeight(strings(i))
Print strings(i)
End With
Next i
Debug.Print cNum

OnLine Shell - winner of citywide young programmers contest(2006), 2nd e of Republican young programmers contest(2006)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 14.08.2006 (Пн) 19:26

Twister писал(а):[offtop]
Efiop
Что значит Откуда: РК?
[/offtop]


Значит МЫ, я уже справшивал 8)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

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

Сообщение Antonariy » 14.08.2006 (Пн) 20:16

tsaMolotoff писал(а):Antonariy:
Как это не нужны - а картинку с парента каким образом считывать???
или печатать в нужном месте???
Какую еще картинку?
Лучший способ понять что-то самому — объяснить это другому.

tsaMolotoff
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 12
Зарегистрирован: 12.08.2006 (Сб) 11:29

Сообщение tsaMolotoff » 14.08.2006 (Пн) 20:21

Вот какую
в пикчербоксе


Выкладываю пофиксенную версию вашего контрола.
Вложения
scroll_fix.rar
scroll_fix.rar(MSVB 6)
(80.45 Кб) Скачиваний: 41
OnLine Shell - winner of citywide young programmers contest(2006), 2nd e of Republican young programmers contest(2006)

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

Сообщение Antonariy » 14.08.2006 (Пн) 20:46

Ну дык... ты же уже это сделал...
Лучший способ понять что-то самому — объяснить это другому.

tsaMolotoff
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 12
Зарегистрирован: 12.08.2006 (Сб) 11:29

Сообщение tsaMolotoff » 15.08.2006 (Вт) 7:20

Вот для пикчера нужны были координаты контрола - просто если его перемещать по форме картинка не меняется! По не понятным мне причинам в VB WM_PAINT(т.е при отключенном AutoRedraw) присходит только при загрузке формы(ненавижу это слово!! :evil: )

:?: :?: :?:

Поэтому то и мне нужны были координаты окна, которые даже АПИшными методами не вылавливаются нормально.
OnLine Shell - winner of citywide young programmers contest(2006), 2nd e of Republican young programmers contest(2006)

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 15.08.2006 (Вт) 7:41

tsaMolotoff писал(а):По не понятным мне причинам в VB WM_PAINT(т.е при отключенном AutoRedraw) присходит только при загрузке формы

А вызывать Refresh (или, что то же самое, InvalidateRect) не пробовал?
Только с отключенным AutoRedraw, увы, мелькания не избежать: VB затирает всю картинку цветом фона раньше, чем начинает выполняться _Paint.
Изображение

tsaMolotoff
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 12
Зарегистрирован: 12.08.2006 (Сб) 11:29

Сообщение tsaMolotoff » 15.08.2006 (Вт) 8:30

Мда, вот !@#$%^!!!!
Было бы удобнее без редрава - ну совсем Си :wink: !

Ну ладно, я и так уже все сделал, и клики, и маус мув и другой garbage.
Присобачу все к проекту http://www.tsa-molotoff.jino-net.ru/
продолжу...
Большое спасибо всем! :) :) :)
OnLine Shell - winner of citywide young programmers contest(2006), 2nd e of Republican young programmers contest(2006)


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 91

    TopList