Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Не знаю как сделать...


Автор: Vell 4.9.2004, 22:09
У меня есть в форме фотка (picture1), и есть кнопка (Command1). Как сделать, чтобы при нажатии кнопки менялась картинка на следующию (всего тридцать)? Помогите пожалуйсто!!! qstn.gif

Автор: Kurt 5.9.2004, 02:38
..
Немного не понял проблемы..
Заводишь глобальную переменную, к-я хранит номер картинки. По нажатию кнопки показываешь картинку, к-я соответствует значению переменной и, если значение переменной меньше 30, увеличиваешь переменную на 1.
Или ты о чем-то другом спрашивал?

Автор: Staruha 5.9.2004, 11:54
Код мультика
Dim a As Integer

Private Sub Command1_Click()
Timer1.Enabled = True
a = 19
Command1.Visible = False
End Sub

Private Sub Timer1_Timer()
a = a - 1

If a = 19 Then
Image1.Picture = img1.Picture
End If
If a = 18 Then
Image1.Picture = Img2.Picture
End If
If a = 17 Then
Image1.Picture = Img3.Picture
End If
If a = 16 Then
Image1.Picture = Img4.Picture
End If
If a = 15 Then
Image1.Picture = Img5.Picture
End If
If a = 14 Then
Image1.Picture = Img6.Picture
End If
If a = 13 Then
Image1.Picture = Img7.Picture
End If
If a = 12 Then
Image1.Picture = Img8.Picture
End If
If a = 11 Then
Image1.Picture = img9.Picture
End If
If a = 10 Then
Image1.Picture = img10.Picture
End If
If a = 9 Then
Image1.Picture = img11.Picture
End If
If a = 8 Then
Image1.Picture = img12.Picture
End If
If a = 7 Then
Image1.Picture = img13.Picture
End If
If a = 6 Then
Image1.Picture = img14.Picture
End If
If a = 5 Then
Image1.Picture = img15.Picture
End If
If a = 4 Then
Image1.Picture = img16.Picture
End If
If a = 3 Then
Image1.Picture = img17.Picture
End If
If a = 2 Then
Image1.Picture = img18.Picture
End If
If a = 1 Then
Image1.Picture = img19.Picture
End If
If a = 1 Then
a = 19
End If
End Sub

Автор: boevik 5.9.2004, 12:25
Можно расположить все картинки на форме, одну под другой.
Менять свойство Visible у картинок.
Видемой картинке выставить Visible = True, все остальные - False.
Код примерно такой:
Код

Private Sub ChangePic(By Val visPic as Integer)
dim i as integer
  for i = 0 to 29
     if i = visPic Then
       Pic(i).Visible = True
     else
       Pic(i).Visible = False
     end if
   next
end sub


Автор: -Mikle- 5.9.2004, 18:02
Можно и так:

Код
dim PicList() as string
dim PicInd as long

private sub Form_load()
ReadList "C:\list.dat"
picind=-1
end sub

private sub Command1_click() 'След. картинка
picind=picind+1
if picind>ubound(piclist) then picind=ubound(piclist)
ShowPic PicInd
end sub

private sub Command2_click() 'Пред. картинка
picind=picind-1
if picind<0 then picind=0
ShowPic PicInd
end sub

'Загружает картинку из файла, путь и
'имя которого записано в массиве
sub ShowPic(Ind as long)
if ubound(piclist)=-1 then exit sub 'выход, если массив пустой
Picture1.Picture=LoadPicture(PicList(Ind))
end sub

'Читает файл с именами файлов в массив PicList
Sub ReadList(FileName as string)
dim lfn as long
dim tmp as string

open FileName for binary access read as #lfn
 tmp=space(lof(lfn))
 get #lfn,1,tmp
close #lfn
PicList=split(tmp,vbcrlf)
end sub


В файле записаны полные пути и имена файлов к картинкам. В каждой строке одна ссылка.
Например:
c:\folder1\pics\qwery.bmp
d:\mmm\room.gif
c:\dodo\rere\sasa\lolo\photos\we are.bmp


Удачи!!!

Автор: Staruha 5.9.2004, 18:29
Мне кажется самое простое использовать счетчик.Сколько раз нажал такая картинка и открывается.

Автор: Staruha 5.9.2004, 21:37
Вот такая фенька получилась
Код
Private Sub Form_Load()
Text1.Visible = False
Text2.Visible = False
End Sub
Private Sub Command1_Click()
Text1.Text = Text1.Text + 1
Text2.Text = "C:\анима\" & Val(Text1.Text) & ".jpg"
End Sub

