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 05-08-2004
Avatar de FNADALO
FNADALO FNADALO is offline
Miembro
 
Registrado: oct 2003
Ubicación: Palma de Mallorca
Posts: 97
Poder: 21
FNADALO Va por buen camino
Question Como saber el Numero de Item pulsado de un TPopupMenu

Estoy montando la creación de un TPopUpMenu dinamicamente
me veo en la obligación de saber cual es el numero de Item
Seleccionado para pasar a un ActionList el Item para que este ejecute
un Sql donde debo pasarle uno campodebusqueda.Strings[Item Capturado]
porque este se corresponde al campo que busco.

Gracias
Responder Con Cita
  #2  
Antiguo 05-08-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
Wop!

Puedes montarte una función que recorra el array de la propiedad Items y retorne el indice. La función tendría que parecerse a esta
Código Delphi [-]
function IndiceItem(Menu, AItem: TMenuItem);
var
  i: integer;
begin
  i := 0;
  while (i < Length(Menu.Item))  and (AItem <> Menu.Item[i]) do
    Inc(i);
  if i < Length(Menu.Item) then
    Result := i
  else
    Result := -1;
end;

Y se usaría así
Código Delphi [-]
  Index := IndiceItem(MiMenu.Item, ItemABuscar);

No me suena que exista alún método o propiedad que te facilite la vida y no tengo ahora al aayuda a mano
__________________
E pur si muove
Responder Con Cita
  #3  
Antiguo 05-08-2004
Avatar de FNADALO
FNADALO FNADALO is offline
Miembro
 
Registrado: oct 2003
Ubicación: Palma de Mallorca
Posts: 97
Poder: 21
FNADALO Va por buen camino
Gracias Marto

En que Metodo pondrias la Llamada en el OnChange del TPopUPMenu???
Responder Con Cita
  #4  
Antiguo 05-08-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
Wop!

Cita:
Empezado por FNADALO
En que Metodo pondrias la Llamada en el OnChange del TPopUPMenu???
No!!!!!!!!
Cita:
Empezado por Delphi's Help TMenuItem.OnChange
Note: OnChange does not occur when the selected menu item changes.
Yo lo pondría en el onclick de los items que crees. Ahi tienes como Sender el item seleccionado.
__________________
E pur si muove
Responder Con Cita
  #5  
Antiguo 05-08-2004
Avatar de FNADALO
FNADALO FNADALO is offline
Miembro
 
Registrado: oct 2003
Ubicación: Palma de Mallorca
Posts: 97
Poder: 21
FNADALO Va por buen camino
Smile Utilizando TMenuItem para Busquedas

Gracias Marto lo solucione asignando la propiedad Tag con un Integer
distinto para cada Item Creado Dinamicamente e interrogandolo Despues.

Paso el Código:

{ Funciones y Acciones para realizar Busquedas }
// ____________________________________________________________________________

procedure TfrmBuscar.TipoBusqueda(Titulo: String; NumeroOrden: Integer);
var
NewItem: TMenuItem;
begin
NewItem := TMenuItem.Create(Self);
NewItem.Caption := Titulo;
NewItem.OnClick := acBusca.OnExecute; // Llamada al Action.

{ En Está funcion se define NumeroOrden que será el Tag Asignado}
{ como es una propiedad que no se usa en los Items y es la }
{ única por la cual puedo Interrogar cual es el Item Seleccionado }

NewItem.Tag := NumeroOrden;
PopMenu.Items.Add(NewItem);
end;


procedure TfrmBuscar.acBuscaExecute(Sender: TObject);
var strWhere: string;
x:integer;
begin
try
if Sender is TMenuItem then
FiltrandoBusquedas('WHERE ('
+ CamposBusqueda.Strings[TMenuItem(Sender).Tag] +' LIKE '
+quotedStr(trim(txtTexto.Text) +'%')+')');
except
end;

end;


{Nuevo}

procedure TfrmBuscar.FiltrandoBusquedas(AWhere: string);
var
strWhere: string;
begin
Try
ADOQuery1.DisableControls;
ADOQuery1.Close;
strWhere := AWhere;
ADOQuery1.SQL.Strings[1] := strWhere;
ADOQuery1.Open;
ADOQuery1.EnableControls;
lblCoincidencias.Caption := 'Cantidad de coincedencias: '
+ inttostr(ADOQuery1.RecordCount );
gridResultado.Columns[gridResultado.Columns.Count - 1].Color := clSkyBlue;
FormatoGrilla;
except
end;
end;

{ FIN Funciones y Acciones para realizar Busquedas }
// ____________________________________________________________________________
Responder Con Cita
  #6  
Antiguo 05-08-2004
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
Bueno pero...

¿qué no sirve la propiedad MenuIndex del item? MenuIndex es el índice del item en el menú que lo contiene.

// Saludos
Responder Con Cita
  #7  
Antiguo 06-08-2004
Avatar de FNADALO
FNADALO FNADALO is offline
Miembro
 
Registrado: oct 2003
Ubicación: Palma de Mallorca
Posts: 97
Poder: 21
FNADALO Va por buen camino
Cool

Gracias Roman, lo cambie y funciona.
Tema Finalizado.
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


La franja horaria es GMT +2. Ahora son las 03:47:25.


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