Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Listbox Eintäge in TLabel anzeigen. (https://www.delphipraxis.net/125660-listbox-eintaege-tlabel-anzeigen.html)

thiagojonas 9. Dez 2008 18:29


Listbox Eintäge in TLabel anzeigen.
 
Hallo, ich möchte gerne die werte einer listbox in einem Label anzeigen lassen.

Z.B. Listboxeiträge

Affe
Hund
Katze


Dann
Delphi-Quellcode:
Label.Caption := Listbox.Items[i] (for-Schleife).
Ich möchte aber gerne, dass die alle untereinander stehen.
Also irdendwie so:
Delphi-Quellcode:
Label.Caption := Listbox.Items[0] +#13#10 + Listbox.Items[1] +#13#10 + Listbox.Items[2]+ etc.
Wie kann ich das machen?

Geht es, dass man dann für die einzelnen Werte nochwas hinzufügt, z.B "87".
Dann würde das im Label so aussehen.

Affe 87
Hund 87
Katze 87

Danke im voraus :-D

Fussball-Robby 9. Dez 2008 18:32

Re: Listbox Eintäge in TLabel anzeigen.
 
Delphi-Quellcode:
Label1.Caption := ListBox1.Items.Text;
So hast du die Einträge der ListBox untereinander im Label. Wenn du dahinter etwas einfügen möchtest, könntest du per for-Schleife an die einzelnen Items der ListBox den gewünschten String anhängen.

DeddyH 9. Dez 2008 18:33

Re: Listbox Eintäge in TLabel anzeigen.
 
Wenn Du im Label AutoSize auf false und Wordbreak auf true stellst, hast Du die Lösung ja (fast) schon selbst gepostet.

[edit] Habe gerade festgestellt, dass die genannten Einstellungen noch nicht einmal nötig sind. [/edit]

thiagojonas 9. Dez 2008 18:42

Re: Listbox Eintäge in TLabel anzeigen.
 
Zitat:

Zitat von Fussball-Robby
Delphi-Quellcode:
Label1.Caption := ListBox1.Items.Text;
So hast du die Einträge der ListBox untereinander im Label. Wenn du dahinter etwas einfügen möchtest, könntest du per for-Schleife an die einzelnen Items der ListBox den gewünschten String anhängen.

Also eigentlich so!?

Delphi-Quellcode:
for i := listbox.items.count -1 to 0 do
begin
listbox.items.text[i] + '87';
end;

DeddyH 9. Dez 2008 18:46

Re: Listbox Eintäge in TLabel anzeigen.
 
Zitat:

Delphi-Quellcode:
for i := listbox.items.count -1 to 0 do
begin
listbox.items.text[i] + '87';
end;

*Ouch*. Das ist weder eine Anweisung noch eine Zuweisung. Wo willst Du die 87 denn anhängen, in den Items der Listbox oder bei der Anzeige im Label? Und soll die Schleife vorwärts oder rückwärts durch die Items laufen? So wie oben wird das jedenfalls nix.

Fussball-Robby 9. Dez 2008 18:46

Re: Listbox Eintäge in TLabel anzeigen.
 
Zitat:

Zitat von thiagojonas
Delphi-Quellcode:
for i := listbox.items.count -1 to 0 do
begin
listbox.items.text[i] + '87';
end;

Nein, so weist du ja nichts zu, es müsste dann so aussehen:
Delphi-Quellcode:
Listbox1.Items[i] := Listbox.Items[i] + '87';
Du kannst das '87' aber auch erst bei der Ausgabe anhängen:
Delphi-Quellcode:
var
  i: Integer;
begin
  Label1.Caption := '';//Label leeren
  for i := 0 to Pred(Listbox1.Items.Count) do//alle Einträge durchgehen
    Label1.Caption := Label1.Caption + Listbox1.Items[i] + ' 87' + sLineBreak;
    //aktuellen Eintrag, die '87' und einen Zeilenumbruch anhängen
end;

thiagojonas 9. Dez 2008 18:47

Re: Listbox Eintäge in TLabel anzeigen.
 
Quatsch, was ich da geschrieben habe.
Delphi-Quellcode:
listbox.items.text + '87'
klappt schon mal, nur halt nicht der der selber reihe, sonder immer eine drunter. :gruebel:

thiagojonas 9. Dez 2008 18:56

Re: Listbox Eintäge in TLabel anzeigen.
 
Zitat:

var
i: Integer;
begin
Label1.Caption := '';//Label leeren
for i := 0 to Pred(Listbox1.Items.Count) do//alle Einträge durchgehen
Label1.Caption := Label1.Caption + Listbox1.Items[i] + ' 87' + sLineBreak;
//aktuellen Eintrag, die '87' und einen Zeilenumbruch anhängen
end;
Leider funktioniert das nicht, ganz, es werden nicht alle einträge in der listbox gezeigt, sondern nur den eintrag, der zuletzt hinzugefügt wurde. :gruebel:

DeddyH 9. Dez 2008 18:59

Re: Listbox Eintäge in TLabel anzeigen.
 
Zieh das Label mal höher, vielleicht ist es nur zu klein.

thiagojonas 9. Dez 2008 19:01

Re: Listbox Eintäge in TLabel anzeigen.
 
Ne daran liegt es nicht.
Hier mein Code, vielleicht ist da ein Fehler?

Delphi-Quellcode:
procedure TForm1.add_btnClick(Sender: TObject);
var anzahl : integer;
begin
for anzahl := 0 to Pred(lehrer_list.Items.Count) do
if lehrer_cb.ItemIndex = -1 then
begin
  Application.MessageBox('Wählen Sie bitte eine betroffene Lehrkraft aus!', 'Fehler', MB_ICONINFORMATION or MB_OK);
end;

  if (lehrer_cb.ItemIndex >= 0)then
begin
  lehrer_list.AddItem(lehrer_cb.Text,lehrer_list);
  lehrer.Caption := lehrer_list.Items[anzahl] + ' : _______________' + sLineBreak;
  end;
end;

Matze 9. Dez 2008 19:22

Re: Listbox Eintäge in TLabel anzeigen.
 
Hallo,

ich habe mir das nicht alles durchgelesen, aber eines ist mir aufgefallen: Du greifst außerhalb der Schleife auf die Laufvariable "anzahl" zu. Das würde ich nicht unbedingt machen, falls es beabsichtigt ist.

Grüße

Fussball-Robby 9. Dez 2008 19:27

Re: Listbox Eintäge in TLabel anzeigen.
 
Da fehlt ganz einfach ein begin..end. Denn jetzt wird nur der Befehl, der unmittelbar nach dem do steht, in der Schlaife ausgeführt. Der Teil, wo die Items ans Label angehängt werden, wird erst nach der Schleife ausgeführt, und dann hat die Zählvariable den Wert des höchsten Index, weshalb nur das letzte Item angehängt wird. Also: Nach dem do ein begin, und am ende ein end;

thiagojonas 9. Dez 2008 21:49

Re: Listbox Eintäge in TLabel anzeigen.
 
habs jetzt so und es klappt nicht :gruebel:

Delphi-Quellcode:
procedure TForm1.add_btnClick(Sender: TObject);
var anzahl : integer;
begin
if lehrer_cb.ItemIndex = -1 then
begin
  Application.MessageBox('Wählen Sie bitte eine betroffene Lehrkraft aus!', 'Fehler', MB_ICONINFORMATION or MB_OK);
end;
if (lehrer_cb.ItemIndex >= 0)then
begin
  lehrer_list.AddItem(lehrer_cb.Text,lehrer_list);
  for anzahl := 0 to Pred(lehrer_list.Items.Count) do
begin
  lehrer.Caption := lehrer_list.Items[anzahl] + ' : _______________' + #13#10;
      end;
    end;
  end;
Wofür ist denn das eigentlich?

Delphi-Quellcode:
Pred(lehrer_list.Items.Count)

soulies 10. Dez 2008 06:40

Re: Listbox Eintäge in TLabel anzeigen.
 
hoi,

Zitat:

Wofür ist denn das eigentlich?

Delphi-Quellcode:
Pred(lehrer_list.Items.Count)

Die Funktion gibt den Vorgänger des Arguments zurück.

Du ersetzt damit 'lehrer_list.Items.Count-1' .

zum code:

lehrer_list ist eine listbox ?

Delphi-Quellcode:
begin
  if (lehrer_cb.ItemIndex < 0) then
    begin
      Application.MessageBox('Wählen Sie bitte eine betroffene Lehrkraft aus!', 'Fehler', MB_ICONINFORMATION or MB_OK);
    end
  else // ItemIndex ist damit >= 0
    begin
      lehrer_list.Items.Add(lehrer_cb.Text);
      lehrer.Caption := EmptyStr ;
      for anzahl := 0 to Pred(lehrer_list.Items.Count) do
      begin
        lehrer.Caption := lehrer.Caption + lehrer_list.Items.Strings[anzahl] + ' : _______________' + #13#10;
      end;
    end;
end;
so müsste es gehen ;)


cya

thiagojonas 10. Dez 2008 11:05

Re: Listbox Eintäge in TLabel anzeigen.
 
Jawohl, super :thumb: :thumb:
Vielen Dank.

Wo wir grad beim Thema sind:
Ich möchte dann dieses Label ausdrucken. Das Problem ist, das Canvas '#13#10' ignoriert, das heißt die Werte werden intereinander bis über das Blatt hinaus ausgedruckt.
Weiß jemand wie man das lösen könnte?

Danke

DeddyH 10. Dez 2008 11:08

Re: Listbox Eintäge in TLabel anzeigen.
 
Neue Frage, neuer Thread bitte.

thiagojonas 10. Dez 2008 11:16

Re: Listbox Eintäge in TLabel anzeigen.
 
Okay! :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 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