Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-11-2012
Comandant Comandant is offline
Miembro
NULL
 
Registrado: ago 2012
Ubicación: Salta
Posts: 34
Poder: 0
Comandant Va por buen camino
PopMenu obtener propiedas de un objeto

Hola a todos bien mi pregunta de hoy es como puedo obtener las propiedas de un objeto por ej. un panel en donde se despliege mi popmenu, por ej: Tengo un popmenu>obtener caption, o popmenu>obtener tag
y lo que quiero es obtener justamente el caption o tag en donde el popmenu este asociado. Pensé en poner el código en la propiedad drop de cada elemento pero no se si esto es eficiente, y muchos de ellos se crean en tiempo de ejecucion.
Para dar una mejor idea de lo que quiero hacer:
click popmenu>obtener caption;
Edit1.Text:= popmenu.component[componente donde fue despleagado].caption o el index;

Capaz que tengo un error de concepto pero quisiera una ayuda y capaz que se me encienda la lámparita ; Gracias delphinianos
Responder Con Cita
  #2  
Antiguo 29-11-2012
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Poder: 19
Faust Va por buen camino
La respuesta exacta a tu pregunta no la tengo... pero ahí te va mi idea...

Al momento de que tu popupmenu se despliega (en el evento OnPopup) el sender del evento es el objeto que lo invoca, en base a este sender usas la información RTTI de este objeto y con lo que obtienes, como las propiedades y procedimientos y su tipo llenas el popupmenu y manejas el clic a cada item del popup en base al tipo de info que mostrará...
__________________
Herr Heins Faust
Responder Con Cita
  #3  
Antiguo 29-11-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Comandant,

Cita:
Empezado por Comandant
Como puedo obtener las propiedas de un objeto por ej. un panel en donde se despliege mi popmenu
Las propiedades de un objeto pueden ser obtenidas y modificadas en Runtime por medio de RTTI (Run-Time Type Information)

Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, TypInfo, Grids;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Memo1: TMemo;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ActiveControlChanged(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Evento de Control del Focus sobre el Form1 por medio de la Matriz de Controles y RTTI
procedure TForm1.ActiveControlChanged(Sender: TObject);
var
   PropInfo: PPropInfo;
   i: Integer;
begin
   for i := 0 to ControlCount - 1 do
   begin
      if TWinControl(Controls[i]).Focused then
      begin
         PropInfo := GetPropInfo(Self.Controls[i].ClassInfo,'Color');
         if Assigned(PropInfo) then
            SetOrdProp(Controls[i], PropInfo, ord(clYellow));
      end
      else
      begin
         PropInfo := GetPropInfo(Self.Controls[i].ClassInfo,'Color');
         if Assigned(PropInfo) then
            SetOrdProp(Controls[i], PropInfo, ord(clWindow));
      end;
   end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   // Activa el Evento de Control de Focus en el Form1
   Screen.OnActiveControlChange := ActiveControlChanged;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  // Desactiva el Evento de Control de Focus en el Form1
  Screen.OnActiveControlChange := nil;
end;

end.
El código anterior cambia en Runtime el color del componente activo que tenga definida la propiedad Color.

Revisa estos links:
Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 29-11-2012 a las 17:15:35.
Responder Con Cita
  #4  
Antiguo 29-11-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Commandant.

El último componente asociado al TPopupMenu (que lo mostró), lo podes obtener de la propiedad PopupComponent.

Código Delphi [-]
...
implentation

uses TypInfo;

function GetPropertyValue(puMenu: TPopupMenu; PropName: string): Variant;
var
  PInfo: PPropInfo;
begin
  with puMenu do
  begin
    PInfo:= GetPropInfo(PopupComponent.ClassInfo, PropName);
    if Assigned(PInfo) then
      Result := GetPropValue(PopupComponent, PropName);
  end;
end;
...

 (*  Llamadas de ejemplo *)

// muestra propiedad Text del componente asociado
procedure TForm1.MenuItemGetCaptionClick(Sender: TObject);
var
  v: Variant;
begin
  v:= GetPropertyValue(PopupMenu1, 'Text');
  if not VarIsClear(v) then
    ShowMessage(v);
end;

// muestra propiedad Tag del componente asociado
procedure TForm1.MenuItemGetTagClick(Sender: TObject);
var
  v: Variant;
begin
  v:= GetPropertyValue(PopupMenu1, 'Tag');
  if not VarIsClear(v) then
    ShowMessage(v);
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 02-12-2012
Comandant Comandant is offline
Miembro
NULL
 
Registrado: ago 2012
Ubicación: Salta
Posts: 34
Poder: 0
Comandant Va por buen camino
Muchas Gracias ecfisa(ya soy uno mas que piensa en que eres un robot) es exactamente lo que quería y pude por sobre todo entender el código y se que esto le servirá a varios en un futuro.
Dejo algo que encontré en la ayuda de D7

Pop-up, or local, menus are a common ease-of-use feature for any application. They enable users to minimize mouse movement by clicking the right mouse button in the application workspace to access a list of frequently used commands.

In a text editor application, for example, you can add a pop-up menu that repeats the Cut, Copy, and Paste editing commands. These pop-up menu items can use the same event handlers as the corresponding items on the Edit menu. You don't need to create accelerator or shortcut keys for pop-up menus because the corresponding regular menu items generally already have shortcuts.

A form's PopupMenu property specifies what pop-up menu to display when a user right-clicks any item on the form. Individual controls also have PopupMenu properties that can override the form's property, allowing customized menus for particular controls.

To add a pop-up menu to a form:

1 Place a pop-up menu component on the form.
2 Use the Menu Designer to define the items for the pop-up menu.
3 Set the PopupMenu property of the form or control that displays the menu to the name of the pop-up menu component.
4 Attach handlers to the OnClick events of the pop-up menu items.

En una de esa a alguien lo necesita Grax a todos
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
Como obtener multiples instancias de un objeto Ole Fistandantilus API de Windows 4 10-10-2008 01:38:53
Como cambiar propiedas a DBLookUpCombobox ANDRES86 OOP 2 08-07-2007 12:28:47
Como obtener las variables de un objeto TEO127 OOP 17 08-06-2007 12:43:05
Obtener lista de procedimientos de un objeto JavierSotillos OOP 15 09-06-2006 17:53:52
Obtener Handle de un objeto senpiterno Varios 6 22-04-2004 15:21:40


La franja horaria es GMT +2. Ahora son las 21: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