Topic: Изменение цвета строки в выдаче при условии
Собственно вопрос: можно ли изменить цвет строки в выдаче sql-поиска если checkbox=true. Извините за большое количество вопросов, только осваиваю sql.
My Visual Database → Russian → Изменение цвета строки в выдаче при условии
Собственно вопрос: можно ли изменить цвет строки в выдаче sql-поиска если checkbox=true. Извините за большое количество вопросов, только осваиваю sql.
Это можно сделать в событии 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;
проект с реализацией примера
Спасибо за ответ. Скачал ваш пример. Я так понимаю что курящие должны светиться красным при выдаче. У меня этого не происходит. бету 1.44 скачал.
в данном примере, в скриптах замените
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;
Осталось только поменять TableGrid1 на GridEmployees и точно заработает! Спасибо!
DriveSoft, а можно ли закрасить полностью всю строку, соответствующую данному условию, а не отдельную ячейку?
savage
к сожалению нет, чтобы раскрасить всю строку, придется раскрасить все ячейки этой строки.
savage
к сожалению нет, чтобы раскрасить всю строку, придется раскрасить все ячейки этой строки.
так и сделал
Вроде тоже получилось - вот код для раскрашивания строк:
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;
Просьба - посмотреть, не закрался ли косячок...
Вроде все нормально )
DriveSoft, расту потихоньку... ;-)
Это можно сделать в событии 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;
проект с реализацией примера
скачал пример. у меня у этом проекте показывает только Да или Нет.
Menshikov
Отправил вам на емейл проект с подсветкой заказа.
Menshikov
Отправил вам на емейл проект с подсветкой заказа.
огромное спасибо. все отлично работает. сегодня буду разбиратся почему не получалось у меня. в чем моя ошибка. теперь и поиск работает по 4 критериям без производителя.
Вроде тоже получилось - вот код для раскрашивания строк:
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;
Просьба - посмотреть, не закрался ли косячок...
Если уже два условия ! Как тогда ?
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;
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;
Понял!) Благодарю. Ошибка у меня была в том что я в первое условие пытался вставить (в таком случае оно закрашивало все или ничего) !
My Visual Database → Russian → Изменение цвета строки в выдаче при условии
Powered by PunBB, supported by Informer Technologies, Inc.
Theme Hydrogen by Kushi