Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - ListBox Items mit gleichem Abstand einrücken?


HiteHower - Fr 08.07.05 09:06
Titel: ListBox Items mit gleichem Abstand einrücken?
Ich habe ne Listbox wo ich Anrede, Name und Nummer eingeben kann in Edits und dann in ne Listbox einfüge! Mit Anrede und Name nebeneinander geht das, dass bleibt ja gleich aber der Name ist immer unterschiedlich lang dadurch verschiebt sich die Nummer dann immer weiter nach rechts oder links als die die drüber steht! Wie bekomme ich das ordentlich eingerückt? :?:

Mfg HiteHower


Moderiert von user profile iconGausi: Topic aus Dateizugriff verschoben am Fr 08.07.2005 um 09:52


ManuelGS - Fr 08.07.05 11:47

Hi!
Deine Frage ist etwas seltsam.
Wenn ich dich richtig verstanden habe, dann hast du nur das Problem, dass die einzelnen Zeichen unterschiedlich groß sind. Da gibt es eine einfache Abhilfe: Nimm eine Schriftart, bei der alle Zeichen gleichgroß sind, z.B. Courier New.
Mit dem Einrücken würde ich mir nicht allzuviel Streß machen - einfach Leerzeichen benutzen.

Gruß, Manuel


HiteHower - Fr 08.07.05 11:52

Ja na klar! Das habe ich ja und bei VB kann mann das ja machen ganz einfach sogar aber bei Delphi!?

zB:
Herr____Bla____03857777
Frau____haollo____478797

und ich wollte es so machen das dass so aussieht

Herr____Bla_______03857777
Frau____haollo____478797

(unterstriche wären leerzeichen)

jetzt sind die abstände zwischen nummer und name ja unterschiedlich, vorne die anrede bleibt ja gleich!
Kannst Du mir da helfen?


Lannes - Fr 08.07.05 12:09

Hallo,

nimm doch ein StringGrid oder eine ListView dafür, dann kannst Du die Werte sauber in Spalten anzeigen.


HiteHower - Fr 08.07.05 12:15

Hast Du vielleicht mal nen kleines Beispiel für mich?
Ich mache Delphi erst seit 3 Tagen aufgrund meines Schulpraktikas und hier hat keiner Zeit um mir vielleicht mal was zu zeigen! Bisher alles selbst rausgefunden aber die Listview ist dann doch sehr komplex oder nicht!?


Lannes - Fr 08.07.05 15:06

Hallo,

die Daten einer ListView sind in der folgenden Form angeordnet/zugeordnet:

Quelltext
1:
2:
3:
4:
___________| Spalte 1 |  Spalte 2   |  Spalte 3   | 
Items[0] > | Caption  | SubItems[0] | SubItems[1] | 
Items[1] > | Caption  | SubItems[0] | SubItems[1] | 
Items[2] > | Caption  | SubItems[0] | SubItems[1] |

Die Spalten legst du im Objektinspektor bei der Eigenschaft Columns an.
Dann noch folgende Einstellungen vornehmen:
•ShowColumnHeaders auf True,
•ViewStyle auf vsReport,
•HideSelection auf False,
•RowSelect auf True.

Hier ein einfaches Beispiel:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    ListView1: TListView;
    EditAnrede: TEdit;
    EditName: TEdit;
    EditNummer: TEdit;
    btnNeu: TButton;
    btnBearbeiten: TButton;
    btnEintragen: TButton;
    btnDel: TButton;
    procedure btnNeuClick(Sender: TObject);
    procedure btnEintragenClick(Sender: TObject);
    procedure btnBearbeitenClick(Sender: TObject);
    procedure btnDelClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}
//*********neue Zeile anlegen**********************
procedure TForm1.btnNeuClick(Sender: TObject);
var aItem : TListItem;
begin
  aItem := ListView1.Items.Add;
  aItem.Caption := 'neu';
  aItem.SubItems.Add('');//SubItem muss zumindest mit einem Leerstring angelegt werden
  aItem.SubItems.Add('');//sonst gibt es später Zugriffsverletzungen
end;
//*********Daten aus Edit-x in markierte Zeile eintragen******
procedure TForm1.btnEintragenClick(Sender: TObject);
var aItem : TListItem;
begin
  if ListView1.Selected <> nil then
    begin
    aItem := ListView1.Selected;
    aItem.Caption := EditAnrede.Text;
    aItem.SubItems[0] := EditName.Text;
    aItem.SubItems[1] := EditNummer.Text;
    end;
end;
//*********Daten ausmarkierte Zeile  in Edit-x eintragen******
procedure TForm1.btnBearbeitenClick(Sender: TObject);
var aItem : TListItem;
begin
  if ListView1.Selected <> nil then
    begin
    aItem := ListView1.Selected;
    EditAnrede.Text := aItem.Caption;
    EditName.Text := aItem.SubItems[0];
    EditNummer.Text := aItem.SubItems[1];
    end;
end;
//*********markierte Zeile entfernen******
procedure TForm1.btnDelClick(Sender: TObject);
begin
  if ListView1.Selected <> nil then
    ListView1.Items.Delete(ListView1.Selected.Index);
end;

end.