21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663

Подсветка TStringGrid по набору условий

07.01.2015, 17:00. Показов 7701. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер! Вопрос про StringGrid.
Есть StringGrid, есть информация, которая по тому или иному событию записывается в строку этого StringGrid.
События разные (скажем 4 вида) Вообщем то одно из этих событий реализовано. Но хотелось бы при этом событие окрашивать всю строку в нужный цвет(красный например). А лучше, чтобы плюс например еще рамка была. Но не критично.
Добился окрашивания только одной ячейки.
Обработчик DrawCell

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow,
          TRect &Rect, TGridDrawState State)
{
     AnsiString Strr;
             Strr= StringGrid1->Cells[ACol][ARow];
         if(Form1->ALARM_Red)
    {
        if(
         ((strstr(Strr.c_str(), "ALARM" ))!=0)||
         ((strstr(Strr.c_str(), "ТРЕВ"))!=0)
        )
        {
                  Strr= StringGrid1->Cells[ACol][ARow];
                  StringGrid1->Canvas->Brush->Color = clCream   ;// clWhite;
                  StringGrid1->Canvas->Font->Color  = clRed;// clBlack;
 
              StringGrid1->Canvas->FillRect(Rect);
              StringGrid1->Canvas->TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Strr);
        }
    }
}
Возможно ли решение этой проблемы? Спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.01.2015, 17:00
Ответы с готовыми решениями:

Открытие картинки по набору условий из StringGrid
Добрый день! Есть код:AnsiString Strr,Strr1; Strr= StringGrid1->Cells; Strr1= StringGrid1->Cells; if( ((strstr(Strr.c_str(),...

Удаление строк по набору условий
Доброго дня.... Как с помощью VBA удалить строки из таблицы XLS по условию: (столбец А = 10 и столбец B = 20 и столбец W = 30) ...

Существуют ли множества, удовлетворяющие набору условий? 2
1.2Существуют множества А В Х такие что выполняется набор условий ? P\N=N∩P=∅ P∩E≠∅

47
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
12.01.2015, 22:15  [ТС]
Студворк — интернет-сервис помощи студентам
Друзья, прошу помощи! При перерисовке грида с помощью Canvas происходят аццкие глюки! Нельзя ли перерисовать только строку, а не весь грид? Спасибо!
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33462 / 21561 / 8249
Регистрация: 22.10.2011
Сообщений: 37,017
Записей в блоге: 12
13.01.2015, 00:35
Можно:
C++
1
2
3
4
5
6
7
8
9
10
class THackGrid : public TStringGrid
{
public:
  using TStringGrid::InvalidateRow;
};
 
 
// там, где требуется перерисовать строку:
    THackGrid *grid = static_cast<THackGrid*>(StringGrid1);
    grid->InvalidateRow(row); // перерисовка только одной строки, с номером row
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
13.01.2015, 08:26  [ТС]
Спасибо!
Но, пишу
C++
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
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow,
          TRect &Rect, TGridDrawState State)
    { class THackGrid : public TStringGrid
{
public:
  using TStringGrid::InvalidateRow;
};
 
TStringGrid *grid = static_cast<TStringGrid*>(Sender);
    String s = grid->Cells[ACol][ARow];
    if(grid->Objects[0][ARow])
        {
            TColor color0 = reinterpret_cast<TColor>(grid->Objects[0][ARow]);
            grid->Canvas->Brush->Color = color0; // clWhite;
            //grid->Canvas->Font->Color  = clBlue; // clBlack;
            grid->Canvas->FillRect(Rect);
            grid->Canvas->TextRect(Rect, Rect.Left + 2, Rect.Top + 2, s);
        }
    if(grid->Objects[1][ARow])
        {
            TColor color1 = reinterpret_cast<TColor>(grid->Objects[1][ARow]);
            //grid->Canvas->Brush->Color = clBlue; // clWhite;
            grid->Canvas->Font->Color  = color1; // clBlack;
            grid->Canvas->FillRect(Rect);
            grid->Canvas->TextRect(Rect, Rect.Left + 2, Rect.Top + 2, s);
        }
    AnsiString Strr;
    Strr= StringGrid1->Cells[ACol][ARow];
            StringGrid1->Objects[0][ARow] = (TObject*)clRed;
            StringGrid1->Objects[1][ARow] = (TObject*)clWhite;
                   THackGrid *grid = static_cast<THackGrid*>(StringGrid1);
               grid->Invalidate(ARow);
            //StringGrid1->Invalidate();
        }
ругается
[BCC32 Error]: E2227 Extra parameter in call to _fastcall TWinControl::Invalidate()
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33462 / 21561 / 8249
Регистрация: 22.10.2011
Сообщений: 37,017
Записей в блоге: 12
13.01.2015, 11:41
Не-не-не... Во-первых, класс THackGrid должен быть описан не внутри обработчика, а выше него по тексту, желательно - вообще в H-файле. Во-вторых, кто же в обработчике OnDrawCell вызывает Invalidate<что_угодно>? У тебя же будет бесконечная рекурсия: вызов Invalidate() приведет к перерисовке грида (или его части), что в свою очередь приводит к вызову OnDrawCell() для этой части грида, а там - опять Invalidate(), и пошло-поехало... Invalidate() надо вызывать где-то в другом месте, но ни в коем случае нельзя его вызывать при отрисовке контрола.

Чего добиться-то хочешь? Расскажи нормально, по-русски, без вот этих не пойми что делающих кодов. Зачем начиная с 27 строки пытаться окрасить ВСЕ ячейки грида цветами "красно/белый"? Смысл этого от меня ускользает. Зачем тогда предыдущие строки? Сразу рисуй всё красно/белым, и всё, вообще ничего делать невалидным не нужно.
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
13.01.2015, 14:56  [ТС]
Я понял. Красно-белое - это для примера. Без условий. Есть пять событий. Они все приходят в Основной Грид. Потом из этого Основного Грида по совпадению с уникальным словом в каждом из событий, строка копируется в строку одного из пяти Дополнительных Гридов. И есть шесть Кнопок. Первая показыват Основной Грид, где все события и еще пять Кнопок, каждая из которых показывает соответствующий Дополнительный Грид с тем или иным событием. Основная задача состоит в том, чтобы в Основном Гриде красить фон и текст строки в зависимости от приходящего туда события (пять событий - пять вариантов раскраски). Все работает, но когда Основной Грид перерисовывается (изменение цвета и фона строки в зависимости от условий), все происходит задумчиво и с глюками, часть строки может не покрасится. Ну и все такое. Вот я и подумал, можно ли перерисовывать не весь Основной Грид, а только текущую строку события. По Дополнительным Гридам есть два варианта. Или сразу настроить цвет фона, шрифта в каждом, ибо события в них будут сгруппированы, или вариант, как и с Основным Гридом. Хотелось бы конечно второй вариант, но не получается. Строки из Основного Грида в Дополнительные Гриды копируются, но раскрашиваться способом окраски строк Основного Грида не хотят.

Вы написали, что Invalidate() надо вызывать где-то в другом месте. Где его можно вызвать?
Спасибо!

Добавлено через 6 минут
Все это для мониторинга внешней системы.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33462 / 21561 / 8249
Регистрация: 22.10.2011
Сообщений: 37,017
Записей в блоге: 12
13.01.2015, 15:01
Цитата Сообщение от Sergey_03 Посмотреть сообщение
Где его можно вызвать?
Я твержу об этом неоднократно на протяжении всей этой темы: там, где изменяется содержимое ячеек. Так заметно? Больше повторять не буду.

Все очень просто: нужно сделать дополнительный метод формы, который будет заполнять грид. То есть, где бы не изменялось его содержимое - надо вызывать этот метод, чтобы именно он изменял содержимое ячеек, проверял их, назначал цвета, и перерисовывал нужные фрагменты грида. Это снимет подавляющее большинство вопросов.
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
13.01.2015, 16:47  [ТС]
То есть, если я правильно понял на счет Invalidate(), нужно найти обработчик, в котором те или иные данные отправляются в Основной Грид и после каждой отправки тех или иных данных StringGrid1->.............
писать StringGrid1->Invalidate(); ?
Но как быть с Дополнительными гридами? Их заполнение происходит в StringGrid1DrawCell из строк Основного Грида.

Было бы очень здорово, если бы по поводу "Все очень просто: нужно сделать дополнительный метод формы, который будет заполнять грид." по подробнее, с примером кода. Естественно не в ущерб Вашему времени и терпению.
Спасибо!
Эти знания бесценны.

Добавлено через 57 минут
Перепутал там немного..
при

C++
1
2
THackGrid *grid = static_cast<THackGrid*>(StringGrid1);
StringGrid1->InvalidateRow(ARow);
ругается
[BCC32 Error] E2247 '_fastcall TCustomGrid::InvalidateRow(int)' is not accessible
0
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
14.01.2015, 23:21  [ТС]
Друзья, очень нужна помощь! Распишите , плиз, как создать этот дополнительный метод формы, который будет заполнять грид (перекрашивать строки и текст в них) и куда чего пихать. По каким оработчикам. Голову сломал,никак не получается.

Добавлено через 2 часа 22 минуты
Цитата Сообщение от volvo Посмотреть сообщение
Я твержу об этом неоднократно на протяжении всей этой темы: там, где изменяется содержимое ячеек.
Но содержимое изменяется в

Цитата Сообщение от Sergey_03 Посмотреть сообщение
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State)
Цитата Сообщение от volvo Посмотреть сообщение
кто же в обработчике OnDrawCell вызывает Invalidate<что_угодно>?
тогда где вызывать Invalidate?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33462 / 21561 / 8249
Регистрация: 22.10.2011
Сообщений: 37,017
Записей в блоге: 12
14.01.2015, 23:45
Лучший ответ Сообщение было отмечено Sergey_03 как решение

Решение

Цитата Сообщение от Sergey_03 Посмотреть сообщение
Но содержимое изменяется в StringGrid1DrawCell
Содержимое ячейки (то есть, хранящийся в ячейке текст) у тебя там не изменяется, сказки рассказывать не надо. У тебя изменяется отображение, расцветка, все, что угодно, но только не содержимое. А вот там, где меняется содержимое (ТЕКСТ, ДАННЫЕ, я не знаю, как тебе объяснять по-другому, ИНФОРМАЦИЯ, хранящаяся в ячейке. То, что ты потом сравниваешь с "ТРЕВОГА"/"ALARM"), и надо перерисовать грид.
1
14.01.2015, 23:59

Не по теме:

volvo, удивляюсь терпению. Это праздник какой-то.:)

0
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
15.01.2015, 08:55  [ТС]
Проблема в том, что строки формируются в Основном Гриде из ячеек, в которые приходит информация из разных мест. Я подумал, может создать Дополнительный Грид, копировать в него из Основного Грида строки целиком, а потом уже раскрашивать Дополнительный Грид? Если так реально, подскажите плиз, в каком обработчике это нужно делать, с учетом присутствия int ACol, int ARow
Спасибо!

Добавлено через 1 час 3 минуты
В смысле потом из этого Дополнительного Грида раскидать строки по гридам, в зависимости от событий и уже их раскрашивать. Возможно я просто чего то не понимаю(

Добавлено через 7 часов 35 минут
Вообщем сижу, туплю уже которую ночь...Объясните по простому один раз.
Если есть код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
oid __fastcall TForm26::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow,
          TRect &Rect, TGridDrawState State)
   {
    TStringGrid *grid = static_cast<TStringGrid*>(Sender);
    String s = grid->Cells[ACol][ARow];
    if(grid->Objects[0][ARow])
        {
            TColor color0 = reinterpret_cast<TColor>(grid->Objects[0][ARow]);
            grid->Canvas->Brush->Color = color0;
            grid->Canvas->FillRect(Rect);
            grid->Canvas->TextRect(Rect, Rect.Left + 2, Rect.Top + 2, s);
        }
 
    AnsiString Strr;
    Strr= StringGrid1->Cells[ACol][ARow];
    if(StringGrid1->Rows[i]->Text.Pos("Sil"))
 
        {
            StringGrid1->Objects[0][ARow] = (TObject*)clRed;
            StringGrid1->Invalidate();
        }
}
Что в нем не правильно и в какие обработчики что куда ставить..Все когдато учились. Спасибо!
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
15.01.2015, 23:23
Цитата Сообщение от Sergey_03 Посмотреть сообщение
Объясните по простому один раз.
Рискну.

Вот смотри, есть у меня грид и есть у меня обработчик его события OnDrawCell, в котором написано:
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::sgrid_1DrawCell( TObject * Sender, int ACol, int ARow, TRect & Rect, TGridDrawState State )
{
    TStringGrid * grid = static_cast < TStringGrid * > ( Sender );
 
    if ( grid->Cells[ ACol ][ ARow ].Pos( "mark" ) )
    {
        grid->Canvas->Brush->Color = clLime + ACol * clLime * 30;
        grid->Canvas->FillRect( Rect );
        grid->Canvas->TextRect( Rect, Rect.Left + 2, Rect.Top + 2, grid->Cells[ ACol ][ ARow ] );
    }
}
Но грид пустой, в нем нет ничего. Теперь я запускаю программу, тыкаю ячейку и пишу mark50. Ячейка покрасилась, я пускаю пузыри от счастья. Это я условно выполнил действие "ручной ввод строк в таблицу".

Но мне лениво каждый раз писать в ячейки, чтобы проверить какой-нибудь новый функционал раскраски. Поэтому я кидаю на форму кнопку и пишу в обработчике клика на ней:
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::btn_1Click( TObject * Sender )
{
    sgrid_1->Enabled = false;
    for ( int i( 0 ); i < sgrid_1->ColCount; ++i )
    {
        sgrid_1->Cells[ i ][ 0 ] = "mark" + IntToStr( i );
    }
}
Покрасилось сразу несколько ячеек. Вот это я условно выполнил действие "программный ввод данных в грид", количество пузырей удвоилось.))

Теперь ты покажи, где и как выполняешь действия, подобные описанным. Причем, подробно.
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
16.01.2015, 09:03  [ТС]
Доброе утро! Сидел я вчера, сидел, и вот что высидел. Насколько я понял, проблема в обработчиках - что и в какие писать. После того, как в
C++
1
2
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow,
          TRect &Rect, TGridDrawState State)
написал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
TStringGrid *grid1 = static_cast<TStringGrid*>(Sender);
    String s1 = grid1->Cells[ACol][ARow];
    if(grid1->Objects[0][ARow])
        {
            TColor color0 = reinterpret_cast<TColor>(grid1->Objects[0][ARow]);
            grid1->Canvas->Brush->Color = color0;
            grid1->Canvas->FillRect(Rect);
            grid1->Canvas->TextRect(Rect, Rect.Left + 2, Rect.Top + 2, s1);
        }
        AnsiString Strr;
    Strr= StringGrid1->Cells[ACol][ARow];
    if((strstr(Strr.c_str(), "ALARM" ))!=0)
        {
            StringGrid1->Objects[0][ARow] = (TObject*)clRed;
        }
 
    Strr= StringGrid1->Cells[ACol][ARow];
    if((strstr(Strr.c_str(), "BATTERY" ))!=0)
        {
            StringGrid1->Objects[0][ARow] = (TObject*)0xDA70D6;
        }
и вставил
C++
1
StringGrid1->Invalidate();
в
C++
1
void __fastcall TForm1::Timer1Timer(TObject *Sender)
, все заработало, как надо.
Но моя проблема - непонимание обработчиков.
у меня есть переменные ACol и ARow и если я вставлю событие
C++
1
2
3
4
5
6
7
8
9
10
11
12
AnsiString Strr;
    Strr= StringGrid1->Cells[ACol][ARow];
    if((strstr(Strr.c_str(), "ALARM" ))!=0)
        {
            StringGrid1->Objects[0][ARow] = (TObject*)clRed;
        }
 
    Strr= StringGrid1->Cells[ACol][ARow];
    if((strstr(Strr.c_str(), "BATTERY" ))!=0)
        {
            StringGrid1->Objects[0][ARow] = (TObject*)0xDA70D6;
        }
в обработчик, который не имеет таких пременных в возврате, у меня будет ошибка.
Также я вставляю в
C++
1
void __fastcall TForm1::Timer1Timer(TObject *Sender)
копирование из Основного Грида в Дополнительный Грид строк по условию:
C++
1
2
3
4
5
6
7
8
9
10
int j;
j = StringGrid7->FixedRows;
    for(int i = StringGrid1->FixedRows; i < StringGrid1->RowCount; i++)
    {
        if(StringGrid1->Rows[i]->Text.Pos("Silence"))
        {
            StringGrid6->Rows[j++]->CommaText = StringGrid1->Rows[i]->CommaText;
        }
    }
    StringGrid7->RowCount = j;
и все копируется, но при попытке перекрасить в Дополнительном Гриде строку , например
C++
1
2
3
4
5
if((strstr(Strr.c_str(), "Silence" ))!=0)
        {
            StringGrid1->Objects[0][ARow] = (TObject*)0xDA70D6;
            StringGrid6->Objects[0][ARow] = (TObject*)0xDA70D6;
        }
, строка перекрашивается, но почему то мерцает.
Собственно непонятно, в какой обработчик, который должен возвращать ACol и ARow, писать
C++
1
2
3
4
5
6
7
8
9
10
11
12
AnsiString Strr;
    Strr= StringGrid1->Cells[ACol][ARow];
    if((strstr(Strr.c_str(), "ALARM" ))!=0)
        {
            StringGrid1->Objects[0][ARow] = (TObject*)clRed;
        }
 
    Strr= StringGrid1->Cells[ACol][ARow];
    if((strstr(Strr.c_str(), "BATTERY" ))!=0)
        {
            StringGrid1->Objects[0][ARow] = (TObject*)0xDA70D6;
        }
Например я формирую кнопку, но как мне к ней применить это событие?
То, что я это все слил в таймер - работает, но чувствую, что это не правильно.
И еще вопрос не совсем по теме. Есть возможность в StringGrid программно изменить фон?
В инспекторе есть такая функция, но нужного цвета нет в списке.
Большое спасибо!
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
16.01.2015, 09:38
Вы можете сделать переменные ACol и ARow глобальными. Вернее сделать глобальные переменные которые будут брать значения ACol и ARow и использовать их у своем юните в любом месте.
Я когда то писал нечто подобное и мне пригодилась такая связка

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol,
      int ARow, bool &CanSelect)
{
Col=ACol; //Говорим глобальной переменной о выделеном столбце
Row=ARow; //и о выделенной строке
//Если выделили 5 столбец "Color" то запрещаем редактировать СтрингГрид
if (ACol!=5) {
StringGrid1->Options = StringGrid1->Options << goEditing;
}
else { //Или разрешаем в противном случае
StringGrid1->Options = StringGrid1->Options >> goEditing;
}
}
где Col и Row глобальные переменные.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33462 / 21561 / 8249
Регистрация: 22.10.2011
Сообщений: 37,017
Записей в блоге: 12
16.01.2015, 10:23
Цитата Сообщение от Sergey_03 Посмотреть сообщение
Сидел я вчера, сидел, и вот что высидел.
ТЫ не ответил на поставленные выше вопросы, где заполняется грид - по прежнему неясно. Ты все время талдычишь об одном и том же, о чем тебя не спрашивали: как хорошо ты научился определять, есть ли в ячейке слова ALARM или BATTERY. А о том, как эти слова туда попали, и почему там, где они попали в грид, нельзя было остальным ячейкам этой строки назначить нужный цвет, и вызвать Invalidate - по прежнему молчишь. И создается очень стойкое впечатление, что ты просто издеваешься (или троллишь). А программа программа у тебя превратилась в лапшеобразный набор костылей. Я в таком участия принимать не заинтересован, от темы отписываюсь, скучно. Либо тролль, либо вообще ничего не понимающий человек...

Не по теме:

А вначале, кстати, было довольно неожиданно. Интересные вопросы на фоне общей дебильности ("сложить два числа", "отсортировать массив", "как перевести с Паскаля На С++"). А скатилось - туда же...

2
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
16.01.2015, 11:33  [ТС]
В столбцы Основного Грида данные попадают из разных обработчиков. Выше я писал:
То есть, если я правильно понял на счет Invalidate(), нужно найти обработчик, в котором те или иные данные (в моем случае No Battery или BATTERY, не важно)отправляются в Основной Грид и после каждой отправки тех или иных данных StringGrid1->.............
писать StringGrid1->Invalidate(); ?
, но мне не сказали, так это, или нет.

Вот код из программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
AnsiString   sboostNo_Battery ="No Battery"     ;
if(bit_indd == 0x80)
                        {
                           aOut = sboostNo_Battery;  indev=1;
                        }
if(indev !=0)
                      {
                        StringGrid1->RowCount++;
        icol00 =   StringGrid1->RowCount-1;
        StringGrid1->Rows[icol00]->Clear();
                        fputs( aOut.c_str(),f_mon );fputs( "  "  ,f_mon );
                        StringGrid1->Cells[colNumb][i+1] = aOut;  aOut="";uOut="";
Этот код и разных мест. Если я правильно понимаю, именно тут именно эти данные (No_Battery) пишутся в Основной Грид. Тут и надо скроку красить? И вызвать Invalidate()
Очень большая программа, не на одном юните. Тролить я не собираюсь. Спасибо.

Добавлено через 7 минут
и как туда вставить
C++
1
2
3
4
5
6
AnsiString Strr;
    Strr= StringGrid1->Cells[ACol][ARow];
    if((strstr(Strr.c_str(), "BATTERY" ))!=0)
        {
            StringGrid1->Objects[0][ARow] = (TObject*)clRed;
        }
, если в данном обработчике нет возврата ACol, ARow
0
 Аватар для demon_7
260 / 192 / 60
Регистрация: 12.05.2013
Сообщений: 857
16.01.2015, 11:35
Цитата Сообщение от Sergey_03 Посмотреть сообщение
и как туда вставить
я Вам подсказал уже, возможный вариант решения.
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
16.01.2015, 11:44  [ТС]
Спасибо большое. Попробую.
0
16.01.2015, 16:58

Не по теме:

Опять издевательства над StringGrid %-)

0
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
17.01.2015, 16:07  [ТС]
Все! Я полностью разобрался с этой проблемой. Всем огромное спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.01.2015, 16:07

почему на виндоус икспи на нетбуке асер д255е экран тусклый(подсветка),а на виндоус 7 подсветка замечательная(очень яркая)
почему на виндоус икспи на нетбуке асер д255е экран тусклый(подсветка),а на виндоус 7 подсветка замечательная(очень яркая),что мне сделать...

Подсветка строк содержащих одинаковые значения полей или подсветка полей с одинаковым значением в таблице
Подскажите, возможна ли реализация в форме такой функции: При наведении курсора на поле высвечиваются по всей таблице поля имеющие такое же...

"Мало начальных условий" при решении системы из 7 ДУ, хотя граничных условий 8
Имеется такая система, http://regfoto.ru/images/172Mathcad_2_.jpg маткад пишет что граничных условий недостаточно, хотя их там с...

Отчет по набору прав
Кто знает можно ли как-то вывести в отчет в цикле наборы прав так как они заданы в конфигураторе, тоесть: 1-Набор прав 2----Объект ...

Сплайн по набору точек
Здравствуйте Дан набор точек (пара значение + время), требуется прибить как можно большее их кол-во заменив сплайном на выбор -...


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

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

Новые блоги и статьи
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний против массовых профанаций
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс Ссылка на сгенерированную музыкальную композицию: https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013 Я говорю, что Время- как вода течет. . .
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru