powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / FetchRowStyle и True DBGrid
16 сообщений из 16, страница 1 из 1
FetchRowStyle и True DBGrid
    #35621862
Настенька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пишу обработчик на 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
FetchRowStyle и True DBGrid
    #35622248
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта затея изначально бредятина.

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

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

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

Это не считая того, что я в упор не вижу смысла проверять, перекрасилось что-то там в розовый или нет. Если уж на то пошло, проверять нужно условия, на основании которых происходит перекрашивание.
...
Рейтинг: 0 / 0
FetchRowStyle и True DBGrid
    #35622526
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неправильно составлено условие в обработчике события и неправильно ищется цвет извне.
Должно быть примерно так:
Код: 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
FetchRowStyle и True DBGrid
    #35622669
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я сомневаюсь, что у TrueDBGrid есть свойство DefaultView.
...
Рейтинг: 0 / 0
FetchRowStyle и True DBGrid
    #35622745
Настенька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо господа, что хоть отвечаете. вы правы - нет у tdbgrid defaultview.

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

table - это DataTable.

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

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

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

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


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