AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Listbox : Scrollen und Anfang löschen / kopieren
Thema durchsuchen
Ansicht
Themen-Optionen

Listbox : Scrollen und Anfang löschen / kopieren

Ein Thema von moelski · begonnen am 15. Aug 2007 · letzter Beitrag vom 15. Aug 2007
Antwort Antwort
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

Listbox : Scrollen und Anfang löschen / kopieren

  Alt 15. Aug 2007, 10:48
Moin !

Ich hätte da zwei Fragen zur ListBox ...

1) Ich würde gerne in einer Listbox ein Logging anzeigen. Allerdings will ich nicht das ganze Logging immer in der Listbox halten. Das macht keinen Sinn. Also sollen immer eine Anzahl X Logzeilen angezeigt werden. Wenn mehr als X Zeilen in der Listbox sind, dann soll die alten (oben stehenden) Einträge gelöscht werden und zwar so das halt immer X Items in der Box sind.
Geht das mit der Listbox irgendwie automatisch? Hat das schon mal jemand gemacht? Und sowas wie Autoscroll hat das Ding auch nicht, oder? Also das immer die letzte Zeile angezeigt wird nach dem Einfügen einer neuen Zeile?

2) Wenn ich MultiSelect auf True stelle, wie kopiere ich dann den selektierten Kram auf einen Schlag in die Zwischenablage?
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von Alien426
Alien426

Registriert seit: 21. Dez 2005
146 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Listbox : Scrollen und Anfang löschen / kopieren

  Alt 15. Aug 2007, 11:09
Zitat von moelski:
1) Ich würde gerne in einer Listbox ein Logging anzeigen. Allerdings will ich nicht das ganze Logging immer in der Listbox halten. Das macht keinen Sinn. Also sollen immer eine Anzahl X Logzeilen angezeigt werden. Wenn mehr als X Zeilen in der Listbox sind, dann soll die alten (oben stehenden) Einträge gelöscht werden und zwar so das halt immer X Items in der Box sind.
Geht das mit der Listbox irgendwie automatisch? Hat das schon mal jemand gemacht? Und sowas wie Autoscroll hat das Ding auch nicht, oder? Also das immer die letzte Zeile angezeigt wird nach dem Einfügen einer neuen Zeile?
So entfernst du die Zeile mit dem angegebenen Index:
ListBox.Items.Delete(Index); So kannst du die letzte Zeile im Fokus halten:
ListBox.ItemIndex := ListBox.Items.Count - 1;
Zitat von moelski:
2) Wenn ich MultiSelect auf True stelle, wie kopiere ich dann den selektierten Kram auf einen Schlag in die Zwischenablage?
"auf einen Schlag" geht das glaube ich nicht. Mit ListBox.Selected[Index] kannst du prüfen, ob das Item ausgewählt ist.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Listbox : Scrollen und Anfang löschen / kopieren

  Alt 15. Aug 2007, 11:17
Hallo Dominik,

noch ein paar alternative Überlegungen:

(1) Hier könnte eine virtuelle ListBox zum Einsatz kommen, bei der die Daten von einer StringList geliefert werden, welche als Ringspeicher genutzt wird. Dadurch müssen die String-Zeiger in der Liste beim Überlauf nicht jedesmal verschoben werden.

(2)

Delphi-Quellcode:
function CopySelected(clb: TCustomListBox): string;
var
  lb: TListBox;
begin
  lb := TListBox.CreateParented(HWND(-3));
  clb.CopySelection(lb);
  Result := lb.Items.Text;
  lb.Free;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Listbox : Scrollen und Anfang löschen / kopieren

  Alt 15. Aug 2007, 11:29
Moin !

Zitat:
virtuelle ListBox zum Einsatz kommen, bei der die Daten von einer StringList geliefert werden
Aber müsste dann nicht ständig ein umkopieren aus der Stringliste in die Listbox erfolgen?
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Listbox : Scrollen und Anfang löschen / kopieren

  Alt 15. Aug 2007, 11:49
Nein, denn bei einer virtuellen ListBox werden keine Daten im Control gehalten, sie werden auf Anforderung bereit gestellt und gezeichnet.
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Listbox : Scrollen und Anfang löschen / kopieren

  Alt 15. Aug 2007, 12:31
Moin !

Ich habe lange nach der Komponente "VitualListBox" gesucht. Bis ich dann auf lbVirtual gestossen bin
Nuja, und nachdem ich dann auch ein Sample gefunden hatte was die ganze Sache mal in Funktion zeigt, konnte ich mein Problem glaube ich lösen.

Vielleicht schaut da nochmal ein ListBox Experde drüber

@Marabu:
Das Kopieren funktioniert wunderbar so ! Danke !!


Nachtrag:
Eine Demo habe ich hier gefunden:
http://www.delphipages.com/threads/t...40676&SAR=TRUE
Angehängte Dateien
Dateityp: zip listbox_-_max_x_eintr_ge_660.zip (29,8 KB, 10x aufgerufen)
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Listbox : Scrollen und Anfang löschen / kopieren

  Alt 15. Aug 2007, 18:41
Hallo Dominik,

Zitat von moelski:
Ich habe lange nach der Komponente "VitualListBox" gesucht. Bis ich dann auf lbVirtual gestossen bin...
sorry, hätte ich dazu schreiben sollen.

Zitat von moelski:
Vielleicht schaut da nochmal ein ListBox Experde drüber
Bin zwar kein Experte, aber drüber geschaut habe ich trotzdem mal. Du hast dich sehr an die Vorlage gehalten, deshalb nur ein paar Anmerkungen:

(1) MaxCount gehört als private Variable in die Form, wo ja auch die StringList deklariert ist, welche gesteuert werden soll.

(2) Es muss "Count > MaxCount" heißen und nicht "Count > MaxCount + 1", sonst wird ein Item zuviel gespeichert.

(3) Wenn dein SpinEdit benutzt wird, dann hat das keinen Einfluß auf die StringList...

(4) Du musst dich noch entscheiden, ob du nur die Anzeige limitieren möchtest oder generell die Speicherung. Im ersteren Fall muss der Code noch angepasst werden, so dass immer die letzten MAX_COUNT Items aus der StringList angezeigt werden. Was auf den niedrigeren Positionen gespeichert ist, das kann in ein LogFile weggeschrieben werden.

Freundliche Grüße
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Listbox : Scrollen und Anfang löschen / kopieren

  Alt 15. Aug 2007, 21:34
Moin !

Zu 1 & 2 -> Stimmt

Zu 3
Das SpinEdit nutze ich im Moment nur Testweise. Und es hat doch einfluss. Beim nächsten Eintrag eben ...
Das passt für meine Zwecke so auch ganz gut !

Zu 4
Also ich möchte nur die MaxCount Zeilen haben. Alles andere übernimmt eh unsere Logging Engine im Hintergrund. Hier geht es nur darum, für den User eine schnelle Übersicht zu schaffen.

Es funzt nun übrigens so wie ich es wollte.


Vielen Danke für die Hilfe !!!
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  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 15:12 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