StdFont'ы зависят друг от друга или ...?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Arcady_XQST
Обычный пользователь
Обычный пользователь
 
Сообщения: 85
Зарегистрирован: 17.09.2007 (Пн) 1:27
Откуда: Russia, Bryansk

StdFont'ы зависят друг от друга или ...?

Сообщение Arcady_XQST » 01.12.2007 (Сб) 14:46

Добавьте 2 баттона на форму и вставьте код (ну и запустите, конечно :)):
Код: Выделить всё
Option Explicit

Dim stdTestFont As StdFont
Dim stdTestFont2 As StdFont

Private Sub Form_Load()
    Set stdTestFont = Me.Font
    Set stdTestFont2 = Me.Font
   
    Set Command2.Font = stdTestFont2
   
    Set stdTestFont2 = Nothing
   
    stdTestFont.Size = 14
   
    Set Command1.Font = stdTestFont
   
    Set stdTestFont = Nothing
End Sub
У меня 14 размер шрифта применятся к двум кнопкам, а должен только к первой. Что здесь неправильно? :roll:
// тили-тили, трали-вали
if (jsLoaded) {
// это дело мне по силе, откажусь теперь едва ли
} else {
// это мы не проходили, это нам не задавали
}

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Сообщение Saturn.65 » 01.12.2007 (Сб) 16:06

Мудреные коды. А если вот так?
Код: Выделить всё
Private Sub Form_Load()
Command1.FontSize = 14
Command2.FontSize = 8
End Sub

Можешь и цвет менять и надпись.

Arcady_XQST
Обычный пользователь
Обычный пользователь
 
Сообщения: 85
Зарегистрирован: 17.09.2007 (Пн) 1:27
Откуда: Russia, Bryansk

Сообщение Arcady_XQST » 01.12.2007 (Сб) 16:17

Кхм... Я не сказал, что мне нужно изменить размер, я просто привел наглядный пример непонятного мне результата его работы. Мне нужен именно SdtFont, ведь не буду я сохранять (и загружать) все его параметры (а их 8) в переменных вместо того, чтобы сохранить в одну переменную типа StdFont.
// тили-тили, трали-вали
if (jsLoaded) {
// это дело мне по силе, откажусь теперь едва ли
} else {
// это мы не проходили, это нам не задавали
}

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 01.12.2007 (Сб) 17:09

Два разных объекта StdFont при присвоении от Me.Font копируют один и тот же хендл HFONT.
В этом можно убедиться:
Код: Выделить всё
   Dim hfnt As IFont
   Set hfnt = stdTestFont
   Debug.Print hfnt.hFont
   
   Set hfnt = stdTestFont2
   Debug.Print hfnt.hFont

P.S. А этот HFONT - есть GDI ресурс, и его изменение отражается на всем что его использует.

Arcady_XQST
Обычный пользователь
Обычный пользователь
 
Сообщения: 85
Зарегистрирован: 17.09.2007 (Пн) 1:27
Откуда: Russia, Bryansk

Сообщение Arcady_XQST » 01.12.2007 (Сб) 17:31

Т.е. StdFont не может сохранять в себе независимые настройки шрифта? А как же мне быть? :roll:

P.S.: то-то я смотрю какая-то ерунда творится :)
// тили-тили, трали-вали
if (jsLoaded) {
// это дело мне по силе, откажусь теперь едва ли
} else {
// это мы не проходили, это нам не задавали
}

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

Сообщение Antonariy » 01.12.2007 (Сб) 17:37

Set x = New StdFont
Лучший способ понять что-то самому — объяснить это другому.

Arcady_XQST
Обычный пользователь
Обычный пользователь
 
Сообщения: 85
Зарегистрирован: 17.09.2007 (Пн) 1:27
Откуда: Russia, Bryansk

Сообщение Arcady_XQST » 01.12.2007 (Сб) 17:56

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

Dim stdTestFont As StdFont
Dim stdTestFont2 As StdFont

Private Sub Form_Load()
    Set stdTestFont = New StdFont
    Set stdTestFont2 = New StdFont
   
    stdTestFont = Me.Font
    stdTestFont2 = Me.Font
   
    Set Command2.Font = stdTestFont2
   
    Set stdTestFont2 = Nothing
   
    stdTestFont.Size = 14
   
    Set Command1.Font = stdTestFont
   
    Set stdTestFont = Nothing
End Sub

:) Спасибо всем, кто откликнулся и просветил меня! :)
// тили-тили, трали-вали
if (jsLoaded) {
// это дело мне по силе, откажусь теперь едва ли
} else {
// это мы не проходили, это нам не задавали
}


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

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

Сейчас этот форум просматривают: AhrefsBot, Majestic-12 [Bot], SemrushBot и гости: 19

    TopList  
cron