Private Sub Command2_Click()
Picture1.Picture = LoadPicture("C:\анима\1.jpg")
End Sub


Private Sub Text2_Change()
Dim v As String
v = Text2.Text
Picture1.Picture = LoadPicture(v)
End Sub

Добавлено @ 21:42
Это не нужно забыла стереть
Код
Private Sub Command2_Click()
Picture1.Picture = LoadPicture("C:\анима\1.jpg")
End Sub

Автор: Akina 6.9.2004, 09:48
Сделай не img1...img19, а массив img(1...19)

тогда

Код
Private Sub Timer1_Timer()
a = a - 1
if a<LBound(img) Then a=UBound(img)
Image1.Picture = img(20-a).Picture
End Sub


Этот код медленнее по исполнению, нежели размещение всех картинок и игра видимостью, но зато жрет меньше памяти на программу (ценой памяти системного кэша). Для видимости же

Код
Private Sub Timer1_Timer()
Image(a).Visible=False
a = a - 1
if a<LBound(Image) Then a=UBound(Image)
Image(a).Visible=True
End Sub


Автор: Staruha 6.9.2004, 13:09
Я так поняла ему кнопкой изменять картинки надо - Раз картинка два - другая

Автор: Edd 7.9.2004, 03:58
Господа, а где вы берёте control (объект) Таймер (Timer1)?

Автор: Akina 7.9.2004, 08:33
Edd
Цитата
где вы берёте control (объект) Таймер (Timer1)?

Ты будешь смеяться, но на панели объектов. Включив предварительно референс на соотв. ActiveX есссно.

Автор: Guest 7.9.2004, 08:45
Akina, я в шокеsmile.gif) Скажу больше - в ужасеsmile.gif)) А какой референс на него ведёт?

Автор: Edd 7.9.2004, 08:46
В шоке - это я. Akina, а что в "Референсах" подключать надо?

Автор: boevik 7.9.2004, 08:56
Для таймера ни какого "Референса" подключать не надо.
Открыть toolbox и найти иконку часиков, это и есть таймер.

Автор: Edd 7.9.2004, 09:00
Либо я забыл как выглядят часы, либо одно из двух... Нет, нету иконки.

Автор: boevik 7.9.2004, 09:09
Edd, мы ведем речь о VB6 или о чем то другом?

Автор: Edd 7.9.2004, 10:17
Тьфу, точно. Извиняй boevik, я ж в VB.Excel. А есть timer для использования в VBE?

Автор: Akina 7.9.2004, 11:29
Цитата
я ж в VB.Excel

У формы есть событие OnTimer и свойство TimerInterval.

Автор: Edd 7.9.2004, 11:43
Сие ведаю.

Автор: Akina 7.9.2004, 11:48
Ну и юзай, коли ведаешь.

Автор: Ёуe 7.9.2004, 18:14
кто-нить подскажите дебилу, как можно снять запрет на просмотр сайта, мне пишут, что у меня нет доступа к этой странице

Автор: Edd 8.9.2004, 04:28
Akina, тут ведь в чём беда. Они, гады такие, не юзаются. VBE так и пишет при компиляции. Мол раз надо, на пальцах отсчитывай, а я таких свойств (Тайминтервал) не понимаю. Вроде и ссылку ему на Акцес дал, всё одно. Вот и туплю сижу аки собака - всё понимаю(?), а ничего сказать не могу. Начал уже готовый таймер искать.

Автор: Akina 8.9.2004, 09:03
http://forum.vingrad.ru/index.php?showtopic=29252&unread=1&hl=

Автор: Staruha 8.9.2004, 12:39
Вот сделала на VBA xl Форма для просмотра картинок .Создай на диске D папку Picte и обзови в ней картинки 1,2,3...30jpg
Код
Private Sub CommandButton1_Click()
TextBox1.Text = TextBox1.Text + 1
If TextBox1.Value > 1 Then
CommandButton2.Enabled = True
End If
If TextBox1.Value = 30 Then
CommandButton2.Enabled = False
End If
End Sub

Private Sub CommandButton2_Click()
TextBox1.Value = TextBox1.Value - 1
If TextBox1.Value < 2 Then
CommandButton2.Enabled = False
End If
End Sub


Private Sub TextBox1_Change()
Dim v As String
TextBox2.Text = "D:\Picte\" & Val(TextBox1.Value) & ".JPG"
v = TextBox2.Text
Image1.Picture = LoadPicture(v)
End Sub

Private Sub UserForm_Initialize()
TextBox1.Text = 0
TextBox1.Visible = False
TextBox2.Visible = False
End Sub

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)