Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Obtener celdas seleccionadas de un StringGrid (https://www.clubdelphi.com/foros/showthread.php?t=83380)

Alejandro73 11-06-2013 16:17:55

Obtener celdas seleccionadas de un StringGrid
 
Estimados

Buenos días, tengo un TbsSkinStringGrid el cual se dibuja en tiempo de ejecución en base a una consulta (es similiar a un StringGrid), luego puedo seleccionar un o mas celdas cambiando el color de fondo y el texto de las mismas; ¿como puedo saber cuales son las celdas seleccionadas por el usuario?

Saludos

Casimiro Noteví 11-06-2013 16:29:37

Mira los enlaces del final de esta página, abajo del todo, seguramente te sirven

Alejandro73 11-06-2013 16:59:21

Gracias

Ya revise este codigo

/* Mostrar selección en ListBox */ void __fastcall TForm1::Button1Click(TObject *Sender) { TGridRect GR = StringGrid1->Selection; AnsiString s; for(int f=GR.Top; f <= GR.Bottom; f++){ s= ""; for(int c=GR.Left; c <= GR.Right; c++) s = s + StringGrid1->Cells[f][c]; ListBox1->Items->Add(s); } }

pero no me queda claro como lo recorre con el for ya que marca error en "f=Gr.Top"

adjunto codigo del boton
Código Delphi [-]
  Grid : TbsSkinStringGrid;
  Gr   : TGridRect;
begin

  Gr := Grid.Selection;
  for(int f=GR.Top; f <= GR.Bottom; f++)
   begin
    s= "";
    for(int c=GR.Left; c <= GR.Right; c++)
     begin
      s = s + StringGrid1->Cells[f][c];
      ShowMessage(s);
     end;
   end;

Casimiro Noteví 11-06-2013 17:03:41

¿Pero ese qué lenguaje es delphic o cdelphi :p?

Alejandro73 11-06-2013 17:05:41

Estimado

El lenguaje es Delphi.

Casimiro Noteví 11-06-2013 17:09:00

¿Y ese código que has puesto te compila?

ozsWizzard 11-06-2013 17:17:13

El código, a lo sumo, es compilable desde Rad Studio pero Delphi, lo que se dice Delphi, va a ser que no.

Alejandro73 11-06-2013 17:19:03

No, no compila, pero puse este otro codigo

Código Delphi [-]
Grid : TbsSkinStringGrid;   
Gr   : TGridRect; 
begin    
  Gr       := Grid.Selection;   
  gr_left  := Gr.Left;   
  gr_top   := Gr.Top;   
  gr_right := Gr.Right;   
  gr_bottom:= Gr.Bottom;     
  ShowMessage('Seleccion '+IntToStr(gr_left)+','+IntToStr(gr_top)+' a la '+IntToStr(gr_right)+','+IntToStr(gr_bottom));

pero los valores no me cuadran, yo esperaba 3,2 a la 3,3 que serian las celdas seleccionadas

ozsWizzard 11-06-2013 19:09:55

Ese "Selecction" del grid parece que no sea para sacar la columna y la fila seleccionada sino la región que se quiere colorear.

Alejandro73 11-06-2013 19:15:07

Efectivamente muestra la región que se dibujo.

Lo que necesito es obtener el nro de Columna y Fila de la región que se coloreo, que puede perfectamente ser mas de una celda.

ecfisa 11-06-2013 23:40:10

Cita:

Empezado por Alejandro73 (Mensaje 462062)
Estimados
...
¿como puedo saber cuales son las celdas seleccionadas por el usuario?

Hola Alejandro.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  with StringGrid1.Selection do
    ShowMessage(Format('Desde, col: %d row: %d',[Left,Top])+#10+
                Format('Hasta, col: %d row: %d',[Right,Bottom]));
end;

Saludos. :)

Alejandro73 12-06-2013 00:07:19

Estimado

Una vez mas se agracede su aporte, funciona perfectamente.

Saludos
Alejandro A.

ozsWizzard 12-06-2013 14:12:30

O no lo entiendo o no soy capaz de ver que es lo que pasa.

¿Qué diferencia conceptual hay entre el código que puso ecfisa y el que puso Alejandro73?

En ambos usa las mismas propiedades para los mismo valores, ¿no?

ecfisa 12-06-2013 16:26:39

Cita:

Empezado por ozsWizzard (Mensaje 462129)
O no lo entiendo o no soy capaz de ver que es lo que pasa.

¿Qué diferencia conceptual hay entre el código que puso ecfisa y el que puso Alejandro73?

En ambos usa las mismas propiedades para los mismo valores, ¿no?

Hola ozsWizzard.

No había visto el mensaje #8 hasta ahora que lo mencionas (o tal vez no le presté la debida atención) ...

Pero si las variables gr_left, gr_top, gr_right y gr_bottom están declaradas como Integer, conceptualmente ninguna.

Saludos.:)

ozsWizzard 13-06-2013 17:34:23

Ah, vale, entonces no le daba el resultado correcto por cualquier otro motivo, jeje

Estaba yo asustao, jajajaja


La franja horaria es GMT +2. Ahora son las 12:26:32.

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