"Синхронизация" значений в элементах управления

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

"Синхронизация" значений в элементах управления

Сообщение xqz_me » 07.12.2005 (Ср) 11:23

Дурацкий заголовок темы, но умнее ничего не придумал.

Есть 3 текстбокса и восемь чекбоксов. В них отображается одна и та же переменная, только в разных системах счисления (HEX, DEC, CHR (символ) и BIN). Для наглядности можно на картинку посмотреть.

Задача такая. Если я в одном из этих текстбоксов меняю число, надо, чтобы оно автоматически, переведённое правильно, попало в остальные и разложилось на биты. А если я, например, снимаю или добавляю галочку в режиме BIN, также, чтобы изменения также коснульлись всех остальных элементов. Ну, т.е. если произошло какое-либо из менение в одной системе счисления, надо чтобы оно оказалось и в других, правильно переведённое.

И ещё один вопрос. Можно придумать принцип разложения числа на биты и активации соответствующих чекбосов, а также перевод в другие системы счисления поумнее этого
Код: Выделить всё
Text3.Text = CStr(Hex(flxGrid.Row - 1)) + CStr(Hex(flxGrid.Col - 1))
    Text4.Text = CStr(flxGrid.TextMatrix(flxGrid.Row, flxGrid.Col))
    Text5.Text = CStr(Val("&H" + CStr(flxGrid.TextMatrix(flxGrid.Row, flxGrid.Col))))
    Text6.Text = Chr(Val("&H" + CStr(flxGrid.TextMatrix(flxGrid.Row, flxGrid.Col))))

    If (Val("&H" + CStr(flxGrid.TextMatrix(flxGrid.Row, flxGrid.Col))) And 2 ^ 0) > 0 Then
    Check1.Value = 1
    Else
    Check1.Value = 0
    End If
    If (Val("&H" + CStr(flxGrid.TextMatrix(flxGrid.Row, flxGrid.Col))) And 2 ^ 1) > 0 Then
    Check2.Value = 1
    Else
    Check2.Value = 0
    End If
    If (Val("&H" + CStr(flxGrid.TextMatrix(flxGrid.Row, flxGrid.Col))) And 2 ^ 2) > 0 Then
    Check3.Value = 1
    Else
    Check3.Value = 0
    End If
    If (Val("&H" + CStr(flxGrid.TextMatrix(flxGrid.Row, flxGrid.Col))) And 2 ^ 3) > 0 Then
    Check4.Value = 1
    Else
    Check4.Value = 0
    End If
    If (Val("&H" + CStr(flxGrid.TextMatrix(flxGrid.Row, flxGrid.Col))) And 2 ^ 4) > 0 Then
    Check5.Value = 1
    Else
    Check5.Value = 0
    End If
    If (Val("&H" + CStr(flxGrid.TextMatrix(flxGrid.Row, flxGrid.Col))) And 2 ^ 5) > 0 Then
    Check6.Value = 1
    Else
    Check6.Value = 0
    End If
    If (Val("&H" + CStr(flxGrid.TextMatrix(flxGrid.Row, flxGrid.Col))) And 2 ^ 6) > 0 Then
    Check7.Value = 1
    Else
    Check7.Value = 0
    End If
    If (Val("&H" + CStr(flxGrid.TextMatrix(flxGrid.Row, flxGrid.Col))) And 2 ^ 7) > 0 Then
    Check8.Value = 1
    Else
    Check8.Value = 0
    End If
Вложения
example.jpg
Картинка
example.jpg (37.13 Кб) Просмотров: 81

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 07.12.2005 (Ср) 11:24

Вопрос то в чем?
Как это сделать автоматически? Событие Change у текстбокса.
Lasciate ogni speranza, voi ch'entrate.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Re: "Синхронизация" значений в элементах управлени

Сообщение keks-n » 07.12.2005 (Ср) 11:29

xqz_me писал(а):И ещё один вопрос. Можно придумать принцип разложения числа на биты и активации соответствующих чекбосов, а также перевод в другие системы счисления поумнее этого


Код: Выделить всё

Function Odd(NatVal As Long) As Boolean
Odd = (NatVal / 2 = NatVal \ 2)
End Function

Function Dec2Bin(ByVal NatVal As Long, Optional MinLen As Long) As String
Dim ret As String
If NatVal = 0 Then Dec2Bin = "0": Exit Function
If NatVal < 0 Or NatVal <> Val(Str(NatVal)) Then Err.Raise &HFF21, "Dec2Bin", "Parameter must be a natural value."
Do
If Odd(NatVal) Then
ret = ret + "0"
NatVal = NatVal / 2
Else
ret = ret + "1"
NatVal = (NatVal - 1) / 2
End If
If NatVal = 0 Then Exit Do
Loop
If Len(ret) < MinLen Then ret = ret + String(MinLen - Len(ret), "0")
Dec2Bin = StrReverse(ret)
End Function


Function Bin2Dec(ByVal BinVal As String) As Long
Dim ret As Long, n As Long, tmpstr As String, tmplen As Long
tmplen = Len(BinVal)
If tmplen = 0 Then Bin2Dec = 0: Exit Function
BinVal = StrReverse(BinVal)
For n = 1 To Len(BinVal)
tmpstr = Mid(BinVal, n, 1)
If tmpstr <> "1" And tmpstr <> "0" Then Err.Raise &HFF22, "Bin2Dec", "Parameter must be a binary value"
If tmpstr = "1" Then ret = ret + 2 ^ (n - 1)
Next
Bin2Dec = ret
End Function


xqz_me много глупых вопросов с твоей стороны за последние дни.
Изображение

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 07.12.2005 (Ср) 11:41

xqz_me много глупых вопросов с твоей стороны за последние дни.


Исправлюсь. Просто форум называется "Visual Basic для новичков", вот я подумал, что здесь можно задавать такие вопросы :)

Спасибо

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: "Синхронизация" значений в элементах управлени

Сообщение alibek » 07.12.2005 (Ср) 11:49

keks-n писал(а):xqz_me много глупых вопросов с твоей стороны за последние дни.

Думаешь, ты являешься эталоном четкости и лаконичности в написании постов?
Lasciate ogni speranza, voi ch'entrate.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 07.12.2005 (Ср) 11:52

Ни в коем случае! Я на такие звания не претендую!

Да по сравнению с даже не самыми великими форума сего я никто.

Эх, пойду проходить Refueling Base (map 10) на Ultra-Violette.
Изображение


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

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

Сейчас этот форум просматривают: Google-бот и гости: 46

    TopList