Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Varios
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Coloboración Paypal con ClubDelphi

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 22/08/2008
Omega Omega is offline
Miembro
 
Join Date: Jun 2008
Posts: 25
Poder: 0
Omega Va por buen camino
Cuadricula

Buenas, estoy tratando de hacer algo y no se me ocurre que componente usar. Les explico lo que quiero hacer y haber si me pueden recomendar algún componente, ya sea de los incluidos en Delphi 7 o externo.

Necesito mostrar un tablero de 15x20 (*) cuadrados, cada cuadrado contendrá una imagen y siempre serán del mismo tamaño 32x32 (*), y también necesito poder detectar en que cuadrado se hizo click para cambiar dicha imagen.

* Eso son valores de ejemplo, en verdad nesesito poder cambiarlo en tiempo de ejecucion.

Saludos y gracias.
Reply With Quote
  #2  
Old 22/08/2008
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: Ciudad de México
Posts: 20,269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Podría servirte el TDrawGrid de la pestaña Additional.

// Saludos
Reply With Quote
  #3  
Old 22/08/2008
[egostar] egostar is offline
Registrado
 
Join Date: Feb 2006
Posts: 6,572
Poder: 27
egostar Va camino a la fama
Hola,

Se me ocurre que podrías usar el TGridPanel

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Reply With Quote
  #4  
Old 22/08/2008
Omega Omega is offline
Miembro
 
Join Date: Jun 2008
Posts: 25
Poder: 0
Omega Va por buen camino
Gracias a ambos por una respuesta tan rapida.


@roman: El TDrawGrid parece interesante salvo por dos cosas:

La 1º son esos cuadros gris, que no me sirven para nada. Y la 2º es que permite seleccionar las casillas mostrando el típico fondo azul.

@egostar: El TGridPanel no lo encuentro. mmm ¿Esta para Delphi 7?

Saludos.
Reply With Quote
  #5  
Old 22/08/2008
[egostar] egostar is offline
Registrado
 
Join Date: Feb 2006
Posts: 6,572
Poder: 27
egostar Va camino a la fama
Quote:
Originally Posted by Omega View Post
Gracias a ambos por una respuesta tan rapida.


@roman: El TDrawGrid parece interesante salvo por dos cosas:

La 1º son esos cuadros gris, que no me sirven para nada. Y la 2º es que permite seleccionar las casillas mostrando el típico fondo azul.

@egostar: El TGridPanel no lo encuentro. mmm ¿Esta para Delphi 7?

Saludos.
Pues pense que si, lo he visto aquí

New VCL features since Delphi 7 - 9:38am
2 Apr 2007 ... VCL Features Since Delphi 7. VCL Applications are themed by default. ... With a grid panel, a developer can specify the number of rows and ...

Salud OS

Edito: Mea culpa, esto es después de D7, perdón.

Abstract: See many of the major new VCL features available in releases after Delphi 7
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Last edited by egostar : 22/08/2008 at 19:04.
Reply With Quote
  #6  
Old 22/08/2008
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: Ciudad de México
Posts: 20,269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Quote:
Originally Posted by Omega View Post
El TDrawGrid parece interesante salvo por dos cosas:

La 1º son esos cuadros gris, que no me sirven para nada. Y la 2º es que permite seleccionar las casillas mostrando el típico fondo azul.
Los cuadros grises corresponden a las filas y columnas fijas. Simplemente pon FixedCols y FixedRows en 0 para que no haya columnas fijas.

La selección azul la puedes quitar al momento de dibujar las celdas en el evento OnDrawCell:

Código Delphi [-]
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
  if gdSelected in State then
  begin
    InflateRect(Rect, 1, 1);
    DrawGrid1.Canvas.Brush.Color := DrawGrid1.Color;
    DrawGrid1.Canvas.Rectangle(Rect);
  end;
end;

// Saludos
Reply With Quote
  #7  
Old 22/08/2008
Omega Omega is offline
Miembro
 
Join Date: Jun 2008
Posts: 25
Poder: 0
Omega Va por buen camino
@egostar: No pasa nada, gracias de todas formas. =)

@roman: Funciono todo perfecto, arigatō!

Ahora solo me queda ver si puedo eliminar la marca de selección y luego ya pintar las celdas al hacer click en una de ella. Creo que esto ultimo lo puedo lograr con lo siguiente, ahora lo probare:
Código Delphi [-]
ImageList1.Draw(DrawGrid1.Canvas,Rect.Left,Rect.Top,0);

Saludos.
Reply With Quote
  #8  
Old 22/08/2008
[egostar] egostar is offline
Registrado
 
Join Date: Feb 2006
Posts: 6,572
Poder: 27
egostar Va camino a la fama
Hola

Si solo vas a usar una sola imagen para todos los "cuadros", tambien puedes hacer esto si es que quieres modificar la imagen desde fuera del programa.

Código Delphi [-]
var
  Form1: TForm1;
  imagen: TImage;

implementation

{$R *.dfm}

procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  DrawGrid1.Canvas.Draw(Rect.Left,Rect.Top,Imagen.Picture.Graphic);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  imagen.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  imagen := TImage.Create(nil);
  imagen.Picture.LoadFromFile('C:\Desarrollo\Iconos\admin_32.ico');
end;

end.

Salud OS

Edito

Leyendo de nuevo, vi que quieres hacer clic en alguna celda y colocar una imagen en ella,
Código Delphi [-]
var
  Form1: TForm1;
  imagen: TImage;
  _Rect: TRect;

implementation

{$R *.dfm}

procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  DrawGrid1.Canvas.Draw(_Rect.Left,_Rect.Top,Imagen.Picture.Graphic);
end;

procedure TForm1.DrawGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
begin
  _Rect := DrawGrid1.CellRect(ACol,ARow);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  imagen.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  imagen := TImage.Create(nil);
  imagen.Picture.LoadFromFile('C:\Desarrollo\Iconos\admin_32.ico');
end;

end.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney

Last edited by egostar : 22/08/2008 at 23:31.
Reply With Quote
  #9  
Old 22/08/2008
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: Ciudad de México
Posts: 20,269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Por cierto, olviden lo anterior para evitar la selección azul. Es más fácil poniendo

Código Delphi [-]
DrawGrid1.DefaultDrawing := false;



Eso también quita el rectángulo punteado de la selección.

// Saludos
Reply With Quote
  #10  
Old 23/08/2008
Omega Omega is offline
Miembro
 
Join Date: Jun 2008
Posts: 25
Poder: 0
Omega Va por buen camino
@roman: Menos código y mejor, perfecto.

@egostar: Te pasaste en tu respuesta :O El código funciona bien, pero si minimizas la ventana lo dibujado se pierde. Así que se me ocurre ir guardando en un array las celdas que tienen imagen y luego en el DrawCell recorrer el array con un for e ir pintando las imágenes. Ahora me pondré con ello, si lo consigo lo posteo por si a alguien le sirve.

Edito: Añado el código que he hecho (basado en el de egostar) para rellenar una celda con una imagen, ahora solo me falta la parte del array y el for:
Código Delphi [-]
 Imagen:TBitmap;
begin
 Imagen := TBitmap.Create;
 ImageList.GetBitmap(0,Imagen);
 l := (Nº_FILA * ANCHO_IMG) + Nº_FILA;
 t := (Nº_COLUMNA * ALTO_IMG) + Nº_COLUMNA;
 DrawGrid.Canvas.Draw(l,t,Imagen);
 Imagen.Free;
end;

Last edited by Omega : 23/08/2008 at 21:25.
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Dibujar Cuadricula Drake Gráficos 9 22/03/2007 15:20
cuadricula...que calvario!! User_baja1 Impresión 2 03/03/2005 15:37


All times are GMT +2. The time now is 02:16.


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