AGB  ·  Datenschutz  ·  Impressum  







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

Integer in ListItem eines ListViews speichern

Ein Thema von hoika · begonnen am 15. Nov 2006 · letzter Beitrag vom 8. Feb 2013
Antwort Antwort
Seite 1 von 2  1 2      
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#1

Integer in ListItem eines ListViews speichern

  Alt 15. Nov 2006, 15:22
Hallo #,

irgendwie stehe ich auf dem Schlauch.
Ich fülle ein ListView mit Konstanten.
Jeder Konstante ist ein Text zugeordnet.

Wie bekomme ich die Konstante als verstecktes Feld mit rein.
Data geht nicht.

Bsp.
Delphi-Quellcode:
const
  C_X1 = 1;
  C_X2 = 2;

ListItem:= ListView.Items.Add;
ListItem.Caption:= ConstAsText(C_X1); // ConstAsTexti st meine
ListItem.Data:= ?? order wo soll C_X1 hin ?
Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#2

Re: Integer in ListItem eines ListViews speichern

  Alt 15. Nov 2006, 15:26
Delphi-Referenz durchsuchenIntToStr

bzw.

Delphi-Quellcode:
type
  TConstHolder = class
  public
    FConst: integer;
end;

var
  ch:TConstHolder ;
begin
  ch:= TConstHolder.Create;
  ch.FConst:= C_X1;
  ListItem.Data:= ch;
end;
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Integer in ListItem eines ListViews speichern

  Alt 15. Nov 2006, 15:29
OK,

erzeugt aber memory leaks,
falls die Klassen nicht im FormDestroy freigegeben werden.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#4

Re: Integer in ListItem eines ListViews speichern

  Alt 15. Nov 2006, 15:34
Nun das muss man dann noch machen,is schon klar sollte nur ein gerüst sein...

Alternativ kanst du den integer als Pointer in Data Speichern...
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
DennisHB

Registriert seit: 25. Aug 2003
Ort: Bremen
58 Beiträge
 
Delphi 6 Personal
 
#5

Re: Integer in ListItem eines ListViews speichern

  Alt 15. Nov 2006, 15:36
Ist jetzt ungetestet sollte aber gehen

Delphi-Quellcode:
var
   Item : TListItem;
   i : integer;
Begin
   ...
   Item.Data := Pointer(i);

   ...
   i := Integer(Item.Data);
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Integer in ListItem eines ListViews speichern

  Alt 15. Nov 2006, 15:38
@DennisHBas führt aber zu einem schönen Bombenhagel! Da i nach Ende der Methode futsch ist.
Markus Kinzler
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Integer in ListItem eines ListViews speichern

  Alt 15. Nov 2006, 15:53


und ausserdem wollte ich Konstanten benutzen,
da klappt das eh nicht.
Muss ich das halt über die Klasse machen.
Schade, dass TListItem kein Tag hat.

Heiko
Heiko
  Mit Zitat antworten Zitat
DennisHB

Registriert seit: 25. Aug 2003
Ort: Bremen
58 Beiträge
 
Delphi 6 Personal
 
#8

Re: Integer in ListItem eines ListViews speichern

  Alt 15. Nov 2006, 16:00
MÖP es geht - nu auch getestet - n Pointer is doch nix anderes als ne Zahl (Integer? evtl Unsigned?)
Man kann ja auch Objecte an ein xyz.Tag hängen (eben umgekehrt)

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    lv: TListView;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure lvSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
     Item : TListItem;
begin
     item := lv.Items.Add;
     Item.Data := Pointer(45);
     Item.Caption := 'Test';
end;

procedure TForm1.lvSelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
     If Assigned(Item) then
          Caption := IntTostr(Integer(Item.Data));
end;

end.
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#9

AW: Re: Integer in ListItem eines ListViews speichern

  Alt 8. Feb 2013, 10:43
Delphi-Quellcode:
...

procedure TForm1.Button1Click(Sender: TObject);
var
     Item : TListItem;
begin
     item := lv.Items.Add;
     Item.Data := Pointer(45);
     Item.Caption := 'Test';
end;

procedure TForm1.lvSelectItem(Sender: TObject; Item: TListItem;
  Selected: Boolean);
begin
     If Assigned(Item) then
          Caption := IntTostr(Integer(Item.Data));
end;

end.
Der Code läuft zumindest beim Bestücken der Liste einfach genial. Trotzdem nochmal eine Frage dazu:

Recht es aus, wenn ich beim Beenden des Programmes
Delphi-Quellcode:
procedure TForm1.Destroy(Sender: TObject);
begin
     lv.clear;
end;
mache oder muss ich die Liste durchgehen und die ganzen Einträge nebst dem in Data gespeicherten Integer von Hand "beseitigen"?
Ich selbst weiß es leider nicht, kann es mir nicht herleiten und möchte nicht um es herauszufinden mittels try and error FastMemory dazunehmen.

Gruß und Dank, Alex
Alex Winzer
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#10

AW: Integer in ListItem eines ListViews speichern

  Alt 8. Feb 2013, 10:49
Wenn Du wirklich Pointer(45) einträgst, was willst Du denn da freigeben? Hier wurde ja nur ein harter Cast dazu verwendet, eine Zahl in einer Pointer-Property zu hinterlegen, der Pointer selbst zeigt ja ins Nirwana. Von daher wäre es sogar gefährlich, eine Freigabe zu versuchen, da man gar nicht weiß, auf welchen Speicher man eigentlich zeigt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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