При Form1.Picture = None неправильно стартует программа.

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

Сообщение kibernetics » 30.11.2006 (Чт) 13:57

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

Konst_One
не вижу никаких проблем, в событие загрузки формы все вставляй , а свою картинку выводи в Image со стретчем. Форму подгоняй под размер полученного Image


именно в этом у меня и трудности. я просто прошу примерчик...

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 30.11.2006 (Чт) 14:14

Konst_One
а свою картинку выводи в Image со стретчем


это получается, что на форму еще нужно компонент Image вставлять?

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

Сообщение tyomitch » 30.11.2006 (Чт) 14:14

kibernetics писал(а):я хочу, чтобы при старте моего приложения, Form1 приобретало размер полученной из базы *.mdb картинки. картинка возращается как IPicture.
проблема в том, что форма не изменяет своих размеров, вернее изменяет, но неправильно. я хочу чтобы форма имела тот размер, что и картинка из базы.

Так а что, так не работает что ли?
Код: Выделить всё
Private Sub Form_Load()
Set Picture = whatever
Width = ScaleX(Picture.Width, vbHimetric, vbTwips)
Height = ScaleY(Picture.Height, vbHimetric, vbTwips)
End Sub
Изображение

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 30.11.2006 (Чт) 14:39

Код: Выделить всё
Private Sub Form_Load()
    If ADODB_Connected() Then
        myKeyRst.MoveFirst
        sArr = myKeyRst.Fields(1).Value
    frmMain.PaintPicture PictureFromBits.PictureFromBits(sArr), 0, 0 ' возращает lPicture   
    Me.Height = ScaleX(Me.Image.Height, vbHimetric, vbTwips)
    Me.Width = ScaleY(Me.Image.Width, vbHimetric, vbTwips)
End Sub


не работает. сама картинка 237х175 пикселей. а возращается Me.Image.Height(Width) = 17463(20505)

но этот код
Код: Выделить всё
Me.Height = ScaleX...
всё равно НЕ изменяет размеров

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 30.11.2006 (Чт) 15:17

Код: Выделить всё
Me.Width = 237 * Screen.TwipsPerPixelX
Me.Height = 175 * Screen.TwipsPerPixelY


Я упорно продолжаю не видеть проблемы, наверное :)

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

Сообщение tyomitch » 30.11.2006 (Чт) 15:35

tyomitch писал(а):
Код: Выделить всё
Set Picture = whatever

kibernetics писал(а):
Код: Выделить всё
    frmMain.PaintPicture PictureFromBits.PictureFromBits(sArr), 0, 0 ' возращает lPicture   


Одно и то же, что ли?
Последний раз редактировалось tyomitch 30.11.2006 (Чт) 15:41, всего редактировалось 1 раз.
Изображение

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 30.11.2006 (Чт) 15:39

вот примерчик на затравку :D
Вложения
PictureForm.rar
(51.46 Кб) Скачиваний: 74

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 30.11.2006 (Чт) 15:41

Amed

так а как получить 237 и 175 из картинки, если мне приходит значение 20505 и 17463 соответственно?

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

Сообщение Viper » 30.11.2006 (Чт) 15:43

kibernetics, но откуда то же ты знаешь что размеры именно 237 и 175?
Весь мир матрица, а мы в нем потоки байтов!

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 30.11.2006 (Чт) 15:59

Konst_One
код грамотный. и работоспособный, но тогда неизбежно нужно размещать на форме Image.

если можно, посмотрите пожалуйста мой код:

http://xe.at.tut.by/myPict.rar 30k

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 30.11.2006 (Чт) 16:01

!Viper!
я в свойствах картинки посмотрел

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

Сообщение Viper » 30.11.2006 (Чт) 16:04

kibernetics, а вот кстати, тебе не кажется, что 237*175 не очень удачно соотносятся с 20505*17463?
Весь мир матрица, а мы в нем потоки байтов!

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

Сообщение tyomitch » 30.11.2006 (Чт) 16:10

kibernetics писал(а):если можно, посмотрите пожалуйста мой код:

Попробуй всё-таки мой, а то у меня до вечера не будет VB под рукой.
Изображение

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 30.11.2006 (Чт) 16:12

!Viper!, я незнаю, насчет удачности, но ссылаюсь, на то, что хайметриксы может или твипы имеют разную процентность одно к другому. всмысле по горизонтали может *1.0 а по вертикали *1.25...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 30.11.2006 (Чт) 16:15

Код: Выделить всё
    frmMain.AutoRedraw = True
    frmMain.PaintPicture PictureFromBits.PictureFromBits(sArr), 0, 0, PictureFromBits.PictureFromBits(sArr).Width, PictureFromBits.PictureFromBits(sArr).Height 'вызов модуля конвертирования массива в картинку
   
    Me.Height = PictureFromBits.PictureFromBits(sArr).Height
    Me.Width = PictureFromBits.PictureFromBits(sArr).Width


В каком формате картинка в базе?
Последний раз редактировалось Amed 30.11.2006 (Чт) 16:22, всего редактировалось 1 раз.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 30.11.2006 (Чт) 16:17

вот, наслаждайся :wink:
Вложения
sample.rar
(35.12 Кб) Скачиваний: 72

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 30.11.2006 (Чт) 16:34

в коде от Amed растягивается сама картинка в размер окна, а не окно в размер картинки

ну а код от Konst_One у меня не производит никаких действий

картинка в базе - JPG

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 30.11.2006 (Чт) 16:38

tyomitch
я не могу почему-то использовать ваш код. не могу присвоить ничего Set Picture ....

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 30.11.2006 (Чт) 16:39

ты запусти экзешник то, все он производит и твой цветочек на экране появляется :lol:

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 30.11.2006 (Чт) 16:42

kibernetics, неправда.

Что возвращает PictureFromBits.PictureFromBits(sArr).Width?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 30.11.2006 (Чт) 16:48

все, я понял господа !!!
он в саму базу в табличку свою картинку не так засовывает :lol:

надо с помощью AppendChunk метода через ADO, а не стандартными
средствами вставки оле-картинки в поле акцесса :!:

а проверят размер картинки , так вообще в другом графическом редакторе прямо на картинке , которая не в базе лежит :D

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 30.11.2006 (Чт) 17:03

Konst_One
екзешник тоже не работает

Amed
Widht возращает 6271
а Height = 4630

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 30.11.2006 (Чт) 17:05

ты точно его запускал с той базой, что в моем архиве :?:

может MDAC обновить стоит :wink:

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 30.11.2006 (Чт) 17:15

Konst_One
да. точно с той базой. просто распаковал твой архив в папку и запустил.
а как узнать версию MDAC ?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 30.11.2006 (Чт) 17:23

есть тулза на мелкософтовском сайте для проверки текущих настроек MDAC.
искать надо в разделе www.microsoft.com/data
там же и последние версии MDAC (2.8 ) и JET 4.0 SP8

и еще, у тебя я надеюсь VB SP6 стоит :wink:
и какая у тебя операционка :?:

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 30.11.2006 (Чт) 17:32

да нет. я думаю, ну причем здесь MDAC?
если мне просто нужно привести форму к определенным размерам.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 30.11.2006 (Чт) 17:35

ты же пишешь, что у тебя экзешник ничего не показывает (т.е. он не открывается вообще или выдает ошибку или белый экран рисует :?: )

PS
у меня он выводит форму на экран с размерами рисунка из базы (красивый такой цветочек на фотографии)

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 30.11.2006 (Чт) 17:52

Konst_One
у меня она стартует, но размеры формы не идентичны размерам картинки. картинка меньше формы. собственно, это было и изначально. а мне нужно чтоб форма изменялась в размер рисунка при старте

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 30.11.2006 (Чт) 18:03

все там соответствует, еще раз повторяю, что ты картинку так впихнул в базу, что она стала такого размера. Я не знаю какая у тебя реально картинка, которую ты хочешь показать (та ,что не в базе уже лежит, а исходная в виде jpg-файла). Я думаю, что и никто не знает, с чем ты все время сравниваешь :evil:

Повторяю, что картинку нужно в базу загружать через методом AppendChunk объекта Field из твоего ADODB.Recordset для таблицы. :!:

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Сообщение kibernetics » 30.11.2006 (Чт) 18:33

в общем, keks-n осилил, эту можно сказть нерешаемую задачу...

Код: Выделить всё
Private Type BITMAP
    bmType As Long
    bmWidth As Long
    bmHeight As Long
    bmWidthBytes As Long
    bmPlanes As Integer
    bmBitsPixel As Integer
    bmBits As Long
End Type
Private Declare Function GetObject Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long

и вызвать
GetObject PictureFromBits.PictureFromBits(sArr).Handle, Len(bm), bm

вернётся всё в пикселях.

Пред.След.

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

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

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

    TopList