Страницы: Пред. 1 2
RSS
Изменение всех Label на форме, написать вложенный цикл
 
Цитата
Юрий М написал:
В таком случае Вы увидите результат, который получился после 24-ой итерации. Зачем?
не совсем, отработает только то, что соответствует заданному условию, а это может быть только одно из 24
 
Я так понимаю то нужно подсветить тот лейбл который уже определен?
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Doctorbol написал:
На форме расположены 24 лейбла
Про какую форму Вы говорите? Где её можно увидеть?
 
Цитата
Nordheim написал: нужно подсветить тот лейбл который уже определен?
вчера вы помогли выделить цветом леибл, соответствующий текущему часу. Сегодня хочу вокург этого лейбла сделать красную рамку. Перекрашивать рамку самого лейбла не вариант, потому что лейблы друг друга на один пиксель перекрывают.

вот так
 
Форма где?
 
сообщение #4
 
Если известно какой лейбл равен часу, то в чем проблема сделать еще один с теми же параметрами что и искомый, и поставить прозрачность.
вот пример кода

Код
    With Me.Controls.Add("Forms.Label.1", "lbl", True)
        .Top = Me.Label1.Top
        .Left = Me.Label1.Left
        .Width = Me.Label1.Width
        .Height = Me.Label1.Height
        .BorderStyle = 1
        .BorderColor = vbRed
        .BackStyle = 0
    End With

в нем создается новый label, но можно двигать и уже созданный.
"Все гениальное просто, а все простое гениально!!!"
 
удобней будет создать переменную и присвоить переменной искомый Label, код будет несколько короче.
"Все гениальное просто, а все простое гениально!!!"
 
Doctorbol, в #4 нет никакой формы. Вы что под формой понимаете?
 
Цитата
Nordheim написал:
Если известно какой лейбл равен часу, то в чем проблема сделать еще один с теми же параметрами что и искомый, и поставить прозрачность.
Ну это тоже альтерантивный вариант кстати. Может и так попробовать.  
 
Nordheim, Хорошо, а что с циклами-то не так?
 
Вот пример инициализации формы и скрытия лейбла  для рамки, а затем после клика на форме рамка появляется
Код
Private Sub UserForm_Click()
    Dim lbl As Control
    Set lbl = Me.Label2
    With lbl
        .Visible = True
        .Top = Me.Label1.Top
        .Left = Me.Label1.Left
        .Width = Me.Label1.Width
        .Height = Me.Label1.Height
        .BorderStyle = 1
        .BorderColor = vbRed
        .BackStyle = 0
    End With
End Sub

Private Sub UserForm_Initialize()
    Me.Label2.Visible = False
End Sub

Цитата
Doctorbol написал: Nordheim , Хорошо, а что с циклами-то не так?
А с циклом я вообще ничего не понял. там куча циклов и фигурирует один элемент, если у этого элемента только одно совпадение зачем гонять все циклы, совпало закончите перебор.
"Все гениальное просто, а все простое гениально!!!"
 
Как с помощью цикла записать это?
Код
'If Hour(Now) = 0 Then Med_Chart.lblTimeLine.Left = 270
'If Hour(Now) = 1 Then Med_Chart.lblTimeLine.Left = 288
'If Hour(Now) = 2 Then Med_Chart.lblTimeLine.Left = 306
'If Hour(Now) = 3 Then Med_Chart.lblTimeLine.Left = 324
'If Hour(Now) = 4 Then Med_Chart.lblTimeLine.Left = 342
'If Hour(Now) = 5 Then Med_Chart.lblTimeLine.Left = 360
'If Hour(Now) = 6 Then Med_Chart.lblTimeLine.Left = 378
'If Hour(Now) = 7 Then Med_Chart.lblTimeLine.Left = 396
'If Hour(Now) = 8 Then Med_Chart.lblTimeLine.Left = 414
'If Hour(Now) = 9 Then Med_Chart.lblTimeLine.Left = 0
'If Hour(Now) = 10 Then Med_Chart.lblTimeLine.Left = 18
'If Hour(Now) = 11 Then Med_Chart.lblTimeLine.Left = 36
'If Hour(Now) = 12 Then Med_Chart.lblTimeLine.Left = 54
'If Hour(Now) = 13 Then Med_Chart.lblTimeLine.Left = 72
'If Hour(Now) = 14 Then Med_Chart.lblTimeLine.Left = 90
'If Hour(Now) = 15 Then Med_Chart.lblTimeLine.Left = 108
'If Hour(Now) = 16 Then Med_Chart.lblTimeLine.Left = 126
'If Hour(Now) = 17 Then Med_Chart.lblTimeLine.Left = 144
'If Hour(Now) = 18 Then Med_Chart.lblTimeLine.Left = 162
'If Hour(Now) = 19 Then Med_Chart.lblTimeLine.Left = 180
'If Hour(Now) = 20 Then Med_Chart.lblTimeLine.Left = 198
'If Hour(Now) = 21 Then Med_Chart.lblTimeLine.Left = 216
'If Hour(Now) = 22 Then Med_Chart.lblTimeLine.Left = 234
'If Hour(Now) = 23 Then Med_Chart.lblTimeLine.Left = 252
 
Это циклом не записать. Разные значения. Примените Select Case
 
Массив вам в помощь
"Все гениальное просто, а все простое гениально!!!"
 
Если правильно понял (в чём сомневаюсь):
Код
Sub qqq()
Dim i As Long
    Select Case Hour(Now)
        Case 0 To 8
            For i = 270 To 414 Step -18
                Med_Chart.lblTimeLine.Left = i
            Next
        Case 9 To 23
            For i = 0 To 252 Step 18
                Med_Chart.lblTimeLine.Left = i
            Next
    End Select
End Sub
 
Код
    Dim arr()
    arr = Array("270", "288", "306", "324", "342", "360", "378", "396", "414", "0", "18", "36", "54", "72", "90", "108", "126", "144", "162", "180", "198", "216", "234", "252")
    MsgBox arr(Hour(Now))
    Med_Chart.lblTimeLine.Left = arr(Hour(Now))
"Все гениальное просто, а все простое гениально!!!"
 
Вариант:
Код
Med_Chart.lblTimeLine.Left =((Hour(Now)+15) mod 24)*18
 
Ух сколько вариантов, надо все пробовать, спасибо!
 
Цитата
Юрий М написал:
Если правильно понял (в чём сомневаюсь):
похоже работает, но промахивается на один шаг
 
Апострофф, Черт, как Вы это делаете? Браво!
 
Doctorbol, свои сообщения можно дополнять, иначе Вы сейчас выстроите очередь
Страницы: Пред. 1 2
Наверх