Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.02.13;
Скачать: CL | DM;

Вниз

stringgrid   Найти похожие ветки 

 
Jacksotnik ©   (2010-11-25 10:43) [0]

Добрый день всем. У меня такой вопрос.
Есть 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;
помогите пожалуйста как можно раскрасить эти ячейки


 
Плохиш ©   (2010-11-25 10:53) [1]

У каждой ячейки есть свойство object.


 
Jacksotnik ©   (2010-11-25 10:59) [2]

Можно подробней и с примером пожалуйста, ато я не совсем понял


 
12 ©   (2010-11-25 11:42) [3]

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;


 
Anatoly Podgoretsky ©   (2010-11-25 11:46) [4]

OnDrawColumnCell


 
Leonid Troyanovsky ©   (2010-11-25 11:53) [5]


> Jacksotnik ©   (25.11.10 10:43)  
 
> Я хочу все это свести в один stringgrid и в нем разделять
> эти записи цветами

http://delphimaster.net/view/2-1287849951/

--
Regards, LVT.


 
Jacksotnik ©   (2010-11-25 12:00) [6]

Спасибо всем. Вроде разобрался


 
Jacksotnik ©   (2010-11-25 13:53) [7]

Возник новый вопрос. У меня должно быть 2 цвета в таблице. Но после каждого вызова onDrawCell оно перерисовывает всю таблицу и то что было нарисовано не сохраняет, короче получается все одним цветом


 
12 ©   (2010-11-25 14:03) [8]

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]);


 
Германн ©   (2010-11-25 14:05) [9]


> Возник новый вопрос. У меня должно быть 2 цвета в таблице.
>  Но после каждого вызова onDrawCell оно перерисовывает всю
> таблицу и то что было нарисовано не сохраняет, короче получается
> все одним цветом


> У каждой ячейки есть свойство object.
>


 
Jacksotnik ©   (2010-11-25 14:14) [10]


> У каждой ячейки есть свойство object.

Можете поподробней описать как с этим свойством работать именно в моем случае, я не могу разобраться с ним


 
Jacksotnik ©   (2010-11-25 14:17) [11]

нашел вот єто:
stringgrid1.Objects[acol,arow]:=tobject($FFCCFF);
но куда его ставить и что с ним делать не приложу ума. Помогите пожалуйста


 
Jacksotnik ©   (2010-11-25 14:19) [12]

Меня интересует вопрос именно сохранения состояния уже закрашенных ячеек.


 
Плохиш ©   (2010-11-25 14:20) [13]

Обучаю основам программирования - дорого, по предоплате.


 
Jacksotnik ©   (2010-11-25 14:21) [14]

Очень смешно.


 
Anatoly Podgoretsky ©   (2010-11-25 14:22) [15]


> Меня интересует вопрос именно сохранения состояния уже закрашенных
> ячеек.

Никакого сохранения не надо.


 
Jacksotnik ©   (2010-11-25 14:28) [16]

Ну кто-то может написать как правильно использовать свойство objects в моем случае


 
И. Павел ©   (2010-11-25 14:38) [17]

> Ну кто-то может написать как правильно использовать свойство
> 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 15:00) [18]

Спасибо тебе, работает только при открытии форма весь stringgrid залит черным)))


 
И. Павел ©   (2010-11-25 15:07) [19]

> Спасибо тебе, работает только при открытии форма весь stringgrid
> залит черным)))

Наверное, FormShow не привязан к соответствующему событию формы, и поэтому все объекты ссылаются на 0.

Это просто пример. В твоей программе изначально нужно заливать не green и red, а, например, white.
А при редактировании значения ячейки, пишем, например:
 sg.Objects[x, y] := TObject(clRed)

И измененная ячейка выделяется красным.


 
Jacksotnik ©   (2010-11-25 15:10) [20]

Спасибо. Все работает



Страницы: 1 вся ветка

Текущий архив: 2011.02.13;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.012 c
15-1289165395
Юрий
2010-11-08 00:29
2011.02.13
С днем рождения ! 8 ноября 2010 понедельник


2-1290427938
12
2010-11-22 15:12
2011.02.13
Как узнать длину надписи на кнопки в пикселах?


2-1290533555
ZV
2010-11-23 20:32
2011.02.13
Сравнение времени функции TDateTime


15-1288710488
bicharko
2010-11-02 18:08
2011.02.13
консультации Delphi(Math krl library, TThread)


6-1234302830
FireMan_Alexey
2009-02-11 00:53
2011.02.13
Можно ли при попытке подключения