checked list1
10 отговора
0 прегледа
checked list1
Здравейте!
Как да изтрия запис, ако той не е чекнат( не е поставена отметка в чекбокса или след като е поставена е махната). С добавянето на запис нямам проблем
Private Sub List1_Click()
If List1.Selected(List1.ListIndex) = True Then
Form1.List1.AddItem Form2.List1.List(List1.ListIndex)
End If
Но ето в тази час на кода имам проблем а именно при запис, на който е поставена отметка и след това е премахната, същият запис да се изтрие. Благодаря
Приложението е на Visual Basic 6.0
If List1.Selected(List1.ListIndex) = False Then
form1.List1.RemoveItem (List1.ListIndex)
End If
End Sub
Как да изтрия запис, ако той не е чекнат( не е поставена отметка в чекбокса или след като е поставена е махната). С добавянето на запис нямам проблем
Private Sub List1_Click()
If List1.Selected(List1.ListIndex) = True Then
Form1.List1.AddItem Form2.List1.List(List1.ListIndex)
End If
Но ето в тази час на кода имам проблем а именно при запис, на който е поставена отметка и след това е премахната, същият запис да се изтрие. Благодаря
Приложението е на Visual Basic 6.0
If List1.Selected(List1.ListIndex) = False Then
form1.List1.RemoveItem (List1.ListIndex)
End If
End Sub
Редактирано от metamorphosis на
Re: checked list1
нещо не мога да разбера:
Ползваш CheckedListBox с VB 6.0?
Или имаш някакъв Listbox и отделно нейде из формата Checkbox?
Ползваш CheckedListBox с VB 6.0?
Или имаш някакъв Listbox и отделно нейде из формата Checkbox?
Re: checked list1
Във форм2 съм поставил лист1, като за лист1 използвам свойството в properies style - 1 checkbox. Когато кликна в лист1 , върху определен запис, той се отпечатва в лист1, който съм поставил във форм1. С това нямам проблем. Опитвам се чекнат запис в форм2 лист1, когато го отчекна (махна тикчето или отмеката) от него той да се изтрие от форм1 лист1.
Re: checked list1
нещо от сорта на:
Private Sub List1_ItemCheck(Item As Integer)
If Not List1.Selected(Item) Then
List1.RemoveItem (Item)
End If
End Sub
върши ли ти работа?
Private Sub List1_ItemCheck(Item As Integer)
If Not List1.Selected(Item) Then
List1.RemoveItem (Item)
End If
End Sub
върши ли ти работа?
Re: checked list1
Не, не се получава! Само ги добавя, без да изтрива тези, които не са отметнати.
Re: checked list1
Дамн...Като се замисля...
Я пак кажи какво трябва да стане:
Имаш 2 листа в 2 различни форми.
Първия лист и втория лист имат различни елементи. Предмониторното кликва на втория лист и кликнатия елемент се прехвърля в първия? Ако кликне 10 пъти - 10 пъти ли ще се прехвърля в първия (ще се добавя)?
Възможно ли е в даден момент в двата листа да има различен БРОЙ елементи? Т.е. елемента ИВАН в лист1 де е на първо място, а в лист2 да е на седмо?
После и на двете форми имаш лист1..За кой от двата лист1 говориш? Дай им различни имена (напр. ListForm1 и ListForm2) и инфото наново.
После ще се мисли за вариантите.
Я пак кажи какво трябва да стане:
Имаш 2 листа в 2 различни форми.
Първия лист и втория лист имат различни елементи. Предмониторното кликва на втория лист и кликнатия елемент се прехвърля в първия? Ако кликне 10 пъти - 10 пъти ли ще се прехвърля в първия (ще се добавя)?
Възможно ли е в даден момент в двата листа да има различен БРОЙ елементи? Т.е. елемента ИВАН в лист1 де е на първо място, а в лист2 да е на седмо?
После и на двете форми имаш лист1..За кой от двата лист1 говориш? Дай им различни имена (напр. ListForm1 и ListForm2) и инфото наново.
После ще се мисли за вариантите.
Редактирано от BatiGogo на
Re: checked list1
Така, всичките ти предположения са абсолютно верни! Сега за инфото: Имам две форми: form1.list1 и form2.list1. Листа във форма 2 е настроен в style 1- checkbox. Във form2.list1 се съдържат следните записи примерно: user1, user2, user3, user4 и user5. Чрез бутон извиквам form2.list1 и съответно при кликане на избран от мен запис, същия се прехвърля в form1.list1. Примерно: Извикал съм form2.list1 избирам си два записа съответно user3 и user5. Тези записи се прехвърлят по реда на тяхното избиране, тоест в form1.list1 се съдържат записите по реда на техния избор а именно user3 и user5. След като избраните записи съм ги прехвърлил разбирам, че по невнимание грешно съм прехвърлил във form1.list1 записа user3, тогава намирам въпросния във form2.list1 запис а именно user3, заставам на него и кликам в checkboxa и записът вече не е маркиран и същия се изтрива от form1.list1 тоест във form1.list1 е останал само запис user5.
Редактирано от metamorphosis на
Re: checked list1
Светна ми идеята. Значи трябва да проверяваш елемента от втората форма , дали форма, дали го има на листа в първата.
Аз бих направил следното:
1. на FORM2 да сложа още един List2 (ще потрябва по-нататък)
2.Задавам му свойството Visable=false (няма да бъде необходимо да се вижда, но за теста може да го включиш)
3. Отварям форм2 и цъквам на List1 и copy кода:
Сега като се замисля - тоя чекбокс, ако ти требе само за това прехвърляне - можеш още при прехвърлянето да проверяваш дали си го избрал вече и да го добаваш само ако го няма в първата форма....Ама ти си знаеш...
Ай пиши кво е станало.
Аз бих направил следното:
1. на FORM2 да сложа още един List2 (ще потрябва по-нататък)
2.Задавам му свойството Visable=false (няма да бъде необходимо да се вижда, но за теста може да го включиш)
3. Отварям форм2 и цъквам на List1 и copy кода:
Private Sub List1_Click() 'когато се кликва
Dim EL0 As String, I As Integer, EL1 As String 'дефиниции
If List1.Selected(List1.ListIndex) Then 'ако е чекнат
Form1.List1.AddItem Form2.List1.List(List1.ListIndex) 'ако е чекнат -да се прехвърли
Else 'в противен случай
EL0 = Form2.List1.List(List1.ListIndex) 'запомням текущия елемент
Form2.List2.Clear 'изтривам ако има нещо във временния лист
For I = 0 To Form1.List1.ListCount - 1 'цикъл по елементите на листа във Form1
EL1 = Form1.List1.List(I)
If EL1 <> EL0 Then
Form2.List2.AddItem EL1 'прехвърлят се във временния лист само тези елементи , които са различни от този дето не го щем
End If
Next
Form1.List1.Clear 'изтрива се лист1
For I = 0 To Form2.List2.ListCount - 1 'прехвърлят се всички елементи от временния лист обратно
Form1.List1.AddItem Form2.List2.List(I)
Next
End If
End Sub
Сега като се замисля - тоя чекбокс, ако ти требе само за това прехвърляне - можеш още при прехвърлянето да проверяваш дали си го избрал вече и да го добаваш само ако го няма в първата форма....Ама ти си знаеш...
Ай пиши кво е станало.
Редактирано от BatiGogo на
Re: checked list1
Пак заповядай.
Ако тоя чекбокс ти требе само за тва - да няма дублиране, по-добре да правиш проверка за дублиране още при прехвърлянето...Пестиш няколко неща:
1.лист2
2.възможност предмониторното да не види,че има дублаж и по този начин да реве,че програмчето е бъгаво и не ще да прави това дето го иска, а понякога......
Аз бих направил нещо такова:
Тогава няма да ми бъде необходимо List2 и style да е с чекване.
Ако тоя чекбокс ти требе само за тва - да няма дублиране, по-добре да правиш проверка за дублиране още при прехвърлянето...Пестиш няколко неща:
1.лист2
2.възможност предмониторното да не види,че има дублаж и по този начин да реве,че програмчето е бъгаво и не ще да прави това дето го иска, а понякога......
Аз бих направил нещо такова:
Private Sub List1_Click()
Dim OK As Boolean, EL As String, I As Integer
If List1.Selected(List1.ListIndex) Then
EL = List1.List(List1.ListIndex)
'ako vsi4ko e prehvurleno, nema smisul ot vrutkata
OK = Form1.List1.ListCount < List1.ListCount
I = 0
'cikul - ili vsi4ki sa razli4ni ili ima pone edno ravenstvo
While (I < Form1.List1.ListCount) And OK
'OK=false-ako sa ravni i izhodÎ
OK = Form1.List1.List(I) <> EL
I = I + 1
Wend
If OK Then 'ako nema ravenstvo
Form1.List1.AddItem EL
End If
End If
End Sub
Тогава няма да ми бъде необходимо List2 и style да е с чекване.
Редактирано от BatiGogo на
Re: checked list1
Благодаря! Отдавна не е имало толкоз отзивчив съфорумник!
А иначе, за предложените промени ще ги използвам.
Възникна проблемче при записването и четенето в и от ACCESS 2003, когато са повече от един запис в form1.list1. Но засега ще опитам сам да се справя.
А иначе, за предложените промени ще ги използвам.
Възникна проблемче при записването и четенето в и от ACCESS 2003, когато са повече от един запис в form1.list1. Но засега ще опитам сам да се справя.