Moin moin,
also das mehrzeilige Panel hat mich doch noch nicht losgelassen, zumal ich nur eine kommerzielle Komponente gefunden habe. Jetzt habe ich mal einen Rohbau der Komponente zusammengestrickt. Hakelt noch etwas und ich weiss leider nicht wie ich da Alignment reinbekomme...
Delphi-Quellcode:
Unit MyOanel
interface
uses Classes, SysUtils, dialogs,
Windows, Forms, Messages;
{ }
{ }
type
{ }
{ TMyPanel }
procedure Register;
TMyPanel =
class(TPanel)
private
FCaption_List : TStrings;
procedure DrawCaption
( Text :
string);
public
constructor Create
( AOwner : TComponent );
override;
destructor destroy;
procedure SetCaption
( Text :
String );
function GetCaption :
String;
procedure SetCaption_List
( LCaption_List : TStrings );
published
property Caption_List : TStrings
read FCaption_List
write SetCaption_List;
property Caption :
String
read GetCaption
write SetCaption;
end;
{ }
{ }
implementation
{ }
{ }
procedure Register;
begin
RegisterComponents( '
!', [ TMyPanel ]);
end;
{ }
{ TMyPanel }
constructor TMyPanel.Create (AOwner:TComponent);
begin
inherited Create(AOwner);
FCaption_List := TStringList.Create;
end;
destructor TMyPanel.destroy;
begin
FCaption_List.Destroy;
inherited Destroy;
end;
procedure TMyPanel.DrawCaption
( Text :
string);
var
Rect : TRect;
begin
Rect.Left := 5;
Rect.Top := 5;
Rect.Right := Width + Left;
Rect.Bottom := Height + Top;
DrawText( Canvas.Handle,
PChar ( Text ),
Length( Text ),
Rect, DT_RTLREADING);
//DT_RIGHT
end;
function TMyPanel.GetCaption:
String;
begin
DrawCaption( Text );
Result := copy(
FCaption_List.Text
, 1
, length(FCaption_List.Text)-2
);
end;
procedure TMyPanel.SetCaption
( Text :
String );
begin
FCaption_List.Text := Text;
DrawCaption( Text );
end;
procedure TMyPanel.SetCaption_List
( LCaption_List : TStrings );
begin
SetCaption( LCaption_List.Text );
end;
end.
Vielleicht hat jemand mal etwas Zeit und gibt mir einen Tip wie man da Alignment
noch einbauen kann. Zentrieren fehlt mir vor allem.
Grüße zur Teatime // Martin