| 
      ...OnColumnClick von TListview für TStringgrid implementieren?
     | 
   
   
    | Autor: 
      Miesgram     | 
   
  | [ Tip ausdrucken ] |   |   |   
 
 
 
{ 
 There are two routines to implement the OnColumnClick Methods for a TStringGrid. 
 Set the first row as fixed and the Defaultdrawing to True. 
 
 Mit folgenden zwei Routinen kann man in einem TStringgrid 
 die Methode OnColumnClick eines TListView erzeugen (visuell). 
 Reihe 0 muß fixiert sein undDefaultDrawing = True 
} 
 
 
type 
  TForm1 = class(TForm) 
    StringGrid1: TStringGrid; 
    procedure StringGrid1MouseDown(Sender: TObject; Button: TMouseButton; 
      Shift: TShiftState; X, Y: Integer); 
    procedure StringGrid1MouseUp(Sender: TObject; Button: TMouseButton; 
      Shift: TShiftState; X, Y: Integer); 
  private 
    zelle: TRect; // cell 
    acol, arow: Integer; 
  public 
  end; 
 
var 
  Form1: TForm1; 
 
implementation 
 
{$R *.DFM} 
 
procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton; 
  Shift: TShiftState; X, Y: Integer); 
var 
  Text: string; 
begin 
  with stringgrid1 do 
  begin 
    MouseRoCell(x, y, acol, arow); 
    if (arow = 0) and (button = mbleft) then 
      case acol of 
        0..2: 
          begin 
            // Draws a 3D Effect (Push) 
            // Zeichnet 3D-Effekt (Push) 
            zelle := CellRect(acol, arow); 
            Text := Cells[acol, arow]; 
            Canvas.Font := Font; 
            Canvas.Brush.Color := clBtnFace; 
            Canvas.FillRect(zelle); 
            Canvas.TextRect(zelle, zelle.Left + 2, zelle.Top + 2, Text); 
            DrawEdge(Canvas.Handle, zelle, 10, 2 or 4 or 8); 
            DrawEdge(Canvas.Handle, zelle, 2 or 4, 1); 
          end; 
      end; 
  end; 
end; 
 
procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton; 
  Shift: TShiftState; X, Y: Integer); 
var 
  Text: string; 
begin 
  with StringGrid1 do 
  begin 
    // Draws a 3D-Effect (Up) 
    // Zeichnet 3D-Effekt (Up) 
    Text := Cells[acol, arow]; 
    if arow = 0 then 
    begin 
      Canvas.Font := Font; 
      Canvas.Brush.Color := clBtnFace; 
      Canvas.FillRect(zelle); 
      Canvas.TextRect(zelle, zelle.Left + 2, zelle.Top + 2, Text); 
      DrawEdge(Canvas.Handle, zelle, 4, 4 or 8); 
      DrawEdge(Canvas.Handle, zelle, 4, 1 or 2); 
      MouseToCell(zelle.Left, zelle.Top, acol, arow); 
    end; 
  end; 
  if (arow = 0) and (Button = mbleft) then 
    case acol of 
      0..2: 
        begin 
          // Code to be executed... 
          // Programmcode der ausgeführt werden soll 
          ShowMessage('Column ' + IntToStr(acol)); 
          zelle := stringgrid1.CellRect(1, 1); 
        end; 
    end; 
end; 
 
end. 
 
 
  
   
     
      
         
          | 
		     Bewerten Sie diesen Tipp: 
		  
		   | 
         
       
     | 
   
 
                      
                       |