IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Сравнение строк-?
1147
сообщение 4.11.2009 19:25
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


В ячейках столбца А хранятся некоторые данне. Можно ли сделать так чтобы при вводе в столбец В данных, которые не содержатся в столбце А, программа бы выделяля их красным цветом например, как на рисунке? Если же данные совпадают, то все в порядке

Сообщение отредактировано: 1147 - 4.11.2009 20:45


Эскизы прикрепленных изображений
Прикрепленное изображение Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 4.11.2009 20:56
Сообщение #2


Гость






Можно:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);

const charOff = 2;
var
fs, ss: string;
first, second: TStringList;
i, currPos: integer;
begin
if Column.FieldName = 'txt2' then
begin
(Sender as TDBGrid).Canvas.Brush.Color := clWindow;
(Sender as TDBGrid).Canvas.FillRect(Rect);

first := TStringList.Create();
second := TStringList.Create();

fs := (Sender as TDBGrid).DataSource.DataSet.FieldByName('txt').AsString;
ss := Column.Field.Text;
ExtractStrings([','], [], PChar(fs), first);
ExtractStrings([','], [], PChar(ss), second);

currPos := charOff;
for i := 0 to second.Count - 1 do
begin

if first.IndexOf(second.Strings[i]) = -1 then // not present, show red
begin
(Sender as TDBGrid).Canvas.Font.Color := clRed;
end
else // present, show black
begin
(Sender as TDBGrid).Canvas.Font.Color := clWindowText;
end;
(Sender as TDBGrid).Canvas.TextOut(rect.left + currPos, rect.top + CharOff, second.Strings[i]);
inc(currPos, (Sender as TDBGrid).Canvas.TextWidth(second.Strings[i]));
if i <> second.Count - 1 then
begin
(Sender as TDBGrid).Canvas.Font.Color := clWindowText;
(Sender as TDBGrid).Canvas.TextOut(rect.left + currPos, rect.top + CharOff, ',');
inc(currPos, (Sender as TDBGrid).Canvas.TextWidth(','));
end;

end;
second.Free;
first.Free;
end;
end;
Выводит вот так:
Прикрепленное изображение

Устроит? smile.gif
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 8.07.2025 11:33
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"