check box

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
i'm pissed
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 194
Зарегистрирован: 23.10.2004 (Сб) 12:01
Откуда: irkutsk

check box

Сообщение i'm pissed » 25.10.2004 (Пн) 20:52

Ладно раслаблятся. Вот опять вопрос.
Как сделать чтобы check box запоминал галочки.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 25.10.2004 (Пн) 20:53

"Запоминал"?

Поясните...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 25.10.2004 (Пн) 20:54

Запускаешь программу, а в ней галочки, как в прошлый раз? Это надо сохранять значения в реестр или в файлик с настройками.

i'm pissed
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 194
Зарегистрирован: 23.10.2004 (Сб) 12:01
Откуда: irkutsk

Сообщение i'm pissed » 25.10.2004 (Пн) 20:57

а не подскажешь как ?
желательно в файлик с настройками и чтобы он по завершения программы удалялся.
by_pissed

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 25.10.2004 (Пн) 21:11

Нет, он не должен удаляться как раз... Примерно так:

Private Sub ReadBoxes(file as string)
dim tmp as byte
Open app.path & "\" & file for binary as #1
get #1, tmp
close #1

if tmp>0 then chkbox.checked=true
End Sub

Private Sub SaveBoxes(file as string)
Open app.path & "\" & file for binary as #1
if chkbox.checked=true then
put #1, 1
else
put #1, 0
end if
close #1
End Sub

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 25.10.2004 (Пн) 21:22

В принципе для этого можно исползовать родные Васикаовские ф-ции по работе с реестром! ( По-моему, так проще )
SaveSetting
GetSetting
i'm pissed писал(а):а не подскажешь как ?
желательно в файлик с настройками и чтобы он по завершению программы удалялся.
Что-то я хода мысли не понял…
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 25.10.2004 (Пн) 21:26

Это ошибочные мысли, не обращай внимания :)

А с реестром плохо то, что каждая прога норовит туда что-нибудь пихнуть => винды потом начинают долго грузиться, или надо реестр чистить. А тут - ррррраз, и нет файлика :)

i'm pissed
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 194
Зарегистрирован: 23.10.2004 (Сб) 12:01
Откуда: irkutsk

Сообщение i'm pissed » 26.10.2004 (Вт) 4:02

THX
by_pissed

i'm pissed
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 194
Зарегистрирован: 23.10.2004 (Сб) 12:01
Откуда: irkutsk

Сообщение i'm pissed » 26.10.2004 (Вт) 13:30

А по подробнее про реестер можно
by_pissed

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 26.10.2004 (Вт) 14:42

вот стандартные команды бейсика для записи/чтения из реестра

Код: Выделить всё
VBA.GetSetting
VBA.SaveSetting


разбирайся

i'm pissed
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 194
Зарегистрирован: 23.10.2004 (Сб) 12:01
Откуда: irkutsk

Сообщение i'm pissed » 26.10.2004 (Вт) 15:02

вообще ниче понять не могу
Amed хочу попросить тебя
твоим способом хочу
Код: Выделить всё
Private Sub ReadBoxes(file as string)
dim tmp as byte
Open app.path & "\" & file for binary as #1
get #1, tmp
close #1

if tmp>0 then chkbox.checked=true
End Sub

Private Sub SaveBoxes(file as string)
Open app.path & "\" & file for binary as #1
if chkbox.checked=true then
put #1, 1
else
put #1, 0
end if
close #1
End Sub

вот у меня на форме (toppanel) содержится два check box.
а также формы:
pannel
pannel1
pannel2
pannel3

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 26.10.2004 (Вт) 18:25

Ну так всё просто.

Код: Выделить всё
Private Sub ReadBoxes(file as string)
On error resume next
dim tmp as byte
Open app.path & "\" & file for binary as #1
get #1, 1, tmp
if tmp>0 then checkbox1.checked=true
get #1, 2, tmp
if tmp>0 then checkbox2.checked=true
close #1

End Sub

Private Sub SaveBoxes(file as string)
On error resume next
Open app.path & "\" & file for binary as #1
if checkbox1.checked=true then
put #1, 1, 1
else
put #1, 1, 0
end if

if checkbox2.checked=true then
put #1, 2, 1
else
put #1, 2, 0
end if
close #1
End Sub


Так, вроде. В pannel_load помещаешь Readboxes("new.dat"), в pannel_unload - Saveboxes("new.dat").

i'm pissed
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 194
Зарегистрирован: 23.10.2004 (Сб) 12:01
Откуда: irkutsk

Сообщение i'm pissed » 26.10.2004 (Вт) 18:43

Чето опять не получается давай я уточну.
значит так.
мы имеем формы: toppanel
panel
panel1
panel2
panel3
----------------------
Toppanel самая главная в ней находится 2 cheсkbox (check).
также она имеет combobox (в которой находится пункт "кнопки" и "картинки" т.е в form_load я указал так
Код: Выделить всё
With Comb
        .Clear
         .AddItem "Кнопки"
         .AddItem "Рисунок"
        .ListIndex = 0
      End With

а в кнопки command1_click
Код: Выделить всё
      Select Case Comb.ListIndex
         Case 0   'Кнопки
           If Check1.Value Then panel1.Show , frmBrowser Else panel1.Hide
           If Check2.Value Then panel3.Show , frmBrowser Else panel3.Hide
         Case 1   'Рисунок
           If Check1.Value Then panel.Show , frmBrowser Else panel.Hide
           If Check2.Value Then panel2.Show , frmBrowser Else panel2.Hide
      End Select
Unload Me


тоесть при выборе например check1 должна выйти панель panel1.
ПОМОГИ PLZ
by_pissed

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 26.10.2004 (Вт) 18:49

Ну да, всё верно. Вышеприведённый код вставляешь в Form_Load и Form_Unload toppanel (в которой CheckBox'ы), только ещё в процедуру ReadBoxes надо дописать строку
Код: Выделить всё
Comb_Click


Так?

i'm pissed
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 194
Зарегистрирован: 23.10.2004 (Сб) 12:01
Откуда: irkutsk

Сообщение i'm pissed » 26.10.2004 (Вт) 18:56

вот щас я добавил в Form_Load

Код: Выделить всё
ReadBoxes Comb_Click("new.dat")


у меня вышла ошибка
by_pissed

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 26.10.2004 (Вт) 19:04

Нет, не так.

В Form_load:
ReadBoxes("new.dat")

А процедура ReadBoxes такая:
Код: Выделить всё
Private Sub ReadBoxes(file as string)
On error resume next
dim tmp as byte
Open app.path & "\" & file for binary as #1
get #1, 1, tmp
if tmp>0 then checkbox1.checked=true
get #1, 2, tmp
if tmp>0 then checkbox2.checked=true
close #1
Comb_Click
End Sub

i'm pissed
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 194
Зарегистрирован: 23.10.2004 (Сб) 12:01
Откуда: irkutsk

Сообщение i'm pissed » 26.10.2004 (Вт) 19:11

а вот теперь понятно ша попробую
by_pissed

i'm pissed
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 194
Зарегистрирован: 23.10.2004 (Сб) 12:01
Откуда: irkutsk

Сообщение i'm pissed » 26.10.2004 (Вт) 19:36

у меня checkbox это просто check т .е у меня есть check1 и check2.
и форма toppanel
вот я в нее ввожу вот полностью код из формы из toppanel
Код: Выделить всё
Private Declare Function SetWindowPos Lib "User32" ( _
                        ByVal hWnd As Long, _
                        ByVal hWndInsertAfter As Long, _
                        ByVal x As Long, _
                        ByVal Y As Long, _
                        ByVal cx As Long, _
                        ByVal cy As Long, _
                        ByVal wFlags As Long) As Long

Private Const HWND_TOPMOST = -1
Private Const SWP_NOMOVE = &H2
Private Const SWP_NOSIZE = &H1


Private Sub Form_Load()
ReadBoxes ("new.dat")

Call SetWindowPos(Me.hWnd, HWND_TOPMOST, 0, 0, 0, 0, _
                SWP_NOMOVE + SWP_NOSIZE)
With Comb
        .Clear
         .AddItem "Êíîïêè"
         .AddItem "Ðèñóíîê"
        .ListIndex = 0
      End With
End Sub



Private Sub Command1_Click()
           
      Select Case Comb.ListIndex
         Case 0   'êíîïêè
           If Check1.Value Then panel1.Show , frmBrowser Else panel1.Hide
           If Check2.Value Then panel3.Show , frmBrowser Else panel3.Hide
         Case 1   'ðèñóíîê
           If CheckBox1.Value Then panel.Show , frmBrowser Else panel.Hide
           If Check2.Value Then panel2.Show , frmBrowser Else panel2.Hide
      End Select
Unload Me
End Sub


Private Sub Form_Unload(Cancel As Integer)
SaveBoxes ("new.dat")


End Sub
Private Sub ReadBoxes(file As String)
On Error Resume Next
Dim tmp As Byte
Open App.Path & "\" & file For Binary As #1
Get #1, 1, tmp
If tmp > 0 Then Check1.Checked = True
Get #1, 2, tmp
If tmp > 0 Then Check2.Checked = True
Close #1
Comb_click
End Sub

Private Sub SaveBoxes(file As String)
On Error Resume Next
Open App.Path & "\" & file For Binary As #1
If Check1.Checked = True Then
Put #1, 1, 1
Else
Put #1, 1, 0
End If

If Check2.Checked = True Then
Put #1, 2, 1
Else
Put #1, 2, 0
End If
Close #1
End Sub

НЕ пашет plz помоги
by_pissed

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 27.10.2004 (Ср) 7:01

Select Case Comb.ListIndex
Case 0 'êíîïêè
If Check1.Value Then panel1.Show , frmBrowser Else panel1.Hide
If Check2.Value Then panel3.Show , frmBrowser Else panel3.Hide
Case 1 'ðèñóíîê
If CheckBox1.Value Then panel.Show , frmBrowser Else panel.Hide
If Check2.Value Then panel2.Show , frmBrowser Else panel2.Hide
End Select

i'm pissed
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 194
Зарегистрирован: 23.10.2004 (Сб) 12:01
Откуда: irkutsk

Сообщение i'm pissed » 27.10.2004 (Ср) 10:11

так то же пробовал не пашет
by_pissed

i'm pissed
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 194
Зарегистрирован: 23.10.2004 (Сб) 12:01
Откуда: irkutsk

Сообщение i'm pissed » 27.10.2004 (Ср) 10:14

выдает ошибку на
Код: Выделить всё
If Checkbox1.value Then
by_pissed

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 27.10.2004 (Ср) 10:17

Какую ошибку? Телепаты в отпуске (с) кто-то там...

i'm pissed
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 194
Зарегистрирован: 23.10.2004 (Сб) 12:01
Откуда: irkutsk

Сообщение i'm pissed » 27.10.2004 (Ср) 13:35

run-time error 424
object required
by_pissed

i'm pissed
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 194
Зарегистрирован: 23.10.2004 (Сб) 12:01
Откуда: irkutsk

Сообщение i'm pissed » 27.10.2004 (Ср) 13:56

Вот пример.
помогите
Вложения
на выклад.zip
(13.09 Кб) Скачиваний: 14
by_pissed

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 27.10.2004 (Ср) 14:24

Select Case Comb.ListIndex
Case 0 'êíîïêè
If Check1.Value Then panel1.Show , frmBrowser Else panel1.Hide
If Check2.Value Then panel3.Show , frmBrowser Else panel3.Hide
Case 1 'ðèñóíîê
If CheckBox1.Value Then panel.Show , frmBrowser Else panel.Hide
If Check2.Value Then panel2.Show , frmBrowser Else panel2.Hide
End Select
Замени CheckBox1.Value на Check1.Value

Sedge
Alternative Choice
Alternative Choice
Аватара пользователя
 
Сообщения: 1049
Зарегистрирован: 16.05.2002 (Чт) 18:23
Откуда: Somewhere-In-The-Net

Сообщение Sedge » 27.10.2004 (Ср) 14:26

У тебя на форме toppanel нет контролов CheckBox1 и CheckBox2. Есть Check1 и Check2. См. св-во name соответствующих элементов управления.

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 27.10.2004 (Ср) 14:37

Вот держи...
Издание второе и дополненное :D
Вложения
твой уже рабочий.zip
(14.47 Кб) Скачиваний: 17

i'm pissed
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 194
Зарегистрирован: 23.10.2004 (Сб) 12:01
Откуда: irkutsk

Сообщение i'm pissed » 27.10.2004 (Ср) 15:00

Алексей К. писал(а):Вот держи...
Издание второе и дополненное :D

Че-то не работает
by_pissed

i'm pissed
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 194
Зарегистрирован: 23.10.2004 (Сб) 12:01
Откуда: irkutsk

Сообщение i'm pissed » 27.10.2004 (Ср) 15:01

надо чтобы галочки в checkbox
сохранялись
by_pissed

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 28.10.2004 (Чт) 6:56

Когда на форме в режиме конфигуратора ты выбрал мышкой обьект, то на панели свойств обьекта в самом верху панели всегда показывается:
ИМЯ_ОБЬЕКТА ТИП_ОБЬЕКТА . Так вот, имя обьекта выделяется жирным шрифтом - и это имя в программном коде при работе с этим обьектом ты и должен указывать, т.е. (по твоему примеру) указывать check1.value а не chekbox1.value. (check1 -имя обьекта, chekbox - тип обьекта). Надо было во всех местах подправить это дело. А в первом, присланном варианте я тебе просто исправил ошибку при запуске. Вот держи вроде все работает как надо, галочки сохраняются.
Вложения
рабочий.zip
(14.15 Кб) Скачиваний: 15

След.

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

    TopList