Страницы: 1
RSS
Размещение png на форме - в имеющемся макросе
 
Здравствуйте.
Помогите.

Нашел в интернете такую вещь, которая якобы добавляет пнг с прозрачным фоном - на прозрачную же форму, и возникает эффект такого своебразного пнг-элемента на форме.
Но запустить я это не могу.
Помогите мне запустить этот макрос ?
 
plank1433,
распакуйте в папку на рабочем столе, вставьте код ниже в модуль и запустите его
Код
Sub aaa()
UserForm2.Show
End Sub
 
evgeniygeo, не работает. Выдает ошибку:
Цитата
Run-time error 6
Overflow
 
Функция не правильно объявлена. Второй параметр у Вас Integer, а Вы в него Long пихаете. Вот и ошибка. Правильно так:
Код
Private Declare PtrSafe Function SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As LongPtr, ByVal crKey As LongPtr, ByVal bAlpha As Integer, ByVal dwFlags As LongPtr) As LongPtr
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, теперь открывается какое-то микроскопическое окно.
А как установить размер этого окна - чтобы проверить есть прозрачность или нет ?
Изменено: plank1433 - 08.10.2020 14:29:18
 
Цитата
plank1433 написал:
теперь открывается какое-то микроскопическое окно
у меня нормальное открывается(не во все окно, но различимое) - какое изображение, такое и окно. Задайте размеры формы такие, какие надо. И изображение подберите нужного размера.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
Задайте размеры формы такие, какие надо.
А где именно в макросе их задавать ?
 
Вы рисунок размером побольше попробовали подсунуть для начала?
Вот в этом блоке можете задать размеры:
Код
With Controls.Add("forms.image.1", Me.Caption)
        .AutoSize = 1: .PictureSizeMode = 1
        .Picture = picobj: Me.Picture = .Picture
        Me.Move 0, 0, .Width, .Height
    End With
.AutoSize = 1 - означает, что размер подбирается автоматом под размер рисунка.
Me.Move - здесь задаются размеры и положение формы.
Если записать так:
Код
With Controls.Add("forms.image.1", Me.Caption)
        .AutoSize = 0
        .Height = 300
        .Width = 300
        .PictureSizeMode = 1
        .Picture = picobj
        Me.Picture = .Picture
        Me.Move 0, 0, .Width, .Height
    End With
То размер будет 300 на 300. Разбирайтесь.
Изменено: Дмитрий(The_Prist) Щербаков - 08.10.2020 17:49:23
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, сделал как вы сказали.

Размеры формы совершенно не изменились.
По-прежнему микроскопическое окно - примерно 20 на 40 пикселей.

Насчет того, что:
.AutoSize = 1 - означает, что размер подбирается автоматом под размер рисунка.

Когда у меня стоял AutoSize = 1 то отображался небольшой фрагмент рисунка. Форма не подгонялась под размер рисунка.
(у меня Excel 2016x64)
Изменено: plank1433 - 08.10.2020 20:43:04
 
Цитата
plank1433 написал:
сделал как вы сказали
не знаю что Вы там сделали...Но размеры формы в коде меняются именно там. Только что проверил - работает без проблем, все меняется на заданные значения.
Цитата
plank1433 написал:
Форма не подгонялась под размер рисунка
наоборот - она подгоняется. Вам азы VBA для начала подучить, чтобы хоть чуть-чуть понимать, что вообще в кодах написано. Расписывать не буду, но если хотите, что рисунок тоже подгонялся под заданный размер, то надо записывать так:
Код
With Controls.Add("forms.image.1", Me.Caption)
        .AutoSize = 0
        .Height = 300
        .Width = 300
        .PictureSizeMode = 1
        .Picture = picobj
        Me.Picture = .Picture
        Me.Move 0, 0, .Width, .Height
        Me.PictureSizeMode = 1 'определяем для картинки формы автоподгон под размер, заданный в Image
    End With
Изменено: Дмитрий(The_Prist) Щербаков - 09.10.2020 12:31:36
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
Только что проверил - работает без проблем,
Я про Excel2016x64 спрашиваю

(в Excel2008 и у меня работает без проблем)

Как его в  Excel2016x64 запустить ?
(последняя версия кода - просто деформирует рисунок, вписывая его в эту маленькую растянутую форму. Сама форма - не меняется)
 
Цитата
plank1433 написал:
Я про Excel2016x64 спрашиваю
отлично. А я где-то писал, что у меня другой?
Приложите файл с последним кодом, который не меняет размеры формы. У меня все работает, а чудес не бывает. Значит что-то у Вас не так написано.
Вы уверены, что у Вас в коде вот эта строка присутствует?
Код
Me.Picture = .Picture
Изменено: Дмитрий(The_Prist) Щербаков - 09.10.2020 16:54:14
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
Вы уверены, что у Вас в коде вот эта строка присутствует?
Уверен.
В коде формы - есть такая строка.
 
Здравствуйте.
Помогите запустить макрос на .Excel2016x64

Нашел в интернете такую вещь, которая якобы добавляет пнг с прозрачным фоном - на прозрачную же форму, и возникает эффект такого своебразного пнг-элемента на форме.
Но запустить я это не могу - выдает маленькую форму, которую нельзя двигать (хотя на Е2008 все работает).
 
извините за невежество, а что это за зверь ПНГ?
Изменено: Ігор Гончаренко - 11.10.2020 22:43:34
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Видео запишите что и как у Вас там появляется. Потому что воспроизвести проблему не получается. И повторюсь: у меня тоже 64 бита.
Кстати, двигать форму и у меня не позволяет. Но с этим и не разбирался, т.к. не вижу даже строчки кода, которая бы отвечала за эту возможность.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков,ну видео-то, какое уж там видео.
Вот фото.
Видна там в уголке форма, на которой сплюснутый заяц.
А заяц должен быть нормальным - то есть в полный рост.
 
Если убрать эту строку  из кода  Me.Move 0, 0, .Width, .Height
То заяц немного выпрямится.
 
doober, ну нормально вроде стало.

А как перетаскивать-то эту форму ?
В E2008 - ее можно перетаскивать, а в Е2016х64 уже не получается.
 
Помогите
 
Подскажите - как это окно формы - перемещать мышкой в Е2016  (в Е2008 - его можно перемещать) ?
 
Вопрос не по теме
 
господа, извините за назойливость, а что такое ПНГ?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, https://ru.m.wikipedia.org/wiki/PNG
Страницы: 1
Наверх