Парадокс с PictureBox, или так и должно быть?...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Парадокс с PictureBox, или так и должно быть?...

Сообщение BV » 24.06.2005 (Пт) 17:30

Может я чего-то не понимаю, НО!
Объясните мне, почему этот код ни разу не выдаст MsgBox (как пример)?!!!

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

Private Sub Picture1_Click()
    Set Picture1.Picture = Picture1.Image
    If Picture1.Picture = Picture1.Image Then MsgBox "Ok!"
End Sub
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 24.06.2005 (Пт) 17:49

а так попробуй:
Код: Выделить всё
Private Sub Picture1_Click()
    Debug.Print Picture1.Picture
    Debug.Print Picture1.Image
    Set Picture1.Picture = Picture1.Image
    Debug.Print Picture1.Picture
    Debug.Print Picture1.Image
End Sub

После Set Picture1.Picture = Picture1.Image меняется и .Picture и .Image. Вот и не выдает.
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

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

Сообщение alibek » 24.06.2005 (Пт) 18:18

Кроме того, объекты сравниваются не равенством, а оператором Is.
Lasciate ogni speranza, voi ch'entrate.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 24.06.2005 (Пт) 19:00

2 alibek

Есть возможность и "=" поставить.
Но тут что "Is", что "=" - результат один. Только почему так?
Чем Image отличается от Picture?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

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

Сообщение tyomitch » 24.06.2005 (Пт) 20:10

BV, Property Set Picture хитрое: оно копирует не ссылку на картинку, а саму картинку, нарушая все законы здравого смысла.
Сделано это всё для совместимости с VB3-, где ещё не было ООП и таких фич, как Property Set
Изображение

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 24.06.2005 (Пт) 22:21

2 tyomitch

Во-первых - только не говори, что и это ты из MSDN узнал :) Не может быть :)
Во-вторых - как переводится твоя подпись?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

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

Сообщение tyomitch » 24.06.2005 (Пт) 22:55

1. Нет, проведя в точности тот же эксперимент как ты, сделал логичные выводы :-)
2. Каждый день по-новому :-) см. http://bbs.vbstreets.ru/viewtopic.php?t=17196
Изображение


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 182

    TopList