Изменение координат...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Стёпка
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 12.08.2004 (Чт) 4:14

Изменение координат...

Сообщение Стёпка » 24.09.2004 (Пт) 11:21

Подскажите, как сделать: допустим прямоугольник нарисован програмно...И есть например вторая форма из которой хотелось бы менять размеры прямоугольника вводя данные в текстбоксы... Т.е. изменил например X2 в соответствующем текстбоксе и координата прямоугольника X2 заменяется на это число...Как это организовать?

-=TsA=-
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 21.09.2004 (Вт) 14:32
Откуда: Татарстан, Заинск

Сообщение -=TsA=- » 24.09.2004 (Пт) 11:24

A как ты собираешся рисовать?
через метод Line или при помощи объектов Line и Shape?

Стёпка
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 12.08.2004 (Чт) 4:14

Сообщение Стёпка » 24.09.2004 (Пт) 11:25

Просто Line с буковкой B в конце...)))

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 24.09.2004 (Пт) 12:24

Ну, один раз нарисовать прямоугольник ты смог, значит, и перерисовать его при необходимости тоже сможешь. Лови у своего текста либо Change(), либо Validate() - зависит от того, что тебе больше понравится по логике работы, любое изменение данных или же переход фокуса ввода на другой контрол. Ну и перерисовывай с новыми координатами...

-=TsA=-
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 21.09.2004 (Вт) 14:32
Откуда: Татарстан, Заинск

Сообщение -=TsA=- » 24.09.2004 (Пт) 12:50

Ну вот тебе общее направление
Код: Выделить всё
'Form1 - Форма управления (Стартовая)
'Form2 - Форма рисования
'на Form1 нужно положить
'   5 Label
'   4 TextBox
'   1 ComboBox
'   1 Timer

'В Form1
Option Explicit
Private Type Rect
    X1 As Long
    Y1 As Long
    X2 As Long
    Y2 As Long
End Type
Const RECTS_COUNT As Integer = 15

'Если прямоугольников несколько
Private Rects(RECTS_COUNT) As Rect

Private Sub Form_Load()
    Dim I As Integer
    With Me
        .Caption = "Форма управления"
        .Left = 0
        .Top = 0
        .Height = 2355
        .Width = 2430
    End With
    With Label1
        .Caption = "1"
        .Left = 150
        .Top = 1050
        .AutoSize = True
    End With
    With Label2
        .Caption = "2"
        .Left = 165
        .Top = 1440
        .AutoSize = True
    End With
    With Label3
        .Caption = "X"
        .Left = 765
        .Top = 750
        .AutoSize = True
    End With
    With Label4
        .Caption = "Y"
        .Left = 1635
        .Top = 720
        .AutoSize = True
    End With
    With Text1
        .Left = 420
        .Top = 1005
        .Width = 795
        .Height = 285
        .Text = 0
        .Alignment = 1
    End With
    With Text2
        .Left = 1290
        .Top = 1005
        .Width = 795
        .Height = 285
        .Text = 0
        .Alignment = 1
    End With
    With Text3
        .Left = 420
        .Top = 1395
        .Width = 795
        .Height = 285
        .Text = 0
        .Alignment = 1
    End With
    With Text4
        .Left = 1290
        .Top = 1395
        .Width = 795
        .Height = 285
        .Text = 0
        .Alignment = 1
    End With
    Randomize
    With Combo1
        .Left = 1485
        .Top = 315
        .Width = 600
        .Clear
        For I = 0 To RECTS_COUNT
            Combo1.AddItem I
            Rects(I).X1 = Rnd() * 400
            Rects(I).Y1 = Rnd() * 300
            Rects(I).X2 = Rnd() * 400
            Rects(I).Y2 = Rnd() * 300
        Next I
        Combo1.Text = 0
    End With
    Form2.Show
    With Form2
        .Left = 2355
        .Top = 2430
        .Height = 4905
        .Width = 6120
        .ScaleMode = 3
    End With
    DrawRect
    With Timer1
        .Interval = 100
        .Tag = "*"
        .Enabled = True
    End With
End Sub

Private Sub Combo1_Click()
    Text1.Text = Rects(Val(Combo1.Text)).X1
    Text2.Text = Rects(Val(Combo1.Text)).Y1
    Text3.Text = Rects(Val(Combo1.Text)).X2
    Text4.Text = Rects(Val(Combo1.Text)).Y2
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
        Text2.SetFocus
    End If
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
        Text3.SetFocus
    End If
End Sub

Private Sub Text3_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
        Text4.SetFocus
    End If
End Sub

Private Sub Text4_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
        Combo1.SetFocus
    End If
End Sub

Private Sub Combo1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then
        Text1.SetFocus
    End If
End Sub

Private Sub Text1_LostFocus()
    Rects(Val(Combo1.Text)).X1 = Val(Text1.Text)
    DrawRect
End Sub

Private Sub Text2_LostFocus()
    Rects(Val(Combo1.Text)).Y1 = Val(Text2.Text)
    DrawRect
End Sub

Private Sub Text3_LostFocus()
    Rects(Val(Combo1.Text)).X2 = Val(Text3.Text)
    DrawRect
End Sub

Private Sub Text4_LostFocus()
    Rects(Val(Combo1.Text)).Y2 = Val(Text4.Text)
    DrawRect
End Sub

Private Sub DrawRect()
Dim I As Integer
    Form2.Cls
    For I = 0 To RECTS_COUNT
        Form2.ForeColor = QBColor(I)
        Form2.GrapchicsRefresh Rects(I).X1, Rects(I).Y1, Rects(I).X2, Rects(I).Y2
    Next I
End Sub

Private Sub Timer1_Timer()
    If Timer1.Tag = "*" Then
        Form2.ForeColor = Form2.BackColor
        Form2.GrapchicsRefresh Rects(Combo1.Text).X1, Rects(Combo1.Text).Y1, Rects(Combo1.Text).X2, Rects(Combo1.Text).Y2
        Timer1.Tag = ""
    Else
        Form2.ForeColor = QBColor(Combo1.Text)
        Form2.GrapchicsRefresh Rects(Combo1.Text).X1, Rects(Combo1.Text).Y1, Rects(Combo1.Text).X2, Rects(Combo1.Text).Y2
        Timer1.Tag = "*"
    End If
End Sub

'В Form2
'Option Explicit
'
'Public Sub GrapchicsRefresh(X1 As Long, Y1 As Long, X2 As Long, Y2 As Long)
'    Line (X1, Y1)-(X2, Y2),, B
'End Sub


:twisted:
Последний раз редактировалось -=TsA=- 31.10.2011 (Пн) 14:10, всего редактировалось 1 раз.

Стёпка
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 12.08.2004 (Чт) 4:14

Сообщение Стёпка » 27.09.2004 (Пн) 8:24

Пасиба всем...)))


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

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

Сейчас этот форум просматривают: С.Т. и гости: 3

    TopList