AGB  ·  Datenschutz  ·  Impressum  







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

Text in Listbox zentrieren

Offene Frage von "Volker Z."
Ein Thema von schuetzejanett · begonnen am 6. Apr 2006 · letzter Beitrag vom 4. Apr 2014
Antwort Antwort
MoziGut

Registriert seit: 4. Feb 2014
21 Beiträge
 
#1

AW: Text in Listbox zentrieren

  Alt 31. Mär 2014, 15:04
auch wenn es schon etwas älter ist, ist der Code auch anwendbar für Mobile Firemonkey Anwendungen?
Bzw. wie kann ich bei einer MF-Anwendung den Text in einer Listbox zentrieren?

PS: Ich nutzte Delphi XE5, es ist eine Mobile Firemonkey Anwendung und es ist für Android!
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Text in Listbox zentrieren

  Alt 31. Mär 2014, 16:49
Ich kenne Firemonkey nicht, aber hat die ListBox eine DrawItem? DrawItem bedeutet, dass du das Item selbst zeichnest.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.419 Beiträge
 
Delphi 12 Athens
 
#3

AW: Text in Listbox zentrieren

  Alt 31. Mär 2014, 17:21
MSDN-Library durchsuchenDrawText => WinAPI => Antwort: Nein
Ebenso bei MSDN-Library durchsuchenSetWindowLong.


Ein Event ala OnDrawItem dürfte/könnte es aber auch in der FireMonkey-ListBox geben, so das du es selber zeichnen könntest,
falls es dort nicht doch eine Möglichkeit gibt, den ListItems eine entsprechende Formatierungsoption mitzugeben.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (31. Mär 2014 um 17:25 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#4

AW: Text in Listbox zentrieren

  Alt 31. Mär 2014, 18:37
Hier ein Beispiel, kannst es testen:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  with ListBox1 do
    Style := lbOwnerDrawFixed;
end;

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
  LB: TListBox;
  dTop, dLeft: Integer;
  Size: TSize;
begin
  if not (Control is TListBox) then Exit;
  LB := Control as TListbox;

  Size := LB.Canvas.TextExtent(LB.Items[Index]);
  dTop := (LB.ItemHeight - Size.cy) div 2;
  dLeft := ((Rect.Right - Rect.Left) - Size.cx) div 2;

  LB.Canvas.TextRect(Rect, Rect.Left + 2 + dLeft, Rect.Top + dTop, LB.Items[Index]);
end;
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#5

AW: Text in Listbox zentrieren

  Alt 31. Mär 2014, 23:53
Hallo,

Zitat:
[...] Bzw. wie kann ich bei einer MF-Anwendung den Text in einer Listbox zentrieren?
Hast Du Dir schon mal die Eigenschaft TextAlign*) eines TListBoxItem angesehen? Oder gibt es einen besonderen Grund den Text selbst zu zeichnen?

Gruß

*) Die Angabe in der Hilfe taCenter sei der Defaultwert, ist für XE4 - vermutlich auch für XE5 - falsch (Default ist taLeading).
Volker Zeller
  Mit Zitat antworten Zitat
MoziGut

Registriert seit: 4. Feb 2014
21 Beiträge
 
#6

AW: Text in Listbox zentrieren

  Alt 1. Apr 2014, 09:22
@Popov: Sicher das der Code auch für MF-Anwendungen funktioniert?
@Volker Z.: Wenn es möglich ist ohne selber zu zeichnen/schreiben, gerne. Allerdings funktioniert TTextControl für Listboxen nicht.
Und wenn ich den TextAlign für ein Item umstelle, wird das doch noch lange nicht auch für die folgenden Items übernommen!?!
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#7

AW: Text in Listbox zentrieren

  Alt 1. Apr 2014, 11:59
@Popov: Sicher das der Code auch für MF-Anwendungen funktioniert?
Das weiß ich nicht, aber falls da ItemDraw ist, warum nicht? Ist nur zeichnen auf Canvas.
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#8

AW: Text in Listbox zentrieren

  Alt 4. Apr 2014, 00:28
Hallo,

Zitat:
[...] Allerdings funktioniert TTextControl für Listboxen nicht. [...]
Was meinst Du mit: funktioniert nicht? TTextControl ist erst mal eine Klasse. Ein TListBoxItem ist eine abgeleitete Klasse von TTextControl. In eine Instanz von TListBox kann man - u. a. - Einträge vom Typ TListBoxItem einfügen und sich diese in der Listbox anzeigen lassen (zumindest unter XE4, wahrscheinlich auch unter XE5); was sollte daran nicht funktionieren?

Zitat:
Und wenn ich den TextAlign für ein Item umstelle, wird das doch noch lange nicht auch für die folgenden Items übernommen!?!
Ja, das stimmt schon. Aber: Was man mit einem Item machen kann, geht auch mit zwei, drei, ..., vielen oder gar mit allen.
Wenn ich obige Aussage richtig interpretiere, dann schein es so zu sein, dass Du zumindest einen Listeneintrag zentriert hinbekommst; oder liege ich da falsch?

Zitat:
[...] Hat noch jemand eine Idee?
Vielleicht beschreibst Du mal Dein Problem genauer, also: das sollte am Ende bei rauskommen, dieses und jenes habe ich bereits versucht (siehe Sourcecode), leider sieht es noch nicht so aus wie ich möchte (siehe Screenshot), hat jemand eine Idee, die mir weiterhelfen könnte?

Gruß
Volker Zeller
  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 16:54 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