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 19-05-2003
vichovi vichovi is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva (España)
Posts: 59
Poder: 21
vichovi Va por buen camino
Question Diseño de componentes

Hola a tod@s:

Estoy diseñando un componente y necesito utilizar la propiedad perform (o el sendmessage) del control que estoy creando para dar cierta funcionalidad, pero la propiedad perform no esta disponible.

El control es descendiente del TListBox y necesito hacer la siguiente llamada:

Perform(LB_FINDTEXTEXACT,.....)

Para que me busque una determinada cadena en los items del ListBox.

Agradeceria que me echaran una mano.

Un saludo.
__________________
Vivir a la deriva,
sentir,
que no se que hago aki...

(Extremo)
Responder Con Cita
  #2  
Antiguo 19-05-2003
Avatar de __marcsc
__marcsc __marcsc is offline
Miembro
 
Registrado: may 2003
Ubicación: Girona
Posts: 577
Poder: 22
__marcsc Va por buen camino
Hola,

solo un pequeño comentario, Perform no es una própiedad, sinó un método.

Para utilizar el Perform prueba esto:

TControl(TuObjeto).Perform(loquesea)

Aunque esto en teoría no sería necesario dado que perform es un método público de la clase Tcontrol que en teoría tu heredas con tu propio control...

Sinó hazlo con un SendMessage

SendMessage(TuControl.Handle, lo que sea)

Aunque esto último puede que no te funcione con según que controles dado que no todos disponen de la propiedad Handle.

Suerte.
Responder Con Cita
  #3  
Antiguo 20-05-2003
vichovi vichovi is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva (España)
Posts: 59
Poder: 21
vichovi Va por buen camino
Hola marcsc:

He probado lo que me dijiste y no hay manera, no esta disponible el metodo ( ) perform. El codigo era el siguiente:

procedure TListBoxSpecial.SetScroll(WithScroll:boolean);
begin
self.perform(LB_SETHORIZONTALEXTENT, 300, 0);
end;

Con tu ayuda:

procedure TListBoxSpecial.SetScroll(WithScroll:boolean);
begin
tcontrol(self).perform(LB_SETHORIZONTALEXTENT, 300, 0);
end;


Pero sigue sin dejarme utilizar el perform.

Por favor echame una manita. Un saludo y gracias.

(Perdon a todos por no haber posteado al foro correcto, espero que no volvera a ocurrir)
__________________
Vivir a la deriva,
sentir,
que no se que hago aki...

(Extremo)
Responder Con Cita
  #4  
Antiguo 20-05-2003
Bacterion Bacterion is offline
Miembro
 
Registrado: may 2003
Posts: 91
Poder: 21
Bacterion Va por buen camino
Revisa la herencia de tu componente, porque el TListBox tiene (heredado de TControl, como bien ha dicho marcsc) dicho método.
Puede comprobarlo pegando un TListBox e intentando invocarlo:

ListBox1.Perform( etc...

o mirando en la Ayuda del TListBox, opción Methods.
Responder Con Cita
  #5  
Antiguo 20-05-2003
vichovi vichovi is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva (España)
Posts: 59
Poder: 21
vichovi Va por buen camino
Lightbulb

No hay manera de utilizar el perform, es mas ahora instalo el componente y me dice que el componente se ha instalado y no aparece por ninguna parte (sin embargo el resto de componentes que estan el el mismo Package se instalan sin problemas )

Hace poco k empece con el tema de creacion de componentes asi k ni idea de porque me ocurre esto


Alguna idea???

Si quieres las fuentes del componente, aunque es poco codigo (casi nada) te la paso.

Un saludo.
__________________
Vivir a la deriva,
sentir,
que no se que hago aki...

(Extremo)
Responder Con Cita
  #6  
Antiguo 21-05-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Porqué no nos cuentas un poco mas de este componente, por ejemplo de que clase lo has heredado. Sino mándanos algunas partes del código, por ejemplo la interface con todas las definiciones.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #7  
Antiguo 21-05-2003
vichovi vichovi is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva (España)
Posts: 59
Poder: 21
vichovi Va por buen camino
Post

Estas son las fuentes completas:

unit ListBoxSpecial;

interface

uses
Windows, Messages, SysUtils, Classes, QControls, QStdCtrls;

type
TListBoxSpecial = class(TListBox)
private
{ Private declarations }
FScroll:boolean;
procedure SetScroll(WithScroll:boolean);
protected
{ Protected declarations }
public
{ Public declarations }

published
{ Published declarations }
property Scroll:boolean read FScroll write SetScroll;
end;

procedure Register;

implementation

procedure TListBoxSpecial.SetScroll(WithScroll:boolean);
begin
self.perform(LB_SETHORIZONTALEXTENT, 300, 0);
end;

procedure Register;
begin
RegisterComponents('Componentes', [TListBoxSpecial]);
end;

end.



La idea es crear un listbox con una barra de desplazamiento horizontal.

Un saludo.
__________________
Vivir a la deriva,
sentir,
que no se que hago aki...

(Extremo)
Responder Con Cita
  #8  
Antiguo 21-05-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
El problema es que estas utilizando los componentes Cross-Platform, y estos carecen del método Perform. Si querés solucionar tu problema, y ese componente solo lo vas a utilizar en windows, en lugar de utilizar las units QControls y QStdCtrls, debes utilizar Controls y StdCtrls.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #9  
Antiguo 21-05-2003
vichovi vichovi is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva (España)
Posts: 59
Poder: 21
vichovi Va por buen camino
Talking

Ahora si, casi todo va a las mil maravillas, porque el componente lo habia registrado y aparece el control instalado, pero no aparece en la paleta de componentes.

Intentare echarle un rato a ver si doy con la tecla (acepto sugerencias )

Gracias a todos por todo.
Un saludo.
__________________
Vivir a la deriva,
sentir,
que no se que hago aki...

(Extremo)
Responder Con Cita
  #10  
Antiguo 21-05-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Si vos decís que está registrado, por defecto tiene que aparecer en la paleta "Componentes", si no aparece te podés fijar si aparece en la opción del menú View\Component List, otra opción es que esté invisible o en otra paleta, para ver esto, hacé click derecho sobre las paletas de componentes, entra a la opción "Properties" del menú que aparece, en pages selecciona [All] y ahí podés buscar tu componente en la lista, en la última columna dice en que paleta se encuentra y si está invisible muestra [Hidden], solo tenés que oprimir el botón Show o arrastrarlo hasta la paleta en que lo quieras alojar.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #11  
Antiguo 22-05-2003
vichovi vichovi is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva (España)
Posts: 59
Poder: 21
vichovi Va por buen camino
Post

El nuevo componente no aparece por ninguna parte, lo que estoy haciendo es introducir un ListBox normal, muestro el Form como texto y modifico el objeto ListBox por mi ListBoxSpecial, despues de unos pocos retoques todo anda de maravilla (estoy seguro de que esta instalado)

¿Puede estar corrupto el fichero "dclusr.dpk"?

Cuando lo instalo, instalo ademas otro componente, este se instala sin problemas pero mi ListBoxSpecial no aparece no de coña

Esto solo me ocurre en el ordenador del trabajo, ya que en casa instalo el componente y va a las mil maravillas (aparece en la paleta "Componentes")

Un saludo y gracias.
__________________
Vivir a la deriva,
sentir,
que no se que hago aki...

(Extremo)
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 14:30:47.


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