Einzelnen Beitrag anzeigen

m.wollert

Registriert seit: 18. Aug 2003
Ort: Heilbronn
92 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Drag&Drop Problem - TListView???

  Alt 5. Jul 2004, 11:05
Hi Romber,

zuerstmal solltest Du ein property in Deiner Klasse anlegen:
Delphi-Quellcode:
type
  TLIThread = class(TThread)
  private
    .
    .
    FLI : TListItem;
    .
    .
  protected
    .
    .
  public
    .
    .
    property ListItem : TListItem read FLI write FLI;
    .
    .
  end;
Mit der Eigenschaft kannst Du direkt auf den Thread zugreifen und einfach das List-Item ändern.

So, nun musst Du das Item auch noch in Deiner Anwendung, die den Thread bearbeitet, ändern. Dazu solltest Du den Thread jedoch anhalten, um Zugriffsverletzungen, bzw. Thread-Locks zu vermeiden:

Die Prozedur die ich verwende ist im Grunde genommen die gleiche, die auch Du verwendest, nur eben auf das ListItem angepasst:

Delphi-Quellcode:
  .
  .
  listview.Items.BeginUpdate;
  try
    Source := listview.Items[ItemFrom];
    Target := listview.Items.Insert(ItemTo);
    Target.Assign(Source);
    with TLIThread(Source.Data) do begin // ab hier wird das neu angelegte Item in den Thread übergeben:
      Suspend; // Thread kurzfristig anhalten
      ListItem := Target; // ListItem zuweisen
      Resume; // Thread fortsetzen
    end;
    Source.Free;
Na, alle Klarheiten beseitigt? ;)
Einfach fragen, wenn noch was offen sein sollte - ansonsten bedanken ;)) (Tut gut ;)

MfG Michael Wolletr
Michael
  Mit Zitat antworten Zitat