![]() |
Labels vertikal dynamisch einordnen?
Hallo,
ich habe folgendes Problem. Ich möchte 14 Labels vertikal, links am Rand nacheinander einordnen, hier ein Beispiel: Zitat:
Kann man irgendwie die Labels dynamisch bzw. automatisch nacheinander einordnen. Dabei ist es mir sehr wichtig, dass die Labels nicht in EIN String gepackt werden, den ich möchte mit den Label getrennt bestimmte Ereignisse erledigen. Danke! |
AW: Labels vertikal dynamisch einordnen?
Du könntest eine Funktion nutzen, der Du die Label übergibst und die Y automatisch incrementiert.
Etwa so:
Delphi-Quellcode:
Dann lassen sich leicht Anweisungen dazwischen fügen.
function ShowLabel(aLabel: TLabel; var Y: Integer);
begin aLabel.Top := Y; ... Inc(Y, 16); end; ... Y := 0; ShowLabel(LabelA, Y); ShowLabel(LabelB, Y); ... |
AW: Labels vertikal dynamisch einordnen?
Align (alTop) kennst du schon?
Ansonsten gäbe es in neueren Delphis, oder als Fremdkomponente, auch Komponenten/Container, welche sowas machen. > ![]() ![]() Oder du mußt einfach bei allen Kompoenten das OnResize abfangen und die Positionen neu berechnen. (machen die Container auch nicht anders) Oder man trennt die GUI von der Logik. > Da kann man im Hintergrund die Strings gern einzeln verwalten, aber in der Darstellung ist alles eine große Komponente (Edit, RichEdit, WebBrowser, ....). |
AW: Labels vertikal dynamisch einordnen?
Eventuell das hier. Ist alles mit einem Label lösbar:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var s1, s2, s3, s4, s5, s6: String; //usw. bis s14 i: Integer; FormStr: String; begin Label1.WordWrap := True; Label1.Width := 500; s1 := 'Titel: Mark Mascher'; s2 := ''; s3 := 'Text: Hier kommt ein langer,'; s4 := 'langer Text... usw.'; s5 := ''; s6 := 'Preis: 14,00€'; FormStr := ''; for i := 1 to 6 do FormStr := FormStr + '%s ' + ^j; //To-Wert anpassen an Anzahl Strings Label1.Caption := Format(FormStr, [s1, s2, s3, s4, s5, s6]); end; |
AW: Labels vertikal dynamisch einordnen?
Delphi-Quellcode:
'%s ' + ^j
Und das soll jemand verstehen? J = 10. Buchstabe = #10, also
Delphi-Quellcode:
oder
'%s' + #10
Delphi-Quellcode:
(+ ist hier nicht nöig)
'%s'#10
Wobei es im Windows ja eigentlich #13#10 heißt :zwinker:, oder einfach ![]() PS: ![]() ![]()
Delphi-Quellcode:
Label1.Caption := Format(DupeString('%s' + sLineBreak, 6), [s1, s2, s3, s4, s5, s6]);
// oder halt Label1.Caption := s1 + sLineBreak + s2 + sLineBreak + s3 + sLineBreak + s4 + sLineBreak + s5 + sLineBreak + s6; |
AW: Labels vertikal dynamisch einordnen?
^j ist alter Ascii-Code Steuercode LF (Line Feed / Zeilenvorschub). Es ist nicht nur einfach #10. Wikipedia schreibt dazu (bitte beachten was es unter Windows bedeutet):
Zitat:
|
AW: Labels vertikal dynamisch einordnen?
Liste der Anhänge anzeigen (Anzahl: 1)
Nicht nur unter Delphi.
Windows und Delphi (TStringList, ReadLn usw.) verstehen zwar fast immer alle möglichen Kombinationen (Windwos #13#10, Unix #10 und Mac #13), aber eigentlich ist im Windows weitgehenst CRLF üblich. Die MEMO's normalisieren das auch auf #13#10. (Nur die aktuelle RichEdit-Version nutzt komischer Weise die #13, welches im Delphi aber teilweise versucht wurde abzufangen, was allerdings nicht gut und vorallem durchgängig gelingt). OK, es wäre schön, wenn es soein Kürzel gäbe, was aber eine "passende" Zeichenfolge liefert, so wie das sLineBreak, was im Code manchmal echt umständlich/häßlich ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:47 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