Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.89/35: Рейтинг темы: голосов - 35, средняя оценка - 4.89
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663

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

07.01.2015, 17:00. Показов 7687. Ответов 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
33460 / 21560 / 8248
Регистрация: 22.10.2011
Сообщений: 37,016
Записей в блоге: 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
33460 / 21560 / 8248
Регистрация: 22.10.2011
Сообщений: 37,016
Записей в блоге: 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
33460 / 21560 / 8248
Регистрация: 22.10.2011
Сообщений: 37,016
Записей в блоге: 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
33460 / 21560 / 8248
Регистрация: 22.10.2011
Сообщений: 37,016
Записей в блоге: 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
33460 / 21560 / 8248
Регистрация: 22.10.2011
Сообщений: 37,016
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru