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

Вниз

Графика в TStringGrid   Найти похожие ветки 

 
KLEVO   (2005-03-10 18:21) [0]

Как мне заместо значения выводить графику в TStringGrid ?


 
XP   (2005-03-10 18:31) [1]

TDrawGrid или/и OnDrawCell


 
KLEVO   (2005-03-12 09:32) [2]

Ну нужно именно StringGrid , и есть примеры использования OnDrawCell ?


 
begin...end ©   (2005-03-12 09:45) [3]

> KLEVO   (12.03.05 09:32) [2]

Да, в Сети есть очень много примеров.


 
Viktop   (2005-03-12 11:55) [4]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, ExtCtrls, StdCtrls, ImgList, Menus, ActnList;

type
 TMyGrid = class(TStringGrid)
 end;

 TForm1 = class(TForm)
   Image1: TImage;
   Image2: TImage;
   StringGrid1: TStringGrid;
   procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
   procedure StringGrid1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
   procedure StringGrid1DragDrop(Sender, Source: TObject; X, Y: Integer);
   procedure Timer1Timer(Sender: TObject);
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure GridImageCopyExecute(Sender: TObject);
   procedure GridImageCutExecute(Sender: TObject);
   procedure GridImageInfoExecute(Sender: TObject);
   procedure StringGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
   procedure GridActionsUpdate(Sender: TObject);
   procedure GridImagePasteUpdate(Sender: TObject);
   procedure GridImagePasteExecute(Sender: TObject);
   procedure StringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
 private
   fObjPointer: TObject;
   fHintCell: TPoint;
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
var
 S: string;
 DC: HDC;
 oldFont: HFont;
begin // >>>>>>>>>>
 with TStringGrid(Sender) do
 begin
   DC := GetDC(Handle);
   oldFont := SelectObject(DC, Canvas.Font.Handle);

   if (gdFixed in State) then
   begin // Text
     if (ACol = 0) and (ARow > 0) then // TopCells
       Str(ARow, S)
     else if (ARow = 0) and (ACol > 0) then // LeftCells
       Str(ACol, S)
     else
       S := "";
     // Draw Border
     Inc(Rect.Right, 1);
     Inc(Rect.Bottom, 1);
     SetBkColor(DC, GetSysColor(Color_BtnFace));
     Canvas.Brush.Color := GetSysColor(Color_BtnFace);
     FillRect(DC, Rect, Canvas.Brush.Handle);
     DrawText(DC, PChar(s), Length(s), Rect, DT_SingleLine or DT_Center or DT_VCenter);
     DrawEdge(DC, Rect, BDR_RaisedInner, BF_Rect);
   end

   else

   begin
     if (Objects[ACol, ARow] = nil) then
     begin
       s := "Пусто...";
     end
     else
     begin
       if TImage(Objects[ACol, ARow]).Picture.Graphic.Empty then
         s := "Рисунок пустой ...";
     end;
     if Length(s) > 0 then
     begin
       if (gdSelected in State) then
       begin
         SetBkColor(DC, GetSysColor(Color_HighLight));
         Canvas.Brush.Color := GetSysColor(Color_HighLight);
       end
       else
       begin
         SetBkColor(DC, GetSysColor(Color_Window));
         Canvas.Brush.Color := GetSysColor(Color_Window);
       end;
       SetTextColor(DC, $009A9A9A);
       FillRect(DC, Rect, Canvas.Brush.Handle);
       DrawText(DC, PChar(s), Length(s), Rect, DT_SingleLine or DT_Center or DT_VCenter);
     end
     else
     begin
       Canvas.StretchDraw(Rect, TImage(Objects[ACol, ARow]).Picture.Graphic);
     end;
     if (gdSelected in State) then
       DrawFocusRect(DC, Rect);
   end;
   SelectObject(DC, oldFont);
   ReleaseDC(Handle, DC);
 end;
end;

procedure TForm1.StringGrid1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
var
 cX: Integer;
 cY: Integer;
begin
 inherited;
 with TStringGrid(Sender) do
 begin
   MouseToCell(X, Y, cX, cY);
   Accept := (Source is TImage) and (cX >= FixedCols) and (cY >= FixedRows);
 end;
end;

procedure TForm1.StringGrid1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
 cX: Integer;
 cY: Integer;
begin
 inherited;
 with TStringGrid(Sender) do
 begin
   MouseToCell(X, Y, cX, cY);
   Objects[cX, cY] := Source;
   TMyGrid(Sender).FocusCell(cX, cY, False);
   SetFocus;
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 fObjPointer := nil;
 FillChar(fHintCell, SizeOf(TPoint), 0);
end;

procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
 sbPoint: TPoint;
begin
 with TMyGrid(Sender) do
 begin
   MouseToCell(X, Y, sbPoint.X, sbPoint.Y);
   if (ssRight in Shift) and (sbPoint.X >= FixedCols)
     and (sbPoint.Y >= FixedRows) then
   begin
     FocusCell(sbPoint.X, sbPoint.Y, False);
   end;
 end;
end;

end.



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

Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.035 c
4-1107982050
Massiv
2005-02-09 23:47
2005.03.27
Чтение LocalMachine KEY


1-1110489591
GL00m
2005-03-11 00:19
2005.03.27
Не могу сконвертить 01Dec04 в TDate...


1-1111037308
User13
2005-03-17 08:28
2005.03.27
Delphi & Excel


14-1110383090
Piter
2005-03-09 18:44
2005.03.27
Outpost блокирует транзитные пакеты


1-1111061635
Быстрый Шу
2005-03-17 15:13
2005.03.27
Приведение типа Variant





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский