Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ¿Como Dibujar en un TDrawGrid/TStringGrid? (https://www.clubdelphi.com/foros/showthread.php?t=88624)

pokexperto1 06-07-2015 00:30:51

¿Como Dibujar en un TDrawGrid/TStringGrid?
 
Como puedo hacer para dibujar en un drawgrid/stringgrid, he buscado por internet pero no he encontrado nada que funcione... Quiero que al hacer click en una celda esa celda se coloree...Como lo hago:confused::confused::confused::confused:

Casimiro Notevi 06-07-2015 00:41:43

Por favor, no olvides poner un título descriptivo a tus preguntas.
Y recuerda leer nuestra guía de estilo :)
Y en relación a tu duda, es quizás (con alguna variante) una de las más repetidas, con una simple búsqueda por los foros encontrarás respuestas para ella.

nlsgarcia 06-07-2015 01:28:11

pokexperto1,

Cita:

Empezado por pokexperto1
...¿Como Dibujar en un TDrawGrid/TStringGrid?...

:rolleyes:

Revisa esta información:
Espero sea útil :)

Nelson.

Neftali [Germán.Estévez] 06-07-2015 11:21:19

Cita:

Empezado por pokexperto1 (Mensaje 494054)
...he buscado por internet pero no he encontrado nada que funcione...

¿Puedes poner algún código de los que has probado?
No es algo que tenga mucha complicación, así que talvez lo estás enfocando mal.

ecfisa 06-07-2015 18:20:43

Hola pokexperto1.
Cita:

Empezado por pokexperto1 (Mensaje 494054)
... Quiero que al hacer click en una celda esa celda se coloree...Como lo hago:confused::confused::confused::confused:

Un ejemplo con TStringGrid:
Código Delphi [-]
...
implementation

var
  PaintColor : TColor = clRed;

procedure TForm1.FormCreate(Sender: TObject);
var
  c, f: Integer;
begin
  with StringGrid1 do
  begin
    Options := Options + [goEditing];
    for c := FixedCols to ColCount-1 do
      for f := FixedRows to RowCount-1 do
      begin
        Objects[c, f]:= TObject(clWhite); // color por defecto
        Cells[c, f]  := IntToStr(c+f);   // algo de texto
      end;
  end;
end;

// Pintar
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  with TStringGrid(Sender) do
  begin
    if (ACo l>= FixedCols) and (ARow >= FixedRows) then
    begin
      Canvas.Brush.Color := TColor(Objects[ACol, ARow]);
      Canvas.FillRect(Rect);
      Canvas.Font.Color := clBlack;
      Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]);
    end;
  end;
end;

// Botón izquierdo pinta, derecho cambia el color
procedure TForm1.StringGrid1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  ACol, ARow: Integer;
begin
  with TStringGrid(Sender) do
  begin
    MouseToCell(X, Y, ACol, ARow);
    case Button of
      mbLeft : Objects[ACol, ARow] := TObject(PaintColor);
      mbRight: if ColorDialog1.Execute then PaintColor := ColorDialog1.Color;
    end;
  end;
end;

Muestra:


Saludos :)

nlsgarcia 06-07-2015 18:55:10

Daniel,

Cita:

Empezado por ecfisa
...Un ejemplo con TStringGrid...

^\||/

Nelson.


La franja horaria es GMT +2. Ahora son las 23:27:26.

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