Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Zeilenumbruch der Caption von TabSheet's (https://www.delphipraxis.net/37467-zeilenumbruch-der-caption-von-tabsheets.html)

Alex_ITA01 6. Jan 2005 10:08


Zeilenumbruch der Caption von TabSheet's
 
Hallo erstmal,
ich habe ein PageControl mit mehreren TabSheets.Diese sind alle links ausgerichtet (also an der linken Seite des PageControls). Bekomme ich es irgendwie hin, wenn ich Caption mit irgendwas fülle (vom TabSheet) das der Text nicht vertikal sondern horizontal geschrieben wird? Wenn nicht, geht es irgendwie, dass ich wenigstens ein Zeilenumbruch in der "vertikalen" Caption hinbekomme?

So gehts nämlich nicht:
Delphi-Quellcode:
TS_Test.Caption := 'Test' + #10#13 + 'Tester';
MFg Alex

Shaman 6. Jan 2005 10:44

Re: Zeilenumbruch der Caption von TabSheet's
 
Hoi

Also wenn überhaupt, muss es #13#10 heissen...

Gruss
Shaman

Alex_ITA01 6. Jan 2005 10:49

Re: Zeilenumbruch der Caption von TabSheet's
 
danke für den Tip aber es geht auch so nicht : #13#10

Ich hoffe jemand kann mir dann helfen...
MFG Alex

Sharky 6. Jan 2005 10:59

Re: Zeilenumbruch der Caption von TabSheet's
 
Hai Alex,

da wirst Du wohl selber den Text zeichnen müssen. Hier mal ein Beispiel
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  PageControl1.OwnerDraw := True;
  Pagecontrol1.TabHeight := 30;
end;

procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const Rect: TRect; Active: Boolean);
const
  tab_caption : Array[0..2] of String = ('blubb # miau','hallo','foo # bar');
var
  sl : TStringList;
  ndx : Integer;
  x_pos : Integer;
  y_pos : Integer;
begin
  sl := TStringList.Create;
  try
    sl.Delimiter := '#'; // Zeichen für den "Zeilenumbruch"
    sl.DelimitedText := tab_caption[tabIndex]; // Mit der TStringList aufteilen
    x_pos := rect.left + 2; // Linke Textposition
    for ndx := 0 to Pred(sl.Count) do
    begin
      y_pos := rect.Top + 2 + ((pagecontrol1.Font.Size + 5) * ndx); //Position von oben berechnen
      PageControl1.Canvas.TextOut(x_pos,y_pos,sl.Strings[ndx]); // Text ausgeben
    end;
  finally
    sl.Free;
  end;
end;

DP-Maintenance 6. Jan 2005 11:01

DP-Maintenance
 
Dieses Thema wurde von "Sharky" von "Programmieren allgemein" nach "VCL-Komponenten und Controls" verschoben.
Und ab zu VCL. Lest doch bitte mal die Beschreibung der Sparten ;-)

Alex_ITA01 6. Jan 2005 11:10

Re: Zeilenumbruch der Caption von TabSheet's
 
sorry für die falsche Sparte...

Es gibt allerdings ein kleines Problem an dem Beispiel von dir.
Ich habe 4TabSheets und will nur im 4ten ein Text als Caption festlegen (alle anderen drei enthalten kleine Bilder...). Wenn ich OwnerDraw auf True setze sind die Bilder leider auch weg und das PageControl1DrawTab-Event wird nie ausgelöst wenn OwnerDraw nicht true ist.
Gibts da eine andere Lösung oder wie kann ich die Bilder trotzdem darstellen?

MFG Alex

Sharky 6. Jan 2005 11:23

Re: Zeilenumbruch der Caption von TabSheet's
 
Hai Alex,

Du musst halt auch die Bilder selber zeichnen :stupid:

Diese Zeile sollte Dir helfen :arrow:
Delphi-Quellcode:
PageControl1.Images.Draw(control.Canvas,rect.Left+1,rect.Top+5,tabindex);

Alex_ITA01 6. Jan 2005 11:31

Re: Zeilenumbruch der Caption von TabSheet's
 
Danke schön. Hat super geklappt :-)

MFG Alex

Sharky 6. Jan 2005 11:33

Re: Zeilenumbruch der Caption von TabSheet's
 
Zitat:

Zitat von Alex_ITA01
Danke schön. Hat super geklappt ...

Freut mich :-D
Wenn Du aber nur auf einem Tab eine Caption ausgibst würde ich nicht mit einer StringList und einem Array arbeiten. Da reicht ja eine If-Abfrage und zwei Zeilen für das TextOut.

Alex_ITA01 6. Jan 2005 14:10

Re: Zeilenumbruch der Caption von TabSheet's
 
Habe ich auch schon so geändert wie du es meinst. Es ist aber immer besser, wenn man auch die "ausführliche" Variante versteht (abändern kann man schnell *g*).

MFG Alex


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:26 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