Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DrawGrid [D7, WinXP]


Rand ©   (2004-11-26 03:14:00) 

Как поместить данные(иконки/текст) в сабж. В СтринГрид просто, но только текст ((


kostan   (2004-11-26 05:25:00) [1]

для примера (разберись):

procedure TF_EditDev.Grid_comDrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
var
w_bm,h_bm:integer;
begin
//gdFixed

//timerProverka.enabled:=true;//проверка при любой перерисовке

 with Sender as TStringGrid do
 begin
  DefaultDrawing:=false;

  if Arow>0 then
  begin
    Canvas.Brush.Color :=clsilver;
    Canvas.FillRect(Rect);
  end;

  if (State=[gdfocused,gdSelected])  then
  begin

    Canvas.Brush.Color :=clwhite;
    Canvas.FillRect(Rect);
  //   canvas.font.Size:=8;

  end;

     if objects[ACol,ARow] is Tbitmap
     then
      begin
       w_bm:=(objects[ACol,ARow] as tbitmap).width;
       h_bm:=(objects[ACol,ARow] as tbitmap).height;

       if Grid_com.ColWidths[acol]<w_bm then
       Grid_com.ColWidths[acol]:=w_bm;

       if Grid_com.RowHeights[arow]<h_bm then
       Grid_com.RowHeights[arow]:=h_bm;

       if (Grid_com.RowHeights[arow]>h_bm) and (h_bm>30) then
       Grid_com.RowHeights[arow]:=h_bm;

     
       Canvas.Draw(Rect.left,Rect.top,(objects[ACol,ARow] as Tbitmap));
       exit;
      end;

     if (Cells[1,ARow]='_VidDev') and (Acol=2)
     then
      begin
         canvas.font.color:=clBlue;

//          v_str:=TestDev.GetListval('_VidDev');

         v_str:=Cells[2,ARow];

         if v_str='DD_' then v_str:='ДИСКРЕТНЫЙ';
         if v_str='DA_' then v_str:='АНАЛОГОВЫЙ';
         canvas.TextOut(Rect.Left,Rect.Top,v_str);
         exit;
      end;

     if (copy(Grid_com.Cells[1,Arow],1,6)='DAG_FC') and (Acol=2)
     then
      begin
      v_str:=Grid_com.Cells[1,Arow];

      //i_ind:=Canvas.Brush.Color;
      Canvas.Brush.Color:=testDev.GetListval(v_str);
      Canvas.FillRect(Rect);
      //Canvas.Brush.Color:=i_ind;
       exit;
      end;

         if ((Cells[1,ARow]='_Ident') or (Cells[1,ARow]='_Imafile')) and
            (Acol=2)
          then canvas.font.color:=clNavy
          else canvas.font.color:=clBlack;

         if Arow=0
         then
          begin
           canvas.font.Size:=12;
           canvas.font.color:=clNavy;
           canvas.font.Style:=[fsBold];
          end
         else
          begin
//            canvas.font.Size:=8;
           canvas.font.color:=clblack;
          // canvas.font.Style:=[];
          end;

         canvas.TextOut(Rect.Left,Rect.Top,Cells[ACol,ARow]);

          {else font.Size:=10;}

  DefaultDrawing:=true;
 end;
end;
//


Rand   (2004-11-26 04:02:00) [2]


> ЮЮ ©   (26.11.04 03:33) [1]
> данные(иконки/текст) следует поместить в некую структуру
> в памяти, а в DrawGrid.OnDrawCell мзвлекать из неё соответсвующие
> рисуемой ячейке данные и рисовать. Потому он и DrawGrid

Так как малевать? Пример есть?


ЮЮ   (2004-11-26 03:33:00) [3]

данные(иконки/текст) следует поместить в некую структуру в памяти, а в DrawGrid.OnDrawCell мзвлекать из неё соответсвующие рисуемой ячейке данные и рисовать. Потому он и DrawGrid


Наверх

Титульная страница Поиск, карта сайта Написать письмо