AGB  ·  Datenschutz  ·  Impressum  







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

Neues Datenfehld bei TlistItem einer Listview

Ein Thema von mimi · begonnen am 23. Apr 2006 · letzter Beitrag vom 29. Apr 2006
Antwort Antwort
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#1

Neues Datenfehld bei TlistItem einer Listview

  Alt 23. Apr 2006, 10:07
Hallo,
ich habe da ein kleins problem: ich möchte gerne in einem TlistItem zwei Stringobjekte abspeichern einmal einer der angezeigt wird(caption, ist ja schon vorhanden) und einen neuen z.b. str oder so.

wie Kann ich dem TListItem ein daten objekt hinzufügen ?

Ich möchte gerne den langen dateinamen in str speichern und nur den Dateinamen(also ohne pfad und erweiterung) in der Listview anzeigen.

(das kürtzen geht schon nur das ablegen des langen dateinamens geht noch nicht).

Und ich möchte eigentlich keine weitere liste hinzufügen müssen, ich habe schon zwei listen: TlistView und TImageList.

Kennt einer von euch eine möglichkeit dies zu erreichen ?

Vielen Dank im vorraus für eure ausführlichen antworten *G*
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Neues Datenfehld bei TlistItem einer Listview

  Alt 23. Apr 2006, 10:51
Hi mimi!

Ich sehe da mindestens 2 Möglichkeiten.

1. Du leitest dir von TListItem eine Klasse ab, die deine zusätzlichen Wünsche befriedigt.
Delphi-Quellcode:
type
  TaMimiListItem = class(TListItem)
  private
    FLongPath : String;
  published
    property LongPath : String read FLongPath write FLongPath;
  end;
Diese Methode hat den Vorteil, das sie später recht einfach nutzbar ist, du bei der Zuweisung kontrollieren kannst, obs den Pfad überhaupt gibt(...) und dieses Vorgehen OOP-konform ist.

2. Du nutzt die "Data"-Eigenschaft der TListItem-Klasse. Das läuft dann so wie beim VST.
Delphi-Quellcode:
type
  TListItemData = record
    LongPath : String;
    //usw. Wenns nur ein Datenfeld ist, muss es kein Record sein
  end;
  PListItemData = ^TListItemData;
//...

//Neuer Listitem
var
  Li : TListItem;
  Data : PListItemData;
begin
  Li:=ListView1.Items.Add;
  New(Data);
  Li.Data:=Data;
  Data.LongPath:='c:\foo\bar.c';
end;
Hier musst du nun dran denken, das OnDeletion-Ereignis des Listviews zu bedienen um die Daten wieder freizugeben.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Neues Datenfehld bei TlistItem einer Listview

  Alt 23. Apr 2006, 14:13
ich habe die erste lösung genommen es kommt jetzt jedes mal wenn ich auf die eigenschaft zugreifen möcht eine zugriefverletzung:
    with TExtListItem(lvFocus.Selected) do begin hast du eine idee wie ich die wegbekommen kann ?
ich vermute ich muss die klasse installisieren, nur wie ?

TExtListItem ist wie folgt definiert:
Delphi-Quellcode:
unit extListItem;

interface

uses ComCtrls;

type
  TExtListItem = class(TListItem)
  private
    FLongPath : String;
  published
    property LongPath : String read FLongPath write FLongPath;
  end;
  
implementation

end.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Neues Datenfehld bei TlistItem einer Listview

  Alt 23. Apr 2006, 15:25
[ot]
Zitat von mimi:
ich vermute ich muss die klasse installisieren, nur wie ?
installisieren ... was für ein schönes Wort
[/ot]

Sorry, mein Fehler.
Natürlich legt lvFocus nur TListItems an und keine erweiterten. Also muss da ein Fehler kommen. (Mann, bin ich blöd)

Du hast jetzt 2 Möglichkeiten:
1. Du verfolgst den jetzigen weiter und leitest dir ein neues TListView ab, welches sich mit deinen TExtListItems auskennt.

2. Du nutzt den obigen 2. Vorschlag. (Was wahrscheinlich sinnvoller und bedeutend schneller ist.)

Und sorry für den halb[fertigen|falschen] Vorschlag.
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Neues Datenfehld bei TlistItem einer Listview

  Alt 23. Apr 2006, 16:03
danke für den hinweis, drauf hätte ich auch selbst kommen können.

du meinst also: einfach eine neue listview ab, also sowas:
TmyListView( TmyListItems)
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von chaosben
chaosben

Registriert seit: 27. Apr 2005
Ort: Görlitz
1.358 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Neues Datenfehld bei TlistItem einer Listview

  Alt 23. Apr 2006, 20:16
Zitat von mimi:
TmyListView( TmyListItems)
Nein, das wird so nicht gehen.

Fang mal lieber so an:
Delphi-Quellcode:
type TMyListView = class(TCustomListView)
//oder
type TMyListView = class(TListView)
Aber: Da wird wahrscheinlich einige Zeit ins Land gehen bis deine Klasse funktioniert. Wenn du OOP üben willst, dann kannst du das gern tun. Wenn du dagegen bald zu einem Ergebnis kommen willst, nutze lieber die Data-Eigenschaft von TListItem
Benjamin Schwarze
If I have seen further it is by standing on the shoulders of Giants. (Isaac Newton)
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Neues Datenfehld bei TlistItem einer Listview

  Alt 29. Apr 2006, 16:28
muss ich dann wohl. naja für mein zweck reicht eigentlich auch die Data eigenschaft !
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  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 17:00 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