Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.02.13;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.004 c
15-1289078996
Юрий
2010-11-07 00:29
2011.02.13
С днем рождения ! 7 ноября 2010 воскресенье


2-1290417334
Иван
2010-11-22 12:15
2011.02.13
StringGrid.Rows[].Objects


11-1230244484
Лотос
2008-12-26 01:34
2011.02.13
Переименовать файл


3-1252902466
Павел
2009-09-14 08:27
2011.02.13
база данных Access mdb


15-1288635282
boriskb
2010-11-01 21:14
2011.02.13
Microsoft открывает центр разработок в Сколково





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский