Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-10-2015
Sera Sera is offline
Registrado
NULL
 
Registrado: nov 2014
Posts: 5
Poder: 0
Sera Va por buen camino
Añadir un método a un objeto TCombobox

Hola,

Estoy empezando con Lazarus y tengo dudas en como hacer algunas cosas.
Quiero añadir un método a un objeto basado en TCombobox que tengo en un formulario. Sería solo para ese objeto en particular.
He intentado crear una subclase y basar el objeto en esa subclase pero el compilador indica errores.

¿Como puedo hacer esto?

Gracias de antemano

Última edición por Sera fecha: 28-10-2015 a las 17:53:37. Razón: Puse mal el nombre de la clase
Responder Con Cita
  #2  
Antiguo 28-10-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Bienvenido.

Deberias poner el codigo y el error que te arroja el compilador
Responder Con Cita
  #3  
Antiguo 28-10-2015
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Lazarus y subclases... me lo pones difícil.

Hasta donde yo sé, prueba una clase interpuesta:

Código Delphi [-]

uses Combobox; // o la que sea jejej

class TxComboBox = class(TCombobox)
public
   procedure MioMio(UnValor : string);
end;

TForm1 = class(TForm) // la definición del Form que pone delphi
   Combobox1: TCombobox ; // sí, lo mismo que pone delphi.
   ...
end; 


implementation

procedure TxComboBox.MioMio( UnValor : string);
begin 
  ShowMessage( UnValor ); 
end;


// ya en un procedimiento de tu Form
Procedure TForm1.HacerLoquesea; 
begin 
  //moldear el combobox como si fuera un TxComboBox.
  TxComboBox(Combobox1).MioMio('hola');
end;

Si no te vale, pues lo dicho por AgustinOrtu, pon tu código e indica el error que dá.

Saludos!
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 28-10-2015
Sera Sera is offline
Registrado
NULL
 
Registrado: nov 2014
Posts: 5
Poder: 0
Sera Va por buen camino
Hola,

Vaya, ahora intentado reproducir el error va y funciona. Creo que estaría haciendo algo mal.
De todas formas quisiera aclarame con esto.

Aquí el código del .pas
Código Delphi [-]
type

    { TDispositivosCmd }

    TDispositivosCmd = class(TComboBox)
      public
      procedure CargarDispositivos;
    end;

  { TMainForm }

  TMainForm = class(TForm)
    CerrarBtn: TButton;
    DispositivosCmb: TDispositivosCmd;
    //DispositivosCmb: TComboBox;
    DispositivosLbl: TLabel;
    PerfilesLbl: TLabel;
    LeftPanel: TPanel;
    ListBox1: TListBox;
    RightPanel: TPanel;
    procedure CerrarBtnClick(Sender: TObject);
    procedure DispositivosCmbChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

Y este el del .flm

Código Delphi [-]
  object DispositivosCmb: TDispositivosCmd
    Left = 324
    Height = 23
    Top = 40
    Width = 325
    ItemHeight = 15
    OnChange = DispositivosCmbChange
    Style = csDropDownList
    TabOrder = 1
  end
La idea es personalizar el objeto para este Form, incluso con sus propias propiedades.
El caso es que preferiria personalizar el objeto directamente en lugar de usar una subclase.

Gracias

Última edición por Casimiro Notevi fecha: 28-10-2015 a las 19:38:45.
Responder Con Cita
  #5  
Antiguo 29-10-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Tenes un par de opciones:

1) Para poder agregarlo a un form tenes que crear un componente; es la forma en la que delphi trabaja con los controles en tiempo de diseño. Si no te salen errores "raros". O la otra alternativa, es que creas el componente en runtime (mediante codigo, no con el diseñador RAD)

2) Usar un class helper, aunque no se si esto esta implementado en FPC

3) Como comento Lepe, casteas la instancia en tiempo de ejecucion para acceder a los metodos de tu clase, ya que siguiendo las reglas basicas de la herencia, un TDispositivosCmd es un TComboBox. Pero es necesario que mantengas la declaracion del componente que referencia el form como TComboBox, y tambien el archivo .flm debe conocer un TComboBox
Responder Con Cita
  #6  
Antiguo 29-10-2015
Sera Sera is offline
Registrado
NULL
 
Registrado: nov 2014
Posts: 5
Poder: 0
Sera Va por buen camino
Echaré un vistazo a las Class helper, para tener más opciones.

Gracias por vuestras respuestas.
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
Añadir texturas diffuse, normal y specular a un objeto tridimensional en GLScene noob Gráficos 4 24-01-2012 12:35:09
Encontrar objeto por su nombre, encontrar metodo, ejecutar metodo coso Trucos 7 02-09-2011 00:23:13
Metodo abstracto. yapt OOP 6 03-02-2010 20:37:55
Llamar a método virtual de un objeto pasado como parámetro Ñuño Martínez OOP 6 12-07-2006 17:23:55
Uso del método DeleteRecords !!!! vpepen Conexión con bases de datos 2 05-06-2005 18:33:02


La franja horaria es GMT +2. Ahora son las 17:38:23.


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