Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / FetchRowStyle и True DBGrid / 16 сообщений из 16, страница 1 из 1
29.10.2008, 08:37
    #35621862
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FetchRowStyle и True DBGrid
пишу обработчик на FetchRowStyle (писала на форум vb.net, но там никто не ответил. может, здесь помогут). код на vb.net, но суть остается сутью.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 Private Sub TDBgrid1_FetchRowStyle(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.FetchRowStyleEventArgs) Handles TDBgrid1.FetchRowStyle
        If (TDBgrid1.Columns("ad1").CellText(e.Row).ToString = "" And TDBgrid1.Columns("ad2").CellText(e.Row).ToString = "") Then
            e.CellStyle.BackColor = Color.Pink
            e.CellStyle.BackColor2 = Color.Pink
        Else
            e.CellStyle.BackColor = Color.FromArgb( 255 ,  255 ,  192 )
            e.CellStyle.BackColor2 = Color.FromArgb( 192 ,  192 ,  255 )
        End If
    End Sub

все работает супер, выделяет нужные строки розовым.

далее хочу проверить в цикле, какие именно строки в гриде имеют этот розовый цвет. делаю так:


Код: plaintext
1.
2.
3.
4.
 For i As Integer =  0  To TDBgrid1.RowCount -  1 
   If TDBgrid1.Splits( 0 ).DisplayColumns( 0 ).Style.BackColor= Color.Pink Then
       msgbox "Розовый цвет"
   End If
Next

в итоге он выдает, что ни у одной строки нет розового цвета, хотя я 100 % вижу, что есть. скорей всего неправильно обращаюсь вот в этой строке:


Код: plaintext
TDBgrid1.Splits( 0 ).DisplayColumns( 0 ).Style.BackColor

Вопрос: как правильно проверить те строки, которые подсвечены в событии FetchRowStyle. Заранее спасибо.
...
Рейтинг: 0 / 0
29.10.2008, 11:04
    #35622248
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FetchRowStyle и True DBGrid
Эта затея изначально бредятина.

Правильно — никак. Неправильно — пробежаться по рекордсету, чтобы FetchRowStyle сгенерилось опять и еще раз проверить те же самые условия.

DisplayColumns(0).Style русским английским языком недвусмысленно говорит, что это стиль колонки .

Событие FetchRowStyle было придумано как раз из-за невозможности обращения к конкретной строке потому что в концепции БД нет строк, а есть записи. Равноправные, ненумерованные. Поэтому словосочетание "какие именно" к ним не применимо. Есть только текущая и все остальные.

Это не считая того, что я в упор не вижу смысла проверять, перекрасилось что-то там в розовый или нет. Если уж на то пошло, проверять нужно условия, на основании которых происходит перекрашивание.
...
Рейтинг: 0 / 0
29.10.2008, 12:18
    #35622526
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FetchRowStyle и True DBGrid
Неправильно составлено условие в обработчике события и неправильно ищется цвет извне.
Должно быть примерно так:
Код: plaintext
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.
   'Структура для возврата значения из функции
   Private Structure RowColors
      Public BackColor As Color
      Public BackColor2 As Color
   End Structure

   'Отдельная функция для определения цвета окраски строки
   Private Function GetRowColors(ByVal RowIndex As Integer) As RowColors
      Dim clrs As New RowColors
      If table.DefaultView(RowIndex)("ShipVia") =  3  Then
         clrs.BackColor = Color.Pink
         clrs.BackColor2 = Color.Pink
      Else
         clrs.BackColor = Color.FromArgb( 255 ,  255 ,  192 )
         clrs.BackColor2 = Color.FromArgb( 192 ,  192 ,  255 )
      End If
      Return clrs
   End Function

   Private Sub C1TrueDBGrid1_FetchRowStyle(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.FetchRowStyleEventArgs) _
            Handles C1TrueDBGrid1.FetchRowStyle
      With GetRowColors(e.Row)
         e.CellStyle.BackColor = .BackColor
         e.CellStyle.BackColor2 = .BackColor2
      End With
   End Sub
Сколько уже сказано про то что надо разбивать код на маленькие процедуры! Видимо лучше один раз увидеть (или много раз).
...
Рейтинг: 0 / 0
29.10.2008, 12:56
    #35622669
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FetchRowStyle и True DBGrid
Что-то я сомневаюсь, что у TrueDBGrid есть свойство DefaultView.
...
Рейтинг: 0 / 0
29.10.2008, 13:16
    #35622745
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FetchRowStyle и True DBGrid
Спасибо господа, что хоть отвечаете. вы правы - нет у tdbgrid defaultview.

а что, раньше этого никто не делал? я первая буду?
...
Рейтинг: 0 / 0
29.10.2008, 13:32
    #35622796
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FetchRowStyle и True DBGrid
AntonariyЧто-то я сомневаюсь, что у TrueDBGrid есть свойство DefaultView.Как ни странно есть. Т.е. (это неправильная фраза) именно DefaultView True DBGrid и использует. Правда у меня совсем старенький грид - еще из Framework-1.
И на всякий случай: всегда юзаю BindingSource, если вы не юзаете его, результаты могут различаться.
...
Рейтинг: 0 / 0
29.10.2008, 13:35
    #35622809
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FetchRowStyle и True DBGrid
ps:
На всякий случай, здесь:
table.DefaultView(RowIndex)("ShipVia")

table - это DataTable.

А не грид.
...
Рейтинг: 0 / 0
30.10.2008, 06:14
    #35624414
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FetchRowStyle и True DBGrid
ну а можно по теме вопроса насчет грида. вы что-то отвлеклись.
...
Рейтинг: 0 / 0
31.10.2008, 12:33
    #35627682
Настенька
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FetchRowStyle и True DBGrid
я так понимаю, ответов больше на мой вопрос не будет.
...
Рейтинг: 0 / 0
31.10.2008, 13:45
    #35627953
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FetchRowStyle и True DBGrid
Выключить утюг (1), выйти из квартиры, вернуться (2), чтобы проверить выключен ли утюг (3).

В вашем случае — выполнить условие (1), закончить выполнение (2), проверить, выполнилось ли условие (3). Чисто женская логика, разработчики TrueDBGrid такого явно не ожидали.

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

(По-хорошему нужно проверять поля ad1 и ad2 записей связанного с гридом рекордсета.)
...
Рейтинг: 0 / 0
31.10.2008, 13:52
    #35627980
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FetchRowStyle и True DBGrid
Саму таблицу не судьба проверить?
Пробежаться по строкам - for each row As DataRow in table.Rows
...
Рейтинг: 0 / 0
31.10.2008, 14:50
    #35628183
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FetchRowStyle и True DBGrid
Worobjoff
DataTable это интерфейс что ли?
...
Рейтинг: 0 / 0
31.10.2008, 17:11
    #35628786
Armani
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FetchRowStyle и True DBGrid
у Worobjoff truedbgrid для net по ходу дела
...
Рейтинг: 0 / 0
31.10.2008, 18:02
    #35629007
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FetchRowStyle и True DBGrid
По ходу дела мы именно его и обсуждаем.
...
Рейтинг: 0 / 0
19.01.2009, 02:27
    #35763759
PR111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FetchRowStyle и True DBGrid
Смотрю в книгу вижу фигу,ребята я уже перепробовал столько кодов ничего не получается,может кто-то пример выложит где цвет ячейки закрашивается от его значения.Спасибо!
...
Рейтинг: 0 / 0
21.01.2009, 13:00
    #35769162
PR111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FetchRowStyle и True DBGrid
Люди,что никто подскахзть не может?
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / FetchRowStyle и True DBGrid / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]