Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Stringgrid Ordenar datos con click en titulo de columna (https://www.clubdelphi.com/foros/showthread.php?t=21456)

dmassive 18-05-2005 07:22:44

Stringgrid Ordenar datos con click en titulo de columna
 
Busco una componente Stringgrid que me permita hacer click en el titulo de la columna y ordene automaticamente el Stringgrid segun los valores almacenados en esa columna.

Gracias!

poliburro 20-01-2006 04:09:12

hola pues fijate que yo uso lo siguiente para simular el click en la columna del stringgrid:

Cita:

Empezado por poliburro
Código Delphi [-]
 procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
   Shift: TShiftState; X, Y: Integer);
  Var
   Valor :String;
   LGcCoord: TGridCoord; //Define las cordenadas del mouse en el grid
 begin
   LGcCoord := TCustomGrid(StringGrid1).MouseCoord(x,y);
   GiCol := LGcCoord.X; //Establece la columna seleccionada
   GiRow := LGcCoord.Y; //Establece la fila seleccionada
   if (GiRow = 0) And (Button = mbleft) And (GiCol <> -1) then
     Begin
       with stringgrid1 do
         Begin
           GCelda := CellRect(GiCol,0);
           Valor := Cells[GiCol, 0];
           Canvas.Font := Font;
           Canvas.Brush.Color := clBtnFace;
           Canvas.FillRect(GCelda);
           Canvas.TextRect(GCelda, GCelda.Left + 2, GCelda.Top + 2, Valor);
           DrawEdge(Canvas.Handle, GCelda, 10, 2 or 4 or 8);
           DrawEdge(Canvas.Handle, GCelda, 2 or 4, 1);
         End;
      End;
 End;
 procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
   Shift: TShiftState; X, Y: Integer);
  Var
   Valor :String;
 begin
   if (GiRow = 0) And (Button = mbleft) And (GiCol <> -1) then
     Begin
       with stringgrid1 do
         Begin
           Valor := Cells[Gicol, 0];
           Canvas.Font := Font;
           Canvas.Brush.Color := clBtnFace;
           Canvas.FillRect(GCelda);
           Canvas.TextRect(GCelda, GCelda.Left + 2, GCelda.Top + 2, Valor);
           DrawEdge(Canvas.Handle, GCelda, 4, 4 or 8);
           DrawEdge(Canvas.Handle, GCelda, 4, 1 or 2);
           GCelda := stringgrid1.CellRect(1, 1);
         End;
     End;
 end;

espero te sirva como a mi me ha servidor


La franja horaria es GMT +2. Ahora son las 06:27:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi