AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TPanel mit mehrzeiligem Text ?

Ein Thema von mschaefer · begonnen am 3. Mai 2004 · letzter Beitrag vom 3. Mai 2004
Antwort Antwort
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#1

TPanel mit mehrzeiligem Text ?

  Alt 3. Mai 2004, 10:05
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
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: TPanel mit mehrzeiligem Text ?

  Alt 3. Mai 2004, 10:09
Gar keine. Füge einen Zeilenumbruch mit #13#10 ein. Oder soll das was wie eine Listbox werden?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#3

Re: TPanel mit mehrzeiligem Text ?

  Alt 3. Mai 2004, 10:30
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
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: TPanel mit mehrzeiligem Text ?

  Alt 3. Mai 2004, 10:50
Hm, nein geht bei mir auch nicht. Ich dachte nur, es würde genauso gehen wie bei Labels.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#5

Re: TPanel mit mehrzeiligem Text ?

  Alt 3. Mai 2004, 14:09
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
Martin Schaefer
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: TPanel mit mehrzeiligem Text ?

  Alt 3. Mai 2004, 16:25
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
Angehängte Dateien
Dateityp: pas multilinepanel.pas (5,3 KB, 27x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#7

Re: TPanel mit mehrzeiligem Text ?

  Alt 3. Mai 2004, 17:12
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
Martin Schaefer
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: TPanel mit mehrzeiligem Text ?

  Alt 3. Mai 2004, 18:20
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz