Дрожание формы

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Дрожание формы

Сообщение Summer.05 » 28.06.2006 (Ср) 21:34

Прошу совета и подсказки.
Есть форма. На ней два лейбла: в один выводится текущее время, во втоорой - текущая дата. Есть таймер.
При запуске программы форма дрожит. Очевидно, идет autoredraw. Я его = false.
Дрожит по-прежнему.

На всякий случай, привожу код: вдруг, кто-то подскажет.
--------------------------------------
Option Explicit
Private Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Long) As Long
' создание нестандартной формы
Private Sub Form_Load()
Dim MakeRectForm As Long

Me.Width = 9500
Me.Height = 60000
MakeRectForm = CreateRoundRectRgn( _
0 / Screen.TwipsPerPixelX, _
0 / Screen.TwipsPerPixelY, _
9500 / Screen.TwipsPerPixelX, _
6000 / Screen.TwipsPerPixelY, _
50, 50)
Call SetWindowRgn(Me.hwnd, MakeRectForm, True)
End Sub

Private Sub Form_Paint()
Call ShowTime ' - отображение времени
' цветовая заливка формы
Dim lY As Long
Dim lScaleHeight As Long
Dim lScaleWidth As Long
ScaleMode = vbPixels
lScaleHeight = ScaleHeight
lScaleWidth = ScaleWidth
DrawStyle = vbInvisible
FillStyle = vbFSSolid
For lY = 0 To lScaleHeight
FillColor = RGB(0, 0, 255 - (lY * 255) \ lScaleHeight)
Line (-1, lY - 1)-(lScaleWidth, lY + 1), , B
Next lY
End Sub

' отображение текущего времени
Sub ShowTime()
Label1.Caption = CStr(Time)
End Sub

' инициализация формы
Private Sub Form_Initialize()
Dim stDay, stMonth
stDay = Array("воскресенье", "понедельник", "вторник", _
"среда", "четверг", "пятница", "суббота")
stMonth = Array("января", "февраля", "марта", "апреля", _
"мая", "июня", "июля", "августа", _
"сентября", "октября", "ноября", "декабря")

Label2.Caption = "Сегодня " + Format$(Day(Date)) + _
" " + stMonth(Month(Date) - 1) + " " + _
Format$(Year(Date)) + " года, " + _
stDay(Weekday(Date) - 1) + "."
' отнимается 1, т.к. нумерация элементов
' массива начинается с 0

' настройка полей вывода
Label1.Font.Size = 12 ' установка размера шрифта для
' поля вывода времени
Label2.Font.Size = 10 ' установка размера шрифта для
' поля вывода даты
Label1.Alignment = 2 ' выравнивание по центру для полей
Label2.Alignment = 2 ' времени и даты
End Sub
-------------------------------

Спасибо!

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

Сообщение tyomitch » 28.06.2006 (Ср) 21:50

У меня с этим кодом ничего не дрожит. Давай прогу целиком.
Изображение

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 28.06.2006 (Ср) 21:59

tyomitch
Спасибо!
Но это - первая форма будущей проги и пока больше ничего нет!
А у меня дрожит....
Увы!

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 28.06.2006 (Ср) 22:01

tyomitch
А когда ты тестируешь этот код, у тебя секунды стоят или меняются?

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

Сообщение tyomitch » 28.06.2006 (Ср) 22:01

Неужели тяжело первую форму будущей проги положить в zip, вместе с vbp и frx, и приаттачить сюда?
Изображение

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 28.06.2006 (Ср) 22:27

Понял, выполняю...

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

Сообщение tyomitch » 28.06.2006 (Ср) 22:41

Всё равно не дрожит.
Изображение

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 28.06.2006 (Ср) 22:43

Ясно. Начинаю все сначала. Спасибо за помощь: убедил меня в моих же силах )))

IIIypuk
Обычный пользователь
Обычный пользователь
 
Сообщения: 96
Зарегистрирован: 10.06.2006 (Сб) 12:39

Сообщение IIIypuk » 29.06.2006 (Чт) 14:02

tyomitch, не дрожит у тебя, наверное, все таки потому, что PC помощнее.


Summer.05, нашел явную ошибку. Если пользователь (весьма бойкий до науки =) врубит твою прогу близко к полуночи, то день для него будет тянутся вечно, т.к. у тебя нет смены значения даты.

З.Ы. Что насчет вопроса, так у меня тож не дрожит. Попробуй поставить BackStyle в transparent, хотя сомневаюсь, что поможет.
Вообще, я бы придумал графическое решение все таки для этого.
Есть 10 типов людей. Те, кто понимает двоичную систему исчисления, и те, кто не понимает...

Oxygen
Белая и пушистая
Белая и пушистая
Аватара пользователя
 
Сообщения: 1314
Зарегистрирован: 15.07.2003 (Вт) 7:14
Откуда: Москва

Сообщение Oxygen » 29.06.2006 (Чт) 14:09

Ещё один глюк. Отключите перемещение содержимого формы при перетаскивании, потаскайте форму по экрану, и увидите оригинальный эффект формы призрака. :)

А дрожать, на самом деле не дрожит.
Процедура клонирования завершена.
Коррекция имплантированного сознания соответствует принятым алгоритмам.
Уникальный идентификатор скопирован в чип временного паспорта.
Активация прав гражданина ожидается в течение 24 часов

neic
Жираф
Жираф
 
Сообщения: 492
Зарегистрирован: 13.02.2005 (Вс) 23:44
Откуда: Сланцы

Сообщение neic » 30.06.2006 (Пт) 10:03

Я даже не загружая в VB6 увидел, что ничего не дрожит, см. свойства формы!

Summer.05
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 285
Зарегистрирован: 28.12.2005 (Ср) 20:19
Откуда: Москва

Сообщение Summer.05 » 01.07.2006 (Сб) 15:28

neic писал(а):Я даже не загружая в VB6 увидел, что ничего не дрожит, см. свойства формы!


Мне бы так )))

Я сделал форму с заливкой линией и избрал способ заливки через цикл. Линия, повторяясь в цикле, привела к подрагиванию всех лейблов и, соответственно, текста. Получилось, что вся форма трясется.
После этого я изменил способ заливки формы и все стало на свои места.

Спасибо всем!


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

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

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

    TopList