Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Listview weitere Daten die nicht in der Liste sichtbar sind (https://www.delphipraxis.net/39554-listview-weitere-daten-die-nicht-der-liste-sichtbar-sind.html)

Darty 4. Feb 2005 11:37


Listview weitere Daten die nicht in der Liste sichtbar sind
 
Hallo Leutz,

in meiner ListView stehen mehrere Daten wie Titel, Kategorie u.s.w.
Nun möchte ich gerne zu der eine Spalte zusätzliche Informationen wie
z.B. Datum, Name u.s.w. einfügen die aber nicht in der ListView sichtbar
sind.
Eine Möglichkeit fiele mir ein, wenn ich für die zusätzliche Informationen
einfach weitere Spalten erstellen würde und dessen width auf Null setzen würde.
Würde sicher funktionieren, nur kann man die "unsichtbaren" Spalten auch mit der
Maus wieder vergrössern und sichtbar machen.

Welche Möglichkeiten bzw Tricks gibts den noch dazu ?

Ich sties mal auf den Hinweis das beim ListView etwas mit "Data" gibt, nur finde ich
keine ausreichende Informationen in der OH. Ausserdem kann dieses auch nur einen Wert
verwenden oder ?

Danke schon mal für die Antworten.

MathiasSimmack 4. Feb 2005 12:01

Re: Listview weitere Daten die nicht in der Liste sichtbar s
 
Gib´s nicht eine "Visible"-Eigenschaft bei der List-View bzw. den Spalten? Ich erinnere mich dunkel, dass der Windows Explorer auch nicht alles anzeigt, dass aber bspw. unter XP im Kachel-Modus gewisse Daten angezeigt werden, die ja aus den anderen LV-Spalten (Detailansicht) stammen. Ich weiß das, weil ich mich schon bei nonVCL mit dem Kachelmodus beschäftigt habe.

Darty 4. Feb 2005 12:09

Re: Listview weitere Daten die nicht in der Liste sichtbar s
 
Leider hab en die Column die Eigenschaft Visible nicht, sonst hätte ich das ja anwenden können :( sowas wäre wirklich ideal ...

Treffnix 4. Feb 2005 12:13

Re: Listview weitere Daten die nicht in der Liste sichtbar s
 
Data ist einfach ein Pointer. Da kannst du ein Object oder einen Record ablegen, das/der dann "unendlich" weitere Informationen beinhalten kann.

Darty 4. Feb 2005 13:50

Re: Listview weitere Daten die nicht in der Liste sichtbar s
 
Ich hatte mich noch nicht mit Record beschäftigt. Ist das zu vergleichen wie mit ein Array ? Welches man mehrere Werte aufnehmen kann ?

Darty 4. Feb 2005 23:05

Re: Listview weitere Daten die nicht in der Liste sichtbar s
 
Sorry ich nochmals ...

Könnte mir jemand ein Beispiel zeigen wie ich in einer Data (Listview) einen String und einen
DateTimePicker.Date speichern kann ?

Wäre sehr dankbar.

Nein das sind nicht für meine Hausaufgaben, bin da schon längst aus dem Alter


//Edit: Bzw wo ich danach schauen könnte. (Link)

Keldorn 5. Feb 2005 11:07

Re: Listview weitere Daten die nicht in der Liste sichtbar s
 
Hallo

such mal im Forum nach Hier im Forum suchenAddobjects. Irgendwo mußt du auch ein ausführliches code-demo von Luckie finden (oder guggst mal auf der Homepage). Es ist zwar für eine Listbox, die Vorgehensweise ist aber immer dieselbe, so schwierig ist das nicht. Es ist auch egal, ob du ein record oder eine eigene Klasse verwendest. Letztendendes ist für mich der Hauptpunkt, wo du aufpassen mußt, das wiederfreigeben der records. Dort muß man höllisch aufpassen.

Zitat:


Nein das sind nicht für meine Hausaufgaben, bin da schon längst aus dem Alter


ich glaub dir nicht, das man mit 33 noch nicht über records gestolpert ist :mrgreen:


Mfg Frank

Sharky 5. Feb 2005 11:53

Re: Listview weitere Daten die nicht in der Liste sichtbar s
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hai Darty,

ich habe da ein Demo mit einer Listbox. Das sollte zeigen um was es geht :stupid:

Darty 5. Feb 2005 21:21

Re: Listview weitere Daten die nicht in der Liste sichtbar s
 
Danke für den Beispiel der funktioniert auch.

Nun hatte ich es für meinen Programm abgeändert. Aber irgendwie bekomme ich es nicht
so hin wie ich es möchte. :wall: :wall:
Hier nur mal ein kleiner Auszug aus dem Code. Dein BeispielCode
setzt denke ich voraus das es neu eingefügt wird oder ? Oder muss ich bei der ListView
Erstellung schon etwas beachten weil ich 7 Columns schon vorher erzeugt habe?


Delphi-Quellcode:
procedure TStatus_Form.Button1Click(Sender: TObject);
var
  Data: TMyData;
begin
  If RadioGroup1.ItemIndex = 0 then
  begin
    Haupt_Form.ListView1.ItemFocused.SubItems[1] := 'ok';
    // Ab hier versuche ich Dein Beispiel einzubringen.
    Try
      data := TmyData.Create; // Objekt erzeugen
    Except
      data.Status_Name := Name_Edit.Text;
      data.Status_datum := DateTimePicker1.Date;
    End;

    // Ich weiss nicht mal ob das funktioniert hat
    // Nun möchte ich es in der selektierte Zeile einfügen.

    Haupt_Form.ListView1.AddItem('test', Data); // Die Zeile ist sicher falsch ?

  end;
  close;
end;

alcaeus 5. Feb 2005 21:26

Re: Listview weitere Daten die nicht in der Liste sichtbar s
 
Hallo Darty,

bei der Listview kann man sehr wohl Spalten verstecken, allerdings nur etwas kompliziert: Du legst ja Columns an. Du hast also beispielsweise 3 Columns, davon geht eine fuer die Caption drauf, die anderen 2 werden mit Hilfe der SubItems gefuellt. Wenn du nun weitere SubItems hinzufuegst, werden diese nicht angezeigt, aber trotzdem gespeichert. Das Ausblenden von Spalten ist also nur von hinten nach vorne moeglich, d.h. du kannst nicht in der Mitte eine Spalte ausblenden. Dazu muesstest du dir wohl deine eigene Listview-Klasse ableiten, was aber nicht so viel Aufwand waere (Visible-Eigenschaft bei TListViewColumn einfuehren, und Spalte ignorieren wenn Visible=False)

Greetz
alcaeus

Darty 5. Feb 2005 21:46

Re: Listview weitere Daten die nicht in der Liste sichtbar s
 
Zitat:

Zitat von alcaeus
Wenn du nun weitere SubItems hinzufuegst, werden diese nicht angezeigt, aber trotzdem gespeichert.

Ich werde das Gefühl nicht los das ich die Bäume vorlauter den Wald nicht sehe. Du meinst ich füge nur ein weiteres Subitem auch wenn dafür kein Columns existiert ? Und kann auch direkt darauf zugreifen etc ?

//Edit: Aber do kommt doch eine Fehlermeldung wenn es überschritten wird ???

Darty 6. Feb 2005 00:16

Re: Listview weitere Daten die nicht in der Liste sichtbar s
 
Ja das funktioniert tatsächlich mit den weiteren Subitems. Habe es hinbekommen.
Muss jetzt nur noch meine alte ListView Datei irgendwie konvertieren mit den 2 zusätzlichen Subitems da ich
sonst Maximum Error bekomme.
Danke auf jedenfalls für den Tip mit den weiteren SubItems :thumb:

Mackhack 6. Feb 2005 01:10

Re: Listview weitere Daten die nicht in der Liste sichtbar s
 
Hi,

selbstverständlich kannst du neue Columns einfügen und mit SubItems[] draufzugreifen. Du musst einfach nur die ColumnHeader-"Sichtbarkeit" auf False stellen. Dann nimmst du z. B. Labels und setzt die dafür über das ListView. Sieht in meinen Augen eh besser aus als wie wenn man die ColumnHeader sieht!

Keldorn 6. Feb 2005 07:42

Re: Listview weitere Daten die nicht in der Liste sichtbar s
 
Zitat:

Haupt_Form.ListView1.AddItem('test', Data); // Die Zeile ist sicher falsch ?
Delphi-Quellcode:
Var Listitem:TListitem;
...
  listitem:=Haupt_Form.ListView1.items.Add; //fürs hinzufügen
 oder
  listitem:=Haupt_Form.ListView1.selected; //fürs ändern, noch auf selected<>nil prüfen
  listitem.caption:='caption';
  listitem.subitems.add('subitem);
  listitem.data := Data; //<---
wenn du beim ändern ein neues Data-Objekt anhängst, mußt du das alte natürlich auch freigeben.

Ich würde die data-Eigenschaft nicht außer Acht lassen, insbesondere wenn du das Listview sortieren willst, kann das sehr hilfreich sein. Hast du eine Spalte z.B. mit einem Datum, mußt du beim sortieren jedesmal das Datum wieder in einen tdate-Wert umwandeln, damit du richtig sortierst. Dieses Umwandeln kostet extrem viel Zeit. Einfach das Datum als Tdate in der Data-eigenschaft hinterlegen und beim sortieren darauf zurückgreifen.

Mfg Frank

Sharky 6. Feb 2005 09:00

Re: Listview weitere Daten die nicht in der Liste sichtbar s
 
Zitat:

Zitat von Darty
..
Delphi-Quellcode:
    Try
      data := TmyData.Create; // Objekt erzeugen
    Except // Wenn Fehler
      data.Status_Name := Name_Edit.Text; // Dann Daten eintragen
      data.Status_datum := DateTimePicker1.Date;
    End;
end;

Hai Darty,
schaue doch mal was Du machst ;-)
Du füllst deine Data-Objekt nur dann mit Daten wenn es beim Erzeugen einen Fehler gegeben hat ;-)

Darty 6. Feb 2005 16:27

Re: Listview weitere Daten die nicht in der Liste sichtbar s
 
Zitat:

Zitat von Sharky
Hai Darty,
schaue doch mal was Du machst ;-)
Du füllst deine Data-Objekt nur dann mit Daten wenn es beim Erzeugen einen Fehler gegeben hat ;-)

:wall: Hab eh schon eine Beule. Da es für mein derzeitiges Projekt nicht notwendig ist weitere Columns einzubinden, habe ich den Vorschlag mit dem weiteren Subitems angewendet. Ich sass einfach zu lange an der selbe Stelle das ich mich selber verrückt gemacht hatte und bald nicht mehr wusste wo oben und unten ist.

Ich sehe aber ein das es mit .Data man flexibler ist. Habe es aber nun markiert und werde es bei den nächsten Projekte wenn benötigt wird dieses beachten. Und nicht wie immer gleich los drauf coden.
Trotzdem Danke Leutz :) :cheers:


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