1 (edited by zc13569 2014-09-12 06:41:20)

Topic: Изменение цвета строки в выдаче при условии

Собственно вопрос: можно ли изменить цвет строки в выдаче sql-поиска если checkbox=true. Извините за большое количество вопросов, только осваиваю sql.

Re: Изменение цвета строки в выдаче при условии

Это можно сделать в событии OnChange компонента TableGrid
но данное событие было реализовано в бета версии 1.44, скачайте ее
https://www.dropbox.com/s/2phoggh5kfu88 … 4.zip?dl=0


Пример

procedure Form1_TableGrid1_OnChange (Sender: string);
var
    i,c: integer;
begin
    c := Form1.TableGrid1.RowCount - 1;
    for i := 0 to c do
    begin
         if Form1.TableGrid1.Cells[3,i] = 'Да' then Form1.TableGrid1.Cell[3,i].Color := clRed;
         if Form1.TableGrid1.Cells[3,i] = 'Нет' then Form1.TableGrid1.Cell[3,i].Color := clGreen;
    end;
end;

проект с реализацией примера

Post's attachments

Attachment icon Color Grid.zip 4.62 kb, 517 downloads since 2014-09-12 

Dmitry.

Re: Изменение цвета строки в выдаче при условии

Спасибо за ответ. Скачал ваш пример. Я так понимаю что курящие должны светиться красным при выдаче. У меня этого не происходит. бету 1.44 скачал.

Re: Изменение цвета строки в выдаче при условии

в данном примере, в скриптах замените

if Form1.TableGrid1.Cells[3,i] = 'Yes' then Form1.TableGrid1.Cell[3,i].Color := clRed;
if Form1.TableGrid1.Cells[3,i] = 'No' then Form1.TableGrid1.Cell[3,i].Color := clGreen;

на

if Form1.TableGrid1.Cells[3,i] = 'Да' then Form1.TableGrid1.Cell[3,i].Color := clRed;
if Form1.TableGrid1.Cells[3,i] = 'Нет' then Form1.TableGrid1.Cell[3,i].Color := clGreen;
Dmitry.

Re: Изменение цвета строки в выдаче при условии

Осталось только поменять TableGrid1 на GridEmployees и точно заработает! Спасибо!

Re: Изменение цвета строки в выдаче при условии

DriveSoft, а можно ли закрасить полностью всю строку, соответствующую данному условию, а не отдельную ячейку?

Re: Изменение цвета строки в выдаче при условии

savage
к сожалению нет, чтобы раскрасить всю строку, придется раскрасить все ячейки этой строки.

Dmitry.

Re: Изменение цвета строки в выдаче при условии

DriveSoft wrote:

savage
к сожалению нет, чтобы раскрасить всю строку, придется раскрасить все ячейки этой строки.

так и сделал

9 (edited by savage 2014-09-29 13:49:11)

Re: Изменение цвета строки в выдаче при условии

Вроде тоже получилось - вот код для раскрашивания строк:

procedure Form1_GridEmployees_OnChange (Sender: string);
var
   i,f,r,c: integer;
begin
     Form1.GridEmployees.BeginUpdate;
     c := Form1.GridEmployees.Columns.Count - 1;
     r := Form1.GridEmployees.RowCount - 1;
     for i := 0 to r do
     begin
         if Form1.GridEmployees.Cells[3,i] = 'Да' then
          begin
            for f := 0 to c do
              Form1.GridEmployees.Cell[f,i].Color := clGray;
          end;


     end;
     Form1.GridEmployees.EndUpdate;
end;

Просьба - посмотреть, не закрался ли косячок...

Re: Изменение цвета строки в выдаче при условии

Вроде все нормально )

Dmitry.

Re: Изменение цвета строки в выдаче при условии

DriveSoft, расту потихоньку... ;-)

Re: Изменение цвета строки в выдаче при условии

DriveSoft wrote:

Это можно сделать в событии OnChange компонента TableGrid
но данное событие было реализовано в бета версии 1.44, скачайте ее
https://www.dropbox.com/s/2phoggh5kfu88 … 4.zip?dl=0


Пример

procedure Form1_TableGrid1_OnChange (Sender: string);
var
    i,c: integer;
begin
    c := Form1.TableGrid1.RowCount - 1;
    for i := 0 to c do
    begin
         if Form1.TableGrid1.Cells[3,i] = 'Да' then Form1.TableGrid1.Cell[3,i].Color := clRed;
         if Form1.TableGrid1.Cells[3,i] = 'Нет' then Form1.TableGrid1.Cell[3,i].Color := clGreen;
    end;
end;

проект с реализацией примера

скачал пример. у меня у этом проекте показывает только Да или Нет.

Re: Изменение цвета строки в выдаче при условии

Menshikov
Отправил вам на емейл проект с подсветкой заказа.

Dmitry.

Re: Изменение цвета строки в выдаче при условии

DriveSoft wrote:

Menshikov
Отправил вам на емейл проект с подсветкой заказа.

огромное спасибо. все отлично работает. сегодня буду разбиратся почему не получалось у меня. в чем моя ошибка. теперь и поиск работает по 4 критериям без производителя.

Re: Изменение цвета строки в выдаче при условии

savage wrote:

Вроде тоже получилось - вот код для раскрашивания строк:

procedure Form1_GridEmployees_OnChange (Sender: string);
var
   i,f,r,c: integer;
begin
     Form1.GridEmployees.BeginUpdate;
     c := Form1.GridEmployees.Columns.Count - 1;
     r := Form1.GridEmployees.RowCount - 1;
     for i := 0 to r do
     begin
         if Form1.GridEmployees.Cells[3,i] = 'Да' then
          begin
            for f := 0 to c do
              Form1.GridEmployees.Cell[f,i].Color := clGray;
          end;


     end;
     Form1.GridEmployees.EndUpdate;
end;

Просьба - посмотреть, не закрался ли косячок...


Если уже два условия ! Как тогда ?

Re: Изменение цвета строки в выдаче при условии

borsai

procedure Form1_GridEmployees_OnChange (Sender: string);
var
   i,f,r,c: integer;
begin
     Form1.GridEmployees.BeginUpdate;
     c := Form1.GridEmployees.Columns.Count - 1;
     r := Form1.GridEmployees.RowCount - 1;
     for i := 0 to r do
     begin
         if Form1.GridEmployees.Cells[3,i] = 'Да' then
          begin
            for f := 0 to c do
              Form1.GridEmployees.Cell[f,i].Color := clGray;
          end;
         
         // второе условие
         if Form1.GridEmployees.Cells[3,i] = 'Нет' then
          begin
            for f := 0 to c do
              Form1.GridEmployees.Cell[f,i].Color := clRed;
          end;    
     end;
     Form1.GridEmployees.EndUpdate;
end;
Dmitry.

Re: Изменение цвета строки в выдаче при условии

DriveSoft wrote:

borsai

procedure Form1_GridEmployees_OnChange (Sender: string);
var
   i,f,r,c: integer;
begin
     Form1.GridEmployees.BeginUpdate;
     c := Form1.GridEmployees.Columns.Count - 1;
     r := Form1.GridEmployees.RowCount - 1;
     for i := 0 to r do
     begin
         if Form1.GridEmployees.Cells[3,i] = 'Да' then
          begin
            for f := 0 to c do
              Form1.GridEmployees.Cell[f,i].Color := clGray;
          end;
         
         // второе условие
         if Form1.GridEmployees.Cells[3,i] = 'Нет' then
          begin
            for f := 0 to c do
              Form1.GridEmployees.Cell[f,i].Color := clRed;
          end;    
     end;
     Form1.GridEmployees.EndUpdate;
end;

Понял!) Благодарю.  Ошибка у меня была в том что я в первое условие пытался вставить (в таком случае оно закрашивало все или ничего) !