AGB  ·  Datenschutz  ·  Impressum  







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

Linien Ausrichtung

Ein Thema von thiagojonas · begonnen am 9. Mai 2009 · letzter Beitrag vom 9. Mai 2009
Antwort Antwort
Seite 1 von 2  1 2      
thiagojonas

Registriert seit: 31. Aug 2008
Ort: Wolfenbüttel
338 Beiträge
 
#1

Linien Ausrichtung

  Alt 9. Mai 2009, 10:26
Hallo Leute,
ich habe eine kniffliges Problem.

1. Ich habe eine Listbox mit Namen:
2. Alle Namen die sich in der Listbox befinden, weise ich einer Varibalen zu und hänge noch ein ': ______' hinzu;

Delphi-Quellcode:
for z := 0 to Pred(Listbox.Items.Count) do
      begin
       Variable:= Variable+ Listbox.Items.Strings[z]+': ______' + #13#10;
      end;
So das Problem ist jetzt natürlich, dass die Namen in der Listbox unterschiedlich lang sind, d.h.
dass die Ausgabe wie folgt aussehen könnte:

Zitat:
Peter : ______
Alexander : ______
Carolina : ______
Hans : ______
Mein Ziel ist es jetzt die Formatierung so hinzukriegen, dass ': ______' genau übereinander stehen.


Mein Ansatz:
Ich habe mir überlegt, dass wenn ich die Länge des längsten Namen in der Listbox in mm oder so berechne lasse und anschließend nur die Diefferenz zu den anderen Namen berechne und diese anschließen addiere, hätte ich das die X-Position für ': ______' erhalten.

Kann man das so in der Art machen?

Da ich keine Schrift benutze wo alles Ziffern gleich breit sind, und ich es auch nicht benutzen möchte kann ich diesen Weg schonmal ausschließen

Danke im voraus
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: Linien Ausrichtung

  Alt 9. Mai 2009, 10:43
Wenn du Informationen spaltenweise darstellen willst, solltest du evtl. über eine Listview im reportmodus oder ein Stringgrid nachdenken

Ansonsten: Längsten Eintrag suchen, länge merken und bei allen Einträgen entsprechend Leerzeichen hinzufügen. Zusätzlich am Ende ein Tabulator einfügen (um die Differenzen der Buchstabenbreiten auszugeleichen). Ist aber nur so ne Überlegung ...
  Mit Zitat antworten Zitat
thiagojonas

Registriert seit: 31. Aug 2008
Ort: Wolfenbüttel
338 Beiträge
 
#3

Re: Linien Ausrichtung

  Alt 9. Mai 2009, 10:52
Zitat:
Wenn du Informationen spaltenweise darstellen willst, solltest du evtl. über eine Listview im reportmodus oder ein Stringgrid nachdenken Wink
Ich möchte das dann via Printer.Canvas Ausdrucken

Wie kann ich den Längsten Eintrag suchen?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Linien Ausrichtung

  Alt 9. Mai 2009, 10:55
Die Länge in Pixeln eines Eintrages einer Listbox kannst du mit
ListBox1.Canvas.TextWidth(ListBox1.Items[<Index>]);
Markus Kinzler
  Mit Zitat antworten Zitat
thiagojonas

Registriert seit: 31. Aug 2008
Ort: Wolfenbüttel
338 Beiträge
 
#5

Re: Linien Ausrichtung

  Alt 9. Mai 2009, 11:04
Also so?

Delphi-Quellcode:
laenge:=0;
for i := 0 to Listbox.Items.Count -1 do
begin
 Variable:= Listbox.items[i];
 if length(Variable)>laenge then
begin
 laenge:=length(s)
 Target:=Variable;
  end;
end;
Variable2:=ListBox1.Canvas.TextWidth(ListBox1.Items[laenge]);;
end;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Linien Ausrichtung

  Alt 9. Mai 2009, 11:06
Eher so
Delphi-Quellcode:
var
    i, b, h: Integer;
    ...
begin
    b := 0;
    for i := 0 to ListBox1.Count - 1 do
    begin
        //Ermittle breitesten String
        h := ListBox1.Canvas.TextWidth(ListBox1.Items[i]);
        if h > b then b := h;
    end;
    ...
end;
Markus Kinzler
  Mit Zitat antworten Zitat
thiagojonas

Registriert seit: 31. Aug 2008
Ort: Wolfenbüttel
338 Beiträge
 
#7

Re: Linien Ausrichtung

  Alt 9. Mai 2009, 11:12
Äh.. Ja klar Danke

Okay und wenn ich dann die Länge habe in Px,kann ich dann ':_________' dahinter setzten?

Also z.B
Längster String hat 20Px
Also setzte ich ':_________' für jeden Wert in der Listbox bei 20px.

Geht das dann so?
Und wenn ja, wie kann ich das ':_________' setzten mit MoveTo?
  Mit Zitat antworten Zitat
thiagojonas

Registriert seit: 31. Aug 2008
Ort: Wolfenbüttel
338 Beiträge
 
#8

Re: Linien Ausrichtung

  Alt 9. Mai 2009, 12:03
Also vielleicht wäre ja eine andere Möglichkeit, dass man die Textbreite des Leerezeichens der Schrift berechnet.
Ich habe jetzt herausgefunden, dass bei der Schriftart 'Calibri' ein Leerzeichen 3Px lang ist.
Kann man daraus was machen?

Wenn ich den längsten Wert habe in der Listbox, dann müsste ich diese Länge mit den Längen der anderen Werte vergeleichen und demetsprechen die Anzahl der Lehrzeichen hinzufügen, aber wie?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Linien Ausrichtung

  Alt 9. Mai 2009, 12:09
Wenn du es sowieso auf einem Canvas ausgeben willst, kannst du es doch gleich pixelgaenau steuern
Markus Kinzler
  Mit Zitat antworten Zitat
thiagojonas

Registriert seit: 31. Aug 2008
Ort: Wolfenbüttel
338 Beiträge
 
#10

Re: Linien Ausrichtung

  Alt 9. Mai 2009, 12:30
Ja da hast du Recht, aber wie ich das anstellen soll weißt du auch nicht, oder?
  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 10:27 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