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 04-09-2004
Critter Critter is offline
Miembro
 
Registrado: may 2003
Posts: 60
Poder: 22
Critter Va por buen camino
Problema con Componente derivado de TPanel y Botones

saludos foro.

trabajo en Delphi 3 y tengo creado un componente derivado de un TPanel el cual dentro tiene 2 botones, (los tipicos Aceptar y Cancelar), el problema que tengo es que a pesar de haber creado los dos botones dentro del panel y haberles indicado el '&Aceptar', y '&Cancelar', en tiempo de diseño, en el caption de los mismos aparecen los botones con la etiqueta 'Ok' y 'Cancel', y no el caption que yo les habia colocado.

asi mismo, en tiempo de ejecución si aparecen las etiquetas modificadas, pero ...
no puedo utilizar Alt+A y Alt+C porque no aparece subrayadito bajo la letra, con lo cual deduzco que no hace caso al '&'.

alguna sugerencia para el ampersand ?

gracias.
Responder Con Cita
  #2  
Antiguo 04-09-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
Para que los cambios que hagas en tiempo de diseño en las subcomponentes (los botones en este caso) se preserven debes usar su método SetSubComponent después de crearlos:

Código Delphi [-]
BotonAceptar := TButton.Create;

{
  Asignar propiedades de inicio
}

BotonAceptar.SetSubComponent(true);

// Saludos
Responder Con Cita
  #3  
Antiguo 05-09-2004
Critter Critter is offline
Miembro
 
Registrado: may 2003
Posts: 60
Poder: 22
Critter Va por buen camino
en Delphi 3 me da error, me parece que no existe 'SetSubComponent'

estoy equivocado ?
Responder Con Cita
  #4  
Antiguo 05-09-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
Cita:
Empezado por Critter
estoy equivocado ?
No. Desafortunadamente la capacidad de tener subcomponentes que puedan guardar sus propiedades en el archivo dfm no apareció sino hasta la versión 6.

Tengo la idea de que es posible hacer lo que quieres pero tendrías que meterte con el proceso de 'streaming' que usa el IDE para leer y guardar propiedades del archivo dfm y esto es complejo.

Si lo único que deseas es poder cambiar en tiempo de diseño el texto de los botones podrías optar por publicar propiedades paralelas en el panel:

Código Delphi [-]
interface

type
  TButtonsPanel = class(TPanel)
  private
    FOkButton: TBitBtn;
    FCancelButton: TBitBtn;

    function GetOkCaption: TCaption;
    function GetCancelCaption: TCaption;

    procedure SetOkCaption(const Value: TCaption);
    procedure SetCancelCaption(const Value: TCaption);

  public
    constructor Create(AOwner: TComponent); override;

  published
    property OkCaption: TCaption read GetOkCaption write SetOkCaption;
    property CancelCaption: TCaption read GetCancelCaption write SetCancelCaption;
  end;

implementation

{ TButtonsPanel }

constructor TButtonsPanel.Create(AOwner: TComponent);
begin
  inherited;

  Width := 105;
  Height := 73;

  FOkButton := TBitBtn.Create(Self);
  FOkButton.Parent := Self;
  FOkButton.Left := 16;
  FOkButton.Top := 8;
  FOkButton.Caption := '&Aceptar';
  FOkButton.Name := 'OkButton';

  FCancelButton := TBitBtn.Create(Self);
  FCancelButton.Parent := Self;
  FCancelButton.Left := 16;
  FCancelButton.Top := 40;
  FCancelButton.Caption := '&Cancelar';
  FCancelButton.Name := 'CancelButton';
end;

function TButtonsPanel.GetOkCaption: TCaption;
begin
  Result := FOkButton.Caption;
end;

function TButtonsPanel.GetCancelCaption: TCaption;
begin
  Result := FCancelButton.Caption
end;

procedure TButtonsPanel.SetOkCaption(const Value: TCaption);
begin
  FOkButton.Caption := Value;
end;

procedure TButtonsPanel.SetCancelCaption(const Value: TCaption);
begin
  FCancelButton.Caption := Value;
end;

end.

Con esto, las propiedades OkCaption y CancelCaption se reflejarán en los textos de los botones ya sea durante el diseño o en ejecución.
// Saludos
Responder Con Cita
  #5  
Antiguo 05-09-2004
Critter Critter is offline
Miembro
 
Registrado: may 2003
Posts: 60
Poder: 22
Critter Va por buen camino
la solución que habia encontrado hasta el momento era publicar los botones en el componente, y asignar los valores por código así por lo menos me funciona, a la espera de alguna solución mas profesional.

muchas gracias, roman. como siempre mostrando interes.
un saludo.
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 23:49:59.


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