Hallo,
ich habe meine eigene TListView-Klasse abgeleitet. Es soll später eine Komponente werden. Die List zeigt Thumbnails von Bildern an. Zusätzlich zum Dateinamen wird die Bildgröße in der Caption angezeigt. Wenn die Caption nun in den EditText-Modus wechselt (2 x LinksKlick, aber kein Doppelklick) dann soll die Caption gegen den korrekten Dateinamen getauscht werden.
Delphi-Quellcode:
function TImgStdListView.CanEdit(Item: TListItem): Boolean;
begin
Item.Caption := TListItemData(FObjectList[GetItemIndex(Item)]).FFileName; //funktioniert
UpdateItems(GetItemIndex(Item), GetItemIndex(Item)); //wird hier aber nicht sichtbar gemacht
Result := inherited CanEdit(Item); //wenn Result True wird inplace-Editor akitiviert
end;
Dafür habe ich CanEdit überschrieben. Diese wird aufgerufen, auch zum richtigen Zeitpunkt, die Caption wird auch geändert, aber die Änderung wird erst sichtbar nachdem der User den EditMode wieder verlassen hat. Ich habe mit UpdateItems versucht die Änderung vorher sichtbar zu machen, scheint aber nicht das richtige zu sein.
Wer kann es besser?
Grüße
Sebastian
[Nachschlag:]
Ich habe gerade mal in ComCtrls geschaut, genauer CNNotify. CanEdit scheint einfach zu spät zu sein, um einzugreifen. Gibt es eine Windows Message für den separierten Doppelklick??