Estoy creando mi primer componente personalizado de Delphi. Es básicamente un Tpanel personalizado con texto de encabezado y líneas que se muestran en él.Cómo implementar una propiedad de lista de cadenas en un componente delphi personalizado?
Quiero ser capaz de agregar texto de varias líneas usando una lista de cadenas.
Al probar el componente no puedo obtener las líneas de texto que se mostrará en el panel cuando se añaden líneas: NewLinesText.add ('texto línea 1')
Sin embargo, sí funciona cuando puedo crear y poblar un nuevo StringList en tiempo de ejecución y luego asignarla a mi control: controlPanelitem.NewLinesText = MyNewStringlist
Quiero ser capaz de añadir líneas de la siguiente manera: NewLinesText.add ('texto línea 1')
estoy usando Delphi 7 profesional en WinXP. Vea el código a continuación.
¡Cualquier ayuda sería apreciada!
unit ControlPanelItem;
interface
uses
SysUtils, Classes, Controls, ExtCtrls, Graphics, AdvPanel, StdCtrls,
Windows,Forms,Dialogs;
type
tControlPanelItem = class(TAdvPanel)
private
fLinesText : TStrings;
procedure SetLinesText(const Value: TStrings);
procedure SetText;
protected
public
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
published
property NewLinesText : TStrings read FLinesText write SetLinesText;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [tControlPanelItem]);
end;
constructor tControlPanelItem.Create(AOwner: TComponent);
begin
inherited;
fLinesText := TStringList.Create;
end;
destructor tControlPanelItem.Destroy;
begin
fLinesText.Free;
inherited;
end;
procedure tControlPanelItem.SetLinesText(const Value: TStrings);
begin
fLinesText.Assign(value);
SetText;
end;
procedure tControlPanelItem.SetText;
var
count : Integer;
begin
for count := 0 to fLinesText.Count - 1 do
ShowMessage(fLinesText.strings[count]);
end;
end.
Ya estoy haciendo eso. Ver el procedimiento tControlPanelItem.SetLinesText que llama a SetText. (El procedimiento SetText no está completo. Solo estoy usando showmessage para ver si está funcionando) –
OK, no vi eso. (Como saben, ¡el código no era bonito hace unos minutos!) ¿Pero no puedo ver ningún 'OnChange'? –
Hola. Gracias por tu pronta respuesta. ¿FLinesText es una lista de cadenas y no tiene una propiedad onchange por lo que sé? –