Ver Mensaje Individual
  #1  
Antiguo 28-06-2011
Avatar de DarkBlue
DarkBlue DarkBlue is offline
Miembro
 
Registrado: jun 2010
Posts: 105
Reputación: 17
DarkBlue Va por buen camino
Bug con popupmenu y stringgrid

hola, muchas gracias por tu atencion.Mi problema es el siguiente:

He creado un popupmenu con 3 elementos en la lista,en lugar de complicarme la vida y crear un combobox dentro del stringgrid. ya logro que el texto del elemento seleccionado del pop up menu se inserte en la celda correspondiente pero el popupmenu me aparece otra ves una ves que lo seleccione,hasta la segunda ves que selecciono la opción me pone el texto seleccionado en la celda o cuando selecciono otra cosa desaparece.

como puedo hacer que el pop up menu desaparesca en la primera seleccion aqui esta mi codigo
Código Delphi [-]

procedure Tfcotizacion.StringGrid1Enter(Sender: TObject);
begin
stringgrid1.Col:=4;
end;

procedure Tfcotizacion.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);

begin


if (ACol = StringGrid1.FixedCols) then
   CanSelect:= False;


  if   (col=0) or ((col=1) and (row =0)) or ((col=2) and (row =0))  or ((col=3) and (row =0)) then
    CanSelect:= False;

//esto me sirve para indicar que celdas no pueden ser seleccionadas


    insert('#',mascara,1);

 end;

end;
procedure Tfcotizacion.StringGrid1GetEditMask(Sender: TObject; ACol,
  ARow: Integer; var Value: String);

begin


if (ACol = 2) or (ACol = 3) then value:=mascara else
Value := EmptyStr; //le pongo mascara de entrada las columnas 2 y3
end;

procedure Tfcotizacion.Remplazar1Click(Sender: TObject);
var cap:string;
begin
//esta es la accion del clcik del primer elemento del popup menu
 cap:= popupmenu1.Items.Items[0].Caption; 
 stringgrid1.Cells[fcotizacion.col,row]:=cap;//aqui le pongo el caption a la celda
 

end;

procedure Tfcotizacion.StringGrid1GetEditText(Sender: TObject; ACol,
  ARow: Integer; var Value: String);
var p:tpoint;
  begin
//aqui llamo al popup menu si se selecciono en la columna 0
if   (acol=1) then
   begin
    getcursorpos(p);
    popupmenu1.Popup(p.X,p.Y);
    row:=arow; //guardo en que fila y columna se selecciono
    col:=acol;

    end;
end;


Muchas gracias por su ayuda, espero me puedan ayudar =)
__________________
Todo es Relativo
Responder Con Cita