AGB  ·  Datenschutz  ·  Impressum  







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

Widerwillige Spalte in einer ListView Kompo

Ein Thema von phlux · begonnen am 16. Nov 2002 · letzter Beitrag vom 3. Dez 2002
Antwort Antwort
Seite 2 von 2     12   
Daniel B
(Gast)

n/a Beiträge
 
#11
  Alt 2. Dez 2002, 18:57
Hi,

Caption ist die erste Spalte, die anderen werden mit SubItems[i] bezeichnet. 0 Wäre die zweite, 1 die dritte usw.
Beim Einfügen von Items, könntest Du noch ein zusätzliches Item einfügen und zwar mit dem ListView.Items.Count -1, somit hättest DU auch gleich einen Index, womit Du dann auf ein Array zugreifen kannst.

Grüsse, Daniel
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#12
  Alt 2. Dez 2002, 19:05
Zitat von iaby:
später will ich die caption der verschiedenen spalten wieder auslesen(eigentlich nur der Nummer, damit ich auf einen array mit den filenamen zugreifen kann, um das lied abzuspielen)
ich denke mal, das müsste mit der TListView zu machen sein
Dazu brauchst du nicht extra die Spaltennummer herausfinden, falls du MultiSelect auf False gesetzt hast bei deiner TListView, kannst du ganz einfach über die Eigenschaft TListView.Selected an das markierte Item drankommen (mit Untereigenschaften->SubItems, für die Pfadangabe), willst mit MultiSelect := True arbeiten solltest du in einer Schleife alle Items abfragen ob sie Selected = True sind, falls ja kannst du dann über die Eigenschaft SubItems auch dort den Pfad auslesen
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
iaby

Registriert seit: 30. Nov 2002
Ort: BW
258 Beiträge
 
#13

Danke!

  Alt 3. Dez 2002, 09:08
ich habs jetzt so weit mal hinbekommen!
das aktuell markierte lese ich mit itemindex aus!
funktioniert mal recht gut, problem hab ich dann nachher aber, wenn ich ein item lösche oder eins dazu füge: dann muss ich die ganzen captions ändern und außerdem noch den array neu sortieren! ich hoffe mal das braucht nicht zu viel rechenleistung

wirklich vielen dank, habt mir alles ehr geholfen!!!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#14
  Alt 3. Dez 2002, 11:10
Moin iaby,

Zitat von iaby:
...wenn ich ein item lösche oder eins dazu füge: dann muss ich die ganzen captions ändern...
Schau Dir doch mal die Methode

ListView1.Items.Delete(...); an.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
iaby

Registriert seit: 30. Nov 2002
Ort: BW
258 Beiträge
 
#15
  Alt 3. Dez 2002, 11:21
das schon, aber ich habe ja in der ersten spalte die position durchnummerriert. außerdem muss ich den array neu sortieren
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#16
  Alt 3. Dez 2002, 11:31
Moin iaby,

stimmt natürlich.
Wenn Du berücksichtigst, dass bis zur Stelle an der eingefügt/gelöscht wird, sich nichts an der Nummerierung geändert haben kann, also nur noch ab dieser Stelle Änderungen durchgeführt werden müssen, sparst Du schon mal Zeit.
Wenn Du beim Einfügen die Zeilen gleich an der richtigen Stelle einfügst, sparst Du Dir auch das Sortieren.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#17
  Alt 3. Dez 2002, 15:25
Zitat von iaby:
das schon, aber ich habe ja in der ersten spalte die position durchnummerriert. außerdem muss ich den array neu sortieren
Falls in der ListView der identische Inhalt wie im Array steht kannst du auch gleich die Sachen einfach aus der ListView auslesen, ist doch am einfachsten so
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#18
  Alt 3. Dez 2002, 16:54
Hallöle,

ListView.DeleteSelected; ist Dir hoffentlich schon in die Finger gekommen.

Hier ist mal ein Prozedur von mir, wie man den Inhalt im Array nachrutscht.

Du musst nur wissen, bevor Du was nachrutsch, welche Einträge Du gelöscht hast.

Delphi-Quellcode:
procedure TMainFormMC2004.ButtonKKLokLoeschenClick(Sender: TObject);
//Markierte einträge aus der Liste entfernen -> KK Lok
var
  i, n, t: integer;
begin
  if ListViewKKLok.SelCount = 1 then //Nur wenn ein Eintrag ausgewählt ist
  begin
    i := StrToInt(ListViewKKLok.Selected.SubItems[5]);
    for n := i +1 to MC2004.MenueInit.LokAnzahl -1 do //Array nachrücken
    begin
      MC2004.MenueInit.LokStamm[n -1] := MC2004.MenueInit.LokStamm[n];
    end;
    MC2004.MenueInit.LokAnzahl := MC2004.MenueInit.LokAnzahl -1; //Array kürzen
    for t := 0 to ListViewKKLok.Items.Count -1 do //Restliche Indexe -1
    begin
      if StrToInt(ListViewKKLok.Items.Item[t].SubItems[5]) > i then
      begin
        ListViewKKLok.Items.Item[t].SubItems[5] := IntToStr(StrToInt(
          ListViewKKLok.Items.Item[t].SubItems[5]) -1);
      end;
    end;
  end;
  LVLokFuellen;
  EditKKLokID.Clear;
  EditKKLokName.Clear;
  EditKKLokAdresse.Clear;
  EditKKLokTraeg.Clear;
  EditKKLokBeschl.Clear;
  EditKKLokVerzoeg.Clear;
  EditKKLokID.SetFocus;
  Check;
end;
Anschliessend musst Du nur noch den Inhalt des Arrays entweder neu in die LV eintragen, oder Du lässt es bleiben. Mit der Geschwindigkeit wirst Du da keine Probleme, behaupte ich jetzt einfach mal, also ich merke bei 200 Einträgen, jeder mit 6 SubItems überhaupt nichts.

Grüsse, Daniel
  Mit Zitat antworten Zitat
iaby

Registriert seit: 30. Nov 2002
Ort: BW
258 Beiträge
 
#19
  Alt 3. Dez 2002, 17:55
danke, sehr hilfreich deine procedure!!!
werd das dann mal einbauen, und auch mal testen!
Zitat:
Falls in der ListView der identische Inhalt wie im Array steht kannst du auch gleich die Sachen einfach aus der ListView auslesen, ist doch am einfachsten so
ist aber leider nicht so
kann man irgendwie verhindern, dass man die spalten der listview vergrößern kann?
ich hab mal maxwidth und minwidth auf 50 gestellt, aber verschieben kann man die immer noch, nur springen sie dann auf den ursprung wieder zurück!
ist aber nur eine kleinigkeit, nicht so schlimm

Iaby
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:56 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