AGB  ·  Datenschutz  ·  Impressum  







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

Listboxitem zentrieren?

Ein Thema von Mattze · begonnen am 7. Jul 2014 · letzter Beitrag vom 11. Jul 2014
Antwort Antwort
Seite 1 von 2  1 2      
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#1

Listboxitem zentrieren?

  Alt 7. Jul 2014, 14:31
Hallo,

wie zentriert man einen Listboxeintrag bzgl. clientwidth der Listbox?
Nicht grinsen!!! Das wäre recht einfach, wenn man nur einmal canvas.textout hätte.
Aber:
items[index] sei irgendwie zerlegt in s1, s2 und s3.
Und zwar erst in DrawItem!
(items[index]:=s1+s2+s3
Alle diese Teile werden zwar auf der gleichen Zeile, aber eben unterschiedlich formatiert ausgegeben.
(Anderer canvas.font, anderer canvas.brush, Leerzeichen dazwischen usw.)
Also hat man nicht einen kompakten String und deshalb die Ausgabelänge, sondern 3 mal canvas.textout.
Man kennt die Ausgabelänge nicht, bevor man das alles ausgegeben hat.
Wie das dann zentrieren?
Mir fehlt da die Idee.
Evtl. erst auf eine Bitmap zeichnen, dann hat man die Gesamtlänge. Die richtige Position auf der Listbox setzen und zuletzt die Bitmap auf die Listbox schieben
oder alles dort neu hinzeichnen? Was wäre besser?

Gruß
Mattze
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Listboxitem zentrieren?

  Alt 7. Jul 2014, 14:34
Eine anderes Control verwenden?
Markus Kinzler
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#3

AW: Listboxitem zentrieren?

  Alt 7. Jul 2014, 15:34
Hallo,

diese Variante steht leider nicht zur Diskussion!

Sonst noch irgendwelche Vorschläge?

Gruß
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Listboxitem zentrieren?

  Alt 7. Jul 2014, 15:46
Meiner Meinung nach weißt du vor den einzelnen Textouts sehr wohl wie breit der einzelne Textout wird, denn du musst ja auch die anderen beiden Textouts richtig links anfangen lassen. Also kannst doch dann von der Summe der Breiten die Mitte finden, oder nicht?
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Listboxitem zentrieren?

  Alt 7. Jul 2014, 16:00
Das richtige Stchwort ist wohl Textwidth und/oder Textrect Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#6

AW: Listboxitem zentrieren?

  Alt 7. Jul 2014, 16:23
Hallo,

vielen Dank für die Antworten.
Das ist alles richtig! Im Prinzip!
Da kann bloß zwischen s1, s2 und s3 noch eine verschiedene Anzahl von "leeren Pixeln" stehen. Im Grunde ein Tabulator, der eben durchaus auch verschieden sein kann.
Aber Ihr gebt mir da einen Gedanken ein. Vielleicht geht es doch mit den "normalen" Sachen (Textwidth usw.).
Wird nur eine elende Rechnerei und ob das nicht zuviel Zeit kostet.
Nun, schaun mer mal...

Gruß
Mattze

PS: Ich bin immer noch bei der Idee, das vorher auf eine Bitmap zu zeichnen und dann nur entsprechen zu kopieren.
Mal sehen...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Listboxitem zentrieren?

  Alt 7. Jul 2014, 16:31
Nein, das ist kein Tabulator.
In der List-Ansicht ist das ein Grid, nur daß man die Spaltentrennung nicht immer sieht.

Das sind halt mehrere "getrennte" Spalten, weswegen der Vorschlag mit einer "passenden" Komponente schon der Richtigere war.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#8

AW: Listboxitem zentrieren?

  Alt 7. Jul 2014, 18:02
Hallo himitsu,

bitte nicht mehr hineininterpretieren als ist.
Es geht wirklich um eine Listbox mit Columnen:=0!
Und EINEN String, der eben zur Laufzeit so aufgeteilt wird, dass irgendwo dazwischen einige Leerzeichen (oder eben mehrere verschiedene Tabulatoren - siehe bei den Schweizern) eingebaut werden.
Das kann bei jedem Listbox.item ganz woanders sein.

Gruß
Mattze
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Listboxitem zentrieren?

  Alt 7. Jul 2014, 18:21
Ups, hast Recht.

Ich war irgendwie auf 'nem ListView gekommen, da eine ListBox ja eigentlich nur eine Spalte hat und ich garnicht erst auf die Idee gekommen bin da würde jemand mehrere Spalten reinmachen.


Nja, wenn mehrere Formate, dann mußt du eben jedes Textstück einzeln berechnen müssen (je Font-Style).
Die Text-Widths werden dann zusammengerechnet, der Anfang für die Zentrierung berechnet und dann jedes Stück ab da einzeln gezeichnet, was doch eh nicht anders zu machen ist.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#10

AW: Listboxitem zentrieren?

  Alt 8. Jul 2014, 07:54
Hallo himitsu,

eben! Eklige Rechnung!
Dazu kommt noch, dass einige Zeichen vor dem Ausschreiben entfernt oder dazugefügt werden und noch mehr.
Eine irre Sache, da die tatsächlich "Ausgabelänge" zu ermitteln!
Ob das vom Zeitbedarf noch sinnvoll wird oder die Listbox da zu langsam wird?!

Gruß
Mattze
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:03 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