AGB  ·  Datenschutz  ·  Impressum  







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

Listbox von unten füllen

Ein Thema von der olli · begonnen am 20. Okt 2005 · letzter Beitrag vom 21. Okt 2005
Antwort Antwort
der olli

Registriert seit: 18. Mai 2004
14 Beiträge
 
#1

Listbox von unten füllen

  Alt 20. Okt 2005, 21:40
Hallo,

wir besprechen im Moment im Informatikunterricht den Datentyp "Stapel". Dazu wird ja bekanntlich das neueste Element zu oberst angezeigt - nun hat heute unser Lehrer gesagt, dass es günstig wäre, die Listbox von unten zu füllen (also erstes Element erscheint am Boden, zweites darüber; ohne, dass man, wie normalerweise, das oberste Element erst nach unten verschieben muss, damit das neue eingefügt werden kann) - allerdings wusste er nicht, wie. Da ich auch keine Ahnung habe, frage ich einfach mal in die Runde, ob das zu realisieren ist (mit Delphi 4) und wenn ja, wie? Danke!

Gruß,
Olli
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#2

Re: Listbox von unten füllen

  Alt 20. Okt 2005, 21:44
ich würde einfach das neue nur ganz oben einfügen (weil einfacher)

letztendlich kommt aber dasselbe raus wie du meinst (hoffe ich doch)

dazu musst du folgenden Befehl nutzen:
ListBox1.Items.Insert(0,S); Damit fügst du S an der Position 0 ein, also ganz oben.#

Edit:
Ich würde wenn möglich davon absehen wirklich die Items zu "stapeln" weil du dann mehrere Probleme hast:
erstens müsstest du (um es vernünftig zu machen) komplett das OnPaint überschreiben
zweitens wüsste ich nicht was du machst wenn der Stapel an der "decke" ankommt...Hochscrollen? unten bleiben?

so ist es vielleicht nicht sooo perfekt, aber einfach und völlig ausreichend
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
lizardking

Registriert seit: 2. Sep 2005
76 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Listbox von unten füllen

  Alt 20. Okt 2005, 22:00
Zitat von der olli:
nun hat heute unser Lehrer gesagt, dass es günstig wäre, die Listbox von unten zu füllen (also erstes Element erscheint am Boden, zweites darüber; ohne, dass man, wie normalerweise, das oberste Element erst nach unten verschieben muss, damit das neue eingefügt werden kann) - allerdings wusste er nicht, wie.
Auch wenn das nicht wirklich weiterhilft : Man sollte alle Lehrer in einer Listbox speichern, erstmal vorsichtshalber ein Listbox.Clear ausfuehren und nur Elemente hinzufuegen, bei denen das Property "qualified" auf True gesetzt ist hinzufuegen.

Sorry, fuer sowas hab ich irgendwie kein Verstaendnis. Als Lehrer eine Aufgabe stellen, bei der ich selbst nicht Bescheid weiss ? Naja, Jedem das Seine.
  Mit Zitat antworten Zitat
der olli

Registriert seit: 18. Mai 2004
14 Beiträge
 
#4

Re: Listbox von unten füllen

  Alt 20. Okt 2005, 22:40
Der Lehrer hat es uns ja nicht als Aufgabe gestellt, sondern gesagt, wenn jemand es wüsste, solle er es sagen. Es wäre nicht notwendig, aber er wolle es wissen.
  Mit Zitat antworten Zitat
lizardking

Registriert seit: 2. Sep 2005
76 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Listbox von unten füllen

  Alt 20. Okt 2005, 23:06
Zitat von der olli:
Der Lehrer hat es uns ja nicht als Aufgabe gestellt, sondern gesagt, wenn jemand es wüsste, solle er es sagen. Es wäre nicht notwendig, aber er wolle es wissen.
Ich hab mir jetzt mal ungefaehr 5 Minuten Zeit genommen:

ListBox1.Items.Insert(ListBox1.Items.Count,inttostr(i)); Fuegt den Inhalt von i am Ende und

ListBox1.Items.Insert(0,inttostr(i)); am Anfang einer ListBox ein.

Sowas sollte ein Lehrer auch in messbarer Zeit koennen.
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#6

Re: Listbox von unten füllen

  Alt 20. Okt 2005, 23:33
Hallo,

wie wäre es den damit ,etwas Abwechslung ist ja nicht schlecht am späten Abend
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  ListBox1.Style := lbOwnerDrawFixed;
  ListBox1.IntegralHeight := True;
  ButtonClearClick(self);//damit beim Start gleich alles ok ist
end;

//ListBox mit leeren Zeilen bis zum Ende füllen
procedure TForm1.ButtonClearClick(Sender: TObject);
var z : integer;
begin
  ListBox1.Clear;
  for z := 0 to Round(ListBox1.Height/ListBox1.ItemHeight)-1 do
    ListBox1.Items.Add('');
  //Tag wird zum Nachhalten der beschriebenen Items gebraucht
  ListBox1.Tag := Round(ListBox1.Height/ListBox1.ItemHeight)-1;
end;

procedure TForm1.ButtonEintragClick(Sender: TObject);
begin
  if ListBox1.Tag = 0 then//oben angekommen
    begin
    ListBox1.Items[0] := Edit1.Text;
    ListBox1.Items.Insert(0,'');//leere Zeile oben anlegen für kommende Eintrag
    end
    else
      begin
      ListBox1.Items[ListBox1.Tag] := Edit1.Text;>//nach oben füllen
      ListBox1.Tag := ListBox1.Tag-1;
      end;
end;
//damit man nicht oberhalb der Einträge eine Markierung sieht
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
    if odFocused in State then
      begin
      if Listbox1.Items[Index] = 'then
        Listbox1.Canvas.Brush.Color := Listbox1.Color;
      Listbox1.Canvas.FillRect(Rect);
      Listbox1.Canvas.TextOut(Rect.Left,Rect.Top,Listbox1.Items[Index]);
      if Listbox1.Items[Index] = 'then
        begin
        ListBox1.ItemIndex := -1;
        DrawFocusRect(Listbox1.Canvas.Handle,Rect);//Focusrechteck entfernen
        end;
      end
      else
        begin
        Listbox1.Canvas.FillRect(Rect);
        Listbox1.Canvas.TextOut(Rect.Left,Rect.Top,Listbox1.Items[Index]);
        end;
end;
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Listbox von unten füllen

  Alt 20. Okt 2005, 23:35
@lizardking: du hat das ganze wohl nicht richtig verstanden. Es geht nicht darum Items am Anfang einzufügen sondern das die Listbox von unten (vom unteren Rand des Controls) nach oben (oberer Rand des Controls) gefüllt wird. Einzige Möglichkeit die ich sehe um den Effekt zu erzielen wäre die Listbox mit leeren Items zu füllen und dann von unten her die Beschriftung zu ändern. Wenn also in der Listbox 5 Einträge im sichtbaren Bereich platz haben.
Delphi-Quellcode:
var LCount: Integer;
begin
  for LCount := 1 to 5 do
    ListBox1.Items.Add('');
und zum von unten her "füllen"
Delphi-Quellcode:
var LCount: Integer;
begin
  for LCount := 4 downto 0 do
  begin
    ListBox1.Items.Strings[LCount] := inttostr(5 - LCount);
    Application.ProcessMessages;
    Sleep(1000);
  end;
Dadurch sollte der Effekt entstehen das die Listbox von unten her gefüllt wird (ungetestet)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
lizardking

Registriert seit: 2. Sep 2005
76 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Listbox von unten füllen

  Alt 21. Okt 2005, 06:37
Zitat von SirThornberry:
@lizardking: du hat das ganze wohl nicht richtig verstanden. Es geht nicht darum Items am Anfang einzufügen sondern das die Listbox von unten (vom unteren Rand des Controls) nach oben (oberer Rand des Controls) gefüllt wird.
Ups... okay, dann nehme ich alles zurueck und behaupte das Gegenteil ;-)
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Listbox von unten füllen

  Alt 21. Okt 2005, 07:13
Zitat von lizardking:
...
Auch wenn das nicht wirklich weiterhilft : Man sollte alle Lehrer in einer Listbox speichern, erstmal vorsichtshalber ein Listbox.Clear ausfuehren und nur Elemente hinzufuegen, bei denen das Property "qualified" auf True gesetzt ist hinzufuegen.


Sorry, fuer sowas hab ich irgendwie kein Verstaendnis. Als Lehrer eine Aufgabe stellen, bei der ich selbst nicht Bescheid weiss ? Naja, Jedem das Seine.
Es gibt immer und überall solche und solche. Daher nicht alle sonder nur fast alle !
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Benutzerbild von richard_boderich
richard_boderich

Registriert seit: 21. Jun 2004
Ort: Berlin
1.067 Beiträge
 
Delphi 7 Architect
 
#10

Re: Listbox von unten füllen

  Alt 21. Okt 2005, 10:43
Der Lehrer wollte wohl andeuten das es effizienter waere das listbox oder listview von unten zu fuellen. um unnoetiges scrollen zu vermeiden.

also

1. muss die anzahl der elemente (zu speicherne items) vorher genau bekannt sein.

und

2. wenn es mehr sind als du du, bei der groeße deines listboxes darstellen kannst, musst du sowieso scrollen. naehmlich alles item 1 feld runter. haengt natuerlich von font und schriftgroeße ab.

3. sinn wuerde das ganze nur machen , wenn man die elemente ohne vcl sysncro einfuegen koennte
und erst nach dem befuellen die vcl anzeige aktiviert

Richard
mfG Richard

Cimmams schrieb "das einzige was an ArmA gut ist, ist die Grafik bis 100m und der Rest ist so unreal wie unsere Demokratie."
  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 10:30 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