Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-08-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 28
eduarcol Va por buen camino
Amigo no se si a los demas tambien, pero a mi no me deja descargar el adjunto
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #2  
Antiguo 06-08-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Y por que en vez de usar Create no usas CreateParented.

Es decir:
Código Delphi [-]
FEmbeddedPanel := TEmbeddedPanel.CreateParented(Self.Handle);

FObjectPanel := TObjectPanel.CreateParented(Self.Handle);
Responder Con Cita
  #3  
Antiguo 06-08-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.144
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Vaya. Es cosa de los permisos de usuario. Sé que no es lo mismo, porque tendrás que hacer un esfuerzo más, pero, aquí está el código fuente del asunto. Tienes que incluirlo en el formulario principal de un proyecto nuevo de Delphi, creo que me entiendes.

Código Delphi [-]
unit UMainFrm;

interface

uses
  Forms, StdCtrls, ExtCtrls, Classes, Controls;

type
  TEmbeddedPanel = class(TPanel)
  protected
    procedure MouseDown(Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer); override;
  end;

type
  TObjectPanel = class(TPanel)
  private
    FEmbeddedPanel: TEmbeddedPanel;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy(); override;
  end;

type
  TmainFrm = class(TForm)
    Label1: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    FObjectPanel: TObjectPanel;
  end;

var
  mainFrm: TmainFrm;

implementation

{$R *.dfm}

{ TEmbeddedPanel }

procedure TEmbeddedPanel.MouseDown(Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
  inherited;
  SetFocus();
end;

{ TObjectPanel }

constructor TObjectPanel.Create(AOwner: TComponent);
begin
  inherited;
  FEmbeddedPanel := TEmbeddedPanel.Create(self);
  InsertControl(FEmbeddedPanel);
  Self.Top := 10;
  Self.Left := 10;
  Self.Width := 100;
  Self.Height := 100;
  with FEmbeddedPanel do
  begin
    Top := 10;
    Left := 10;
    Width := 50;
    Height := 50;
  end;
end;

destructor TObjectPanel.Destroy();
begin
  FEmbeddedPanel.Free();
  inherited;
end;

{ TmainFrm }

procedure TmainFrm.FormCreate(Sender: TObject);
begin
  FObjectPanel := TObjectPanel.Create(nil);
  FObjectPanel.ParentWindow := self.Handle;
end;

procedure TmainFrm.FormDestroy(Sender: TObject);
begin
  FObjectPanel.Free();
end;

end.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 06-08-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.144
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Gracias por tu respuesta Domingo. Juraría que he probado con "CreateParented", pero, como no estoy seguro de haberlo hecho con todos los componentes implicados, voy a hacerlo ahora mismo sobre el "escenario de pruebas" y, si funciona, lo haré en la aplicación real en que tiene que ir bien.

Ahora mismo cuento lo que sea. Gracias de nuevo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 06-08-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.144
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Vale. No funciona del todo bien Domingo. De hecho creo que ya probé con ello, lo que pasa es que he probado ya tantas cosas que ni me acuerdo... lo digo en serio.

Ahora bien, en el ejemplo, efectivamente, puedes usar el "CreateParented" y el error no aparece. Sin embargo, si el panel de ejemplo "usara" tuviera que responder al teclado me temo que no lo haría.

¿Me temo? Bueno. No he podido hacer la prueba, pero, sí la he hecho en la aplicación real en que estoy teniendo el problema. Efectivamente, con el "CreateParent" no se da el error, pero, tampoco pueden manejarse el componente con el teclado.

Además, usando el CreateParented se produce una violación de acceso al cerrar la aplicación en una de cuyas ventanas "incrusto" el componente de marras. Bien. Tal vez esto pueda evitarse (tal vez no se prevén las consecuencias del CreateParented).

Pero, como digo, lo que más me "preocupa" de la solución es que aunque no aparece el error que menciono al principio, tampoco el componente es capaz de reaccionar al teclado, con lo que pierde parte de su funcionalidad.

De hecho, y como el problema se produce con sendas llamadas a "SetFocus", yo puedo no hacer estas, es decir, evitarlas, y de este modo todo va perfecto... salvo que el componente no actúa con el teclado... o sea que estaría en las mismas.

En fin. Gracias de todas formas Domingo. A lo mejor el ejemplo que he preparado no sirve muy bien, o habría que hacer algún cambio para comprobar que efectivamente el panel embebido puede actuar con el teclado.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 06-08-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.144
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Soy yo otra vez... qué pesado... Pues nada. Que probando si el panel embebido puede responder al teclado creándose mediante el "CreateParent"... así es. Es decir, que el asunto funciona Domingo, pero, funciona en el ejemplo, no en la aplicación real en que tengo los problemas.

Sigo liado haciendo pruebas. Me **** en la ****.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #7  
Antiguo 06-08-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Caramba !!! que costumbre mas fea tienen los usuarios novatos de preguntar una cosa, cuando en realidad quieren saber otra

De que se trata en realidad, si hace falta podemos recurrir a la api
Responder Con Cita
  #8  
Antiguo 06-08-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.144
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

... Se trata de que la ventana en que debo crear el objeto está en otra aplicación, hecha en Delphi también (Neobook), pero, de la que yo no tengo absoluto control. De hecho el control se crea desde una DLL, es decir, la aplicación real es un plugin, una DLL que Neobook carga para utilizarla.

Respecto de la API... yo he intentado con "FindControl" y "FinWindow", buscando proporcionar un "Parent" (no una "ParentWindow") válido, pero, no ha habido manera. Yo creo que los problemas pasan por el hecho de que el control se crea en y/o desde una DLL. Algo leí ayer mismo sobre esto, pero, chico, ya digo que leí tantas cosas que no me acuerdo de todas exactamente.

Eduardo: Tuvimos la misma idea... yo también usé un TEdit para probar, y, efectivamente, va bien. Y como arriba he dicho (que nos hemos cruzado) puedo también "controlar" el teclado desde el TPanel, con el mensaje de Windows correspondiente, empero,... aunque en el ejemplo todo va bien, en la aplicación "real" no...

Gracias a todos, ¿eh? Que se sepa.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #9  
Antiguo 06-08-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Entonces, para que quede claro, tienes el handle de una ventana en la que quieres insertar un TPanel, y dentro de ese TPanel otras cosas (Edits, label, puede que botones, etc ...). ¿Es eso correcto?
Responder Con Cita
  #10  
Antiguo 06-08-2007
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 28
eduarcol Va por buen camino
Dec, acabo de modificar tu codigo

Código Delphi [-]
TEmbeddedPanel = class(TEdit)

los create segun dijo seoane y si me funciona con el teclado, o sea pude escribir en el, no se que otra funcionalidad esperas con el teclado, al menos eso fue lo que te entendi


PD. Creo que respondimos los tres a la vez
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Control has not parent Window peripla Varios 7 06-07-2007 04:26:27
In Design: Control no has parent window Negegoca Varios 1 26-01-2007 17:26:36
Array de controles - Control has no parent window SyncReuter OOP 8 24-01-2007 02:21:14
error con el parent window antonio peña Varios 1 04-10-2006 10:18:50
Ayuda: Control Has No Parent Window pelaorb68 Varios 10 20-12-2005 20:36:26


La franja horaria es GMT +2. Ahora son las 11:55:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi