Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Smile String Grid

Hola, que tal ,tengo una duda acerca de los string grid. Resulta que quiero que al momento de hacer doble clic en una celda me arroje un panel con un radiogroup. Se que lo tengo que hacer en el evento ondblclic del stringgrid. Pero como me aseguro que esa celda fue la que le hizo doble clic el usuario?esto es para que muestre las opciones a esa pregunta.
Responder Con Cita
  #2  
Antiguo 13-10-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: 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
Intenta algo así:

Código Delphi [-]
var
  GridCoord: TGridCoord;

begin
  GridCoord := StringGrid1.MouseCoord(Mouse.CursorPos.X, Mouse.CursorPos.Y)
end;

GridCoord es un record con las coordenadas de la celda.

// Saludos
Responder Con Cita
  #3  
Antiguo 14-10-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola, las propiedades Col y Row del StringGrid te indican la fila y columna de la celda seleccionada.

Código Delphi [-]
procedure TForm1.StringGrid1DblClick(Sender: TObject);
begin
  With StringGrid1 do    
    showmessage(Cells[Col,Row]);
end;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 14-10-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: 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
¡Ah mira! No había pensado en eso. Así está mucho mejor Caro

// Saludos
Responder Con Cita
  #5  
Antiguo 14-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Este es mi codigo...asi lo deje pero me manda un error de consulta:
Código Delphi [-]
procedure TForm1.sgEvaluacionDblClick(Sender: TObject);
var
evalua:string;
GridCoord:TGridCoord;
begin
  GridCoord:=sgEvaluacion.MouseCoord(Mouse.CursorPos.x, Mouse.CursorPos.y);
  panel1.visible:=true;
  query1.close;
  query1.sql.clear;
  query1.sql.Add('select opci_evaluacion,opci_secc,opci_pregunta,opci_clave,opci_descripcion,opci_valor from topciones');
  query1.sql.add('where opci_pregunta = '''+evalua+'''');
  query1.sql.add('order by opci_descripcion');
  abre(query1);
  while not query1.Eof do
   Begin
    rgRespuestas.Items.Add(query1.fieldbyname('opci_descripcion').asstring);
   End;
end;

Caro, como uso esa propiedad...con que la comparo???tengo que contar las celdas o algo asi?
Responder Con Cita
  #6  
Antiguo 14-10-2008
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Elite237 Ver Mensaje
Caro, como uso esa propiedad...con que la comparo???tengo que contar las celdas o algo asi?
Hola, no tienes que contar las celdas, lo que yo he supuesto es que tu quieres obtener el contenido de la celda donde se esta haciendo doble click, según lo ultimo que pones tu quieres que ese valor se cargue en evalua y hacer la consulta, si es así solo tienes que asignar el contenido de la celda a tu variable evalua.

Código Delphi [-]
 With StringGrid1 do    
   evalua := Cells[Col,Row];

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #7  
Antiguo 14-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Red face

Hola caro, fijate que cuando mando a hacer una consulta en el grid no me aparece nada, por que sera??este es mi codigo de mi boton
Código Delphi [-]
procedure TForm1.btnGeneraClick(Sender: TObject);
var
x:integer;
evalua:string;
begin
  //Obtiene la clave del combo evaluacion
  evalua:=copy(cmbEvaluacion.text,0,pos('-',cmbEvaluacion.text)-1);
  //OBTIENE LA SECCION
  query1.close;
  query1.sql.clear;
  query1.sql.add('select secc_eval,secc_nombre,secc_clave from tsecciones');
  query1.sql.add('where secc_eval = '''+evalua+'''');
  query1.sql.add('order by secc_nombre');
  abre(query1);
  //Obtiene la clave del combo evaluacion
  evalua:=copy(cmbEvaluacion.text,0,pos('-',cmbEvaluacion.text)-1);
  //OBTIENE LA PREGUNTA
  query1.Close;
  query1.sql.clear;
  query1.sql.add('select preg_evaluacion,preg_secc,preg_clave,preg_descripcion,secc_clave from tpreguntas,tsecciones');
  query1.sql.add('where preg_evaluacion = '''+evalua+'''');
  query1.sql.add('and preg_secc = secc_clave');
  query1.sql.add('order by preg_descripcion');
  abre(query1);
  //'+query1.fieldbyname('secc_clave').asstring);
  //Obtiene la clave del combo evaluacion
  evalua:=copy(cmbEvaluacion.text,0,pos('-',cmbEvaluacion.text)-1);
  //OBTIENE LA OPCION
  query1.close;
  query1.sql.clear;
  query1.sql.Add('select * from topciones');
  query1.sql.add('where opci_evaluacion = '''+evalua+'''');
  query1.sql.add('order by opci_descripcion');
  abre(query1);
  x:=1;
  sgEvaluacion.Cells[0,0]:='Número';
  sgEvaluacion.Cells[1,0]:='Pregunta';
  sgEvaluacion.Cells[2,0]:='Opcion 1';
  sgEvaluacion.Cells[3,0]:='Opcion 2';
  sgEvaluacion.Cells[4,0]:='Opcion 3';
  sgEvaluacion.Cells[5,0]:='Opcion 4';
  sgEvaluacion.Cells[6,0]:='Resultado';
  while not query1.eof do
   Begin
     sgEvaluacion.Cells[0,x]:=query1.fieldbyname('preg_clave').AsString;
     sgEvaluacion.Cells[1,x]:=query1.fieldbyname('preg_descripcion').AsString;
     sgEvaluacion.Cells[2,x]:='1';
     //query1.fieldbyname('preg_descripcion').AsString;
     sgEvaluacion.Cells[3,x]:='3';
     //query1.fieldbyname('opci_descripcion').AsString;
     sgEvaluacion.Cells[4,0]:='4';
     sgEvaluacion.Cells[5,0]:='5';
     inc(x);
     query1.next;
      if x=1 then
        sgEvaluacion.RowCount:=2
      else
        sgEvaluacion.RowCount:=x
   End;

end;

lo que hago es que si la seccion donde estan las preguntas son iguales, entonces que me arroje las preguntas que tiene esa seccion, y que al dar doble clic me muestra las opciones que le corresponden a esa pregunta.
Responder Con Cita
  #8  
Antiguo 14-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Ya encontre el problema, lo que pasa es que estaba usando el mismo query, y pues lo abria y lo cerraba, claro que no me devolvia nada..ahora si..el problema es de que al dar doble clic,no me muestra las opciones en mi panel...no aparece ninguna..me puedes auxiliar carito??
Responder Con Cita
  #9  
Antiguo 15-10-2008
Elite237 Elite237 is offline
Miembro
 
Registrado: jul 2007
Posts: 162
Poder: 17
Elite237 Va por buen camino
Hola, caro, una preguntota por que no me visualiza el panel con las respuestas a las preguntas??Utilice lo que me comentaste, para saber en donde hace doble clic el usuario, que es la columna 2(donde tengo mis preguntas)Mi codigo es el siguiente:

Código Delphi [-]
procedure TForm1.sgEvaluacionDblClick(Sender: TObject);
var
evalua:string;
begin
    if sgEvaluacion.col=2 then
  begin
    evalua:=copy(cmbEvaluacion.text,0,pos('-',cmbEvaluacion.text)-1);
    query3.close;
    query3.sql.clear;
    query3.sql.Add('select opci_evaluacion,opci_secc,opci_pregunta,opci_descripcion,opci_valor,preg_clave,preg_secc from topciones,tpreguntas');
    query3.sql.add('where opci_evaluacion = '''+evalua+'''');
    query3.sql.add('order by opci_descripcion');
    abre(query3);
    while not query3.Eof do
     Begin
      rgRespuestas.Items.Add(query3.FieldByName('opci_descripcion').asstring);
      query3.Next;
     End;
    panel1.visible:=true
  End;
    showmessage('No hay opciones para esta pregunta');
end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Situacion con string Grid rex Varios 2 02-09-2005 08:10:31
string grid rebollo75 Varios 4 29-12-2004 20:16:50
string grid rebollo75 Varios 4 27-12-2004 20:10:47
Titulos En String Grid triniti OOP 2 20-06-2004 23:50:36


La franja horaria es GMT +2. Ahora son las 07:57:49.


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
Copyright 1996-2007 Club Delphi