![]() |
TPanel mit mehrzeiligem Text ?
Moin, moin
Welche Routine muß ich überschreiben um eine TPanel - Komponente mit mehrzeiligem Text zu versehen. Heute morgen habe ich mich in der VCL regelrecht verlaufen.... :? Grüße // Martin |
Re: TPanel mit mehrzeiligem Text ?
Gar keine. Füge einen Zeilenumbruch mit #13#10 ein. Oder soll das was wie eine Listbox werden?
|
Re: TPanel mit mehrzeiligem Text ?
Hi Luckie,
also bei Buttons funktioniert das bei mir auch einwandfrei mit Deinem Trick. Meine Panels weigern sich beharlich und zeigen nur die erste Zeile an. Möchte aber vermeiden da überall noch Labels drauf zu kleben. Irgendwas ist bei Dir offensichtlich anders ?1? Grüße aus dem sonnigen Hannover // Martin |
Re: TPanel mit mehrzeiligem Text ?
Hm, nein geht bei mir auch nicht. Ich dachte nur, es würde genauso gehen wie bei Labels.
|
Re: TPanel mit mehrzeiligem Text ?
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:
Vielleicht hat jemand mal etwas Zeit und gibt mir einen Tip wie man da Alignment 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. noch einbauen kann. Zentrieren fehlt mir vor allem. Grüße zur Teatime // Martin |
Re: TPanel mit mehrzeiligem Text ?
Liste der Anhänge anzeigen (Anzahl: 1)
Moin!
Das Thema fand ich interessant und habe mal schnell was fertig gemacht - siehe Anhang Die Kompo liegt dann demnächst auf meiner HP... /EDIT: Anhang geändert! MfG Muetze1 |
Re: TPanel mit mehrzeiligem Text ?
Moin Muetze1,
Gefällt mir! Das ist zwar nur eine kleine Komponente, aber die spart massig Labels und bisher habe ich im SourceCode auch noch keine in den üblichen verdächtigen Seiten gesehen (Neuland !) Das mit dem zentrieren des Rect scheint auch der einzige Weg zu sein den Text vertikal zu zentrieren. Den DrawText kann vertikal nur zentrieren wenn das Flag DT_SingleLine gesetzte ist (so habe ich das jedenfalls verstanden). Viele Grüße // Martin |
Re: TPanel mit mehrzeiligem Text ?
Moin!
Da die alte Caption beim ändern des Alignments wieder zum Vorschein kam, habe ich die Komponente nochmal erweitert und eine neue Property CaptionAlignment hinzugefügt. Damit kann man jetzt die Lage der Caption im Panel festlegen. Neuer Source im obigen Post... MfG Muetze1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz