Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 02.05.2010
Сообщений: 61
1

MSFlexGrid: Как удалить несколько строк?

26.03.2012, 17:17. Просмотров 2414. Ответов 7
Метки нет (Все метки)


Прошу прощения за возможно глупый вопрос. В гриде есть две строки, с одинаковым значением одного столбца. Строки идут подряд. Как сделать так, чтобы при удалении одной строки автоматом удалялась другая? Вне зависимости от того, находится она выше первой или ниже.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2012, 17:17
Ответы с готовыми решениями:

Добавить одновременно несколько строк из MSFlexGrid в лист XL
Доброго дня ребята! подскажите как из MSFlexGrid добавить одновременно несколько строк в лист XL....

Как из MSFlexGrid удалить одну строку?
Просто хотел спросить, как из MSFlexGrid удалить одну строку?

Как програмно 'очистить', удалить все записи из MSFlexGrid?
Как програмно 'очистить', удалить все записи из MSFlexGrid. И еще вопрос. При добавлении записи в...

Как в MSFlexGrid выделить и удалить строки, используя Shift и Ctrl?
Может кто подскажет как в MSFlexGrid выделить строки, используя Shift и Ctrl, а потом удалить их из...

7
5 / 5 / 3
Регистрация: 17.10.2007
Сообщений: 1,119
26.03.2012, 18:44 2
Как важно одинаковое значение одного столбца?
Как строки могут быть не подряд, если их две?

vladconn
0
5 / 5 / 3
Регистрация: 17.10.2007
Сообщений: 1,119
26.03.2012, 19:27 3
Eto primer. Podrazumevaem mnogo strok, odnu kolonku. Odnu fiksirovannuyu stroku i odnu fiksirovannuyu kolonku.

Stroki udaluaem najatiem klavishi DELETE.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Private Sub Form_Load()
    With MSFlexGrid1
        .TextMatrix(1, 1) = "ABC"
        .TextMatrix(2, 1) = "DEF"
        .TextMatrix(3, 1) = "DEF"
        .TextMatrix(4, 1) = "KLM"
        .TextMatrix(5, 1) = "KLM"
    End With
End Sub
 
Private Sub MSFlexGrid1_KeyDown(KeyCode As Integer, Shift As Integer)
    Dim intThisRow As Integer
    Dim intThatRow As Integer
    
    On Error GoTo MethodExit
    
    intThisRow = MSFlexGrid1.Row
 
    'Assume one fixed row!!!
    
    If intThisRow = MSFlexGrid1.Rows - 1 Then
        
        If MSFlexGrid1.TextMatrix(intThisRow, 1) = MSFlexGrid1.TextMatrix(intThisRow - 1, 1) Then
             intThatRow = intThisRow - 1
        End If
    Else
    
        If MSFlexGrid1.TextMatrix(intThisRow, 1) = MSFlexGrid1.TextMatrix(intThisRow + 1, 1) Then
            intThatRow = intThisRow + 1
        ElseIf MSFlexGrid1.TextMatrix(intThisRow, 1) = MSFlexGrid1.TextMatrix(intThisRow - 1, 1) Then
             intThatRow = intThisRow - 1
        End If
        
    End If
    
    If KeyCode = vbKeyDelete Then
        If intThatRow > 0 Then
            If intThatRow > intThisRow Then
                MSFlexGrid1.RemoveItem intThatRow
                MSFlexGrid1.RemoveItem intThisRow
            Else
                MSFlexGrid1.RemoveItem intThisRow
                MSFlexGrid1.RemoveItem intThatRow
            End If
        
        Else
            MSFlexGrid1.RemoveItem intThisRow
        End If
        
    End If
    
MethodExit:
    
    If Err.Number <> 0 Then
        If Err.Number = 30015 Then
            MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 1) = ""
            ' Repeat for all non fixed columns..
        Else
            MsgBox Err.Description
        End If
    End If
End Sub
0
0 / 0 / 0
Регистрация: 02.05.2010
Сообщений: 61
29.03.2012, 15:10  [ТС] 4
Благодарю! Но если в гриде только две строки, то последняя не удаляется. Удаляется только первая.
0
5 / 5 / 3
Регистрация: 17.10.2007
Сообщений: 1,119
29.03.2012, 16:48 5
holmik,

Цитата Сообщение от holmik
Благодарю! Но если в гриде только две строки, то последняя не удаляется. Удаляется только первая.

Пожалуйста. Ваше второе утверждение не подтверждается тестированием.

vladconn
0
0 / 0 / 0
Регистрация: 02.05.2010
Сообщений: 61
01.04.2012, 11:16  [ТС] 6
Увы, подтверждается. Если я удаляю, допустим, ABC, потом DEF, остаются две строки KLM. И если я пытаюсь удалить любую из них, одна удаляется, а другая просто очищается. А мне нужно, чтобы строчка была именно удалена.
0
5 / 5 / 3
Регистрация: 17.10.2007
Сообщений: 1,119
01.04.2012, 17:53 7
holmik,

A ты поставь грид с одной одинешенькой фиксированной строкой и все поймешь и все увидишь там.

vladconn
0
5 / 5 / 3
Регистрация: 17.10.2007
Сообщений: 1,119
01.04.2012, 18:18 8
Holmik,

OK, пришлось обмануть VB SP5:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Private Sub MSFlexGrid1_KeyDown(KeyCode As Integer, Shift As Integer)
    Dim intThisRow As Integer
    Dim intThatRow As Integer
    
    On Error GoTo MethodExit
    
    intThisRow = MSFlexGrid1.Row
    
    'Assume one fixed row!!!
    
    If MSFlexGrid1.Rows = 1 Then Exit Sub
    
    If intThisRow = MSFlexGrid1.Rows - 1 Then
    
        If MSFlexGrid1.TextMatrix(intThisRow, 1) = MSFlexGrid1.TextMatrix(intThisRow - 1, 1) Then
            intThatRow = intThisRow - 1
        End If
    Else
        If MSFlexGrid1.TextMatrix(intThisRow, 1) = MSFlexGrid1.TextMatrix(intThisRow + 1, 1) Then
            intThatRow = intThisRow + 1
        ElseIf MSFlexGrid1.TextMatrix(intThisRow, 1) = MSFlexGrid1.TextMatrix(intThisRow - 1, 1) Then
           intThatRow = intThisRow - 1
        End If
    End If
    
    If KeyCode = vbKeyDelete Then
        If intThatRow > 0 Then
            If intThatRow > intThisRow Then
                MSFlexGrid1.RemoveItem intThatRow
                MSFlexGrid1.RemoveItem intThisRow
            Else
                MSFlexGrid1.RemoveItem intThisRow
                MSFlexGrid1.RemoveItem intThatRow
            End If
        
        Else
            MSFlexGrid1.RemoveItem intThisRow
        End If
    End If
    
MethodExit:
    
    If Err.Number <> 0 Then
        If Err.Number = 30015 Then
            Err.Clear
            MSFlexGrid1.Rows = MSFlexGrid1.FixedRows
         Else
            MsgBox Err.Description
        End If
    
    End If
 
End Sub
vladconn
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.04.2012, 18:18

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Как одним махом удалить несколько строк?
Есть список из 2500 (примерно) строк. Некоторые строки окрашены определенным цветом, вот их и нужно...

Как программно удалить несколько строк на листе excel, связанных между собой определенным условием?
Как программно удалить несколько строк на листе excel связанных между собой определенным условием?

Как добавить, обновить и удалить несколько строк в DataTable?
Как можно сделать добавление не одной строки в DataTable, а сразу нескольких, если конечно такое...

Удалить из файла несколько строк
есть форма, примерно такого вида... &lt;form action=&quot;action.php&quot; method=&quot;post&quot;&gt; &lt;input...

Удалить несколько строк в файле
Dim SB As New System.Text.StringBuilder Dim S() As String =...

Удалить несколько строк из мемо
Вот такой код в memo текст 1 &lt;a href=&quot;...&lt;/a&gt; текст 2 &lt;a href=&quot;...&lt;/a&gt; текст 3 &lt;a...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.