![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
stringgrid [D7, XP]
Jacksotnik © (2010-11-25 10:43:00)Добрый день всем. У меня такой вопрос.
Есть 2 стриггрида используются для наглядности при импорте данных, в один выводятся клиенты по которым прошло обновление данных, а во-второй новые клиенты которые добавились в базу.
Я хочу все это свести в один stringgrid и в нем разделять эти записи цветами, помогите реализовать по сути данные о новых и о обновленных абсолютно одинаковые тоесть нет какогото признака по которым можно их различить, просто проверяется наличие человека в базе по коду если есть то обновляется а если нет то добавляется новый
вот кусок кода где это происходит:
if myquery1.RecordCount=1 then
begin
if strtofloat(buf[5])>summ then
begin
//Тут хочу сдалать один цвет
inc(j);
stringgrid1.Cells[0,j]:=buf[1];
stringgrid1.Cells[1,j]:=buf[5];
stringgrid1.Cells[2,j]:=buf[6];
end;
end
else if myquery1.RecordCount=0 then
begin
//А тут другой цвет
inc(k);
stringgrid2.Cells[0,k]:=buf[1];
stringgrid2.Cells[1,k]:=buf[5];
stringgrid2.Cells[2,k]:=buf[6];
end;
помогите пожалуйста как можно раскрасить эти ячейки
Jacksotnik (2010-11-25 15:10:00) [1]Спасибо. Все работает
И. Павел (2010-11-25 15:07:00) [2]> Спасибо тебе, работает только при открытии форма весь stringgrid
> залит черным)))
Наверное, FormShow не привязан к соответствующему событию формы, и поэтому все объекты ссылаются на 0.
Это просто пример. В твоей программе изначально нужно заливать не green и red, а, например, white.
А при редактировании значения ячейки, пишем, например:
sg.Objects[x, y] := TObject(clRed)
И измененная ячейка выделяется красным.
Jacksotnik (2010-11-25 15:00:00) [3]Спасибо тебе, работает только при открытии форма весь stringgrid залит черным)))
И. Павел (2010-11-25 14:38:00) [4]> Ну кто-то может написать как правильно использовать свойство
> objects в моем случае
Все уже расписали. Осталось только объединить это вот так:
procedure TForm1.sgDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
sg.Canvas.Brush.Color := TColor(sg.Objects[ACol, ARow]);
sg.Canvas.FillRect(Rect);
sg.Canvas.TextOut(Rect.Left, Rect.Top, sg.Cells[ACol, ARow]);
end;
procedure TForm1.FormShow(Sender: TObject);
var i, j: integer;
begin
for i := 1 to sg.RowCount do
for j := 1 to sg.ColCount do
if i <> j then sg.Objects[j, i] := TObject(clGreen)
else sg.Objects[j, i] := TObject(clRed);
end;
Jacksotnik (2010-11-25 14:28:00) [5]Ну кто-то может написать как правильно использовать свойство objects в моем случае
Anatoly Podgoretsky (2010-11-25 14:22:00) [6]
> Меня интересует вопрос именно сохранения состояния уже закрашенных
> ячеек.
Никакого сохранения не надо.
Jacksotnik (2010-11-25 14:21:00) [7]Очень смешно.
Плохиш (2010-11-25 14:20:00) [8]Обучаю основам программирования - дорого, по предоплате.
Jacksotnik (2010-11-25 14:19:00) [9]Меня интересует вопрос именно сохранения состояния уже закрашенных ячеек.
Jacksotnik (2010-11-25 14:17:00) [10]нашел вот єто:
stringgrid1.Objects[acol,arow]:=tobject($FFCCFF);
но куда его ставить и что с ним делать не приложу ума. Помогите пожалуйста
Jacksotnik (2010-11-25 14:14:00) [11]
> У каждой ячейки есть свойство object.
Можете поподробней описать как с этим свойством работать именно в моем случае, я не могу разобраться с ним
Германн (2010-11-25 14:05:00) [12]
> Возник новый вопрос. У меня должно быть 2 цвета в таблице.
> Но после каждого вызова onDrawCell оно перерисовывает всю
> таблицу и то что было нарисовано не сохраняет, короче получается
> все одним цветом
> У каждой ячейки есть свойство object.
>
12 (2010-11-25 14:03:00) [13]procedure TForm1.strngrd1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if (ACol = 1) and (ARow = 1) then strngrd1.Canvas.Brush.Color := clRed;
if (ACol = 2) and (ARow = 2) then strngrd1.Canvas.Brush.Color := clGreen;
strngrd1.Canvas.FillRect(Rect);
strngrd1.Canvas.TextOut(Rect.Left, Rect.Top, strngrd1.Cells[ACol, ARow]);
Jacksotnik (2010-11-25 13:53:00) [14]Возник новый вопрос. У меня должно быть 2 цвета в таблице. Но после каждого вызова onDrawCell оно перерисовывает всю таблицу и то что было нарисовано не сохраняет, короче получается все одним цветом
Jacksotnik (2010-11-25 12:00:00) [15]Спасибо всем. Вроде разобрался
Leonid Troyanovsky (2010-11-25 11:53:00) [16]
> Jacksotnik © (25.11.10 10:43)
> Я хочу все это свести в один stringgrid и в нем разделять
> эти записи цветами
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1287849951&n=18
--
Regards, LVT.
Anatoly Podgoretsky (2010-11-25 11:46:00) [17]OnDrawColumnCell
12 (2010-11-25 11:42:00) [18]procedure TForm1.strngrd1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if (ACol = 1) and (ARow = 1) then strngrd1.Canvas.Brush.Color := clRed;
strngrd1.Canvas.FillRect(Rect);
end;
Jacksotnik (2010-11-25 10:59:00) [19]Можно подробней и с примером пожалуйста, ато я не совсем понял
Плохиш (2010-11-25 10:53:00) [20]У каждой ячейки есть свойство object.