Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   EditCaption - markieren ohne Extension (https://www.delphipraxis.net/213365-editcaption-markieren-ohne-extension.html)

Migo 18. Jul 2023 18:10

Delphi-Version: 5

EditCaption - markieren ohne Extension
 
Hallo,

mir fehlt hier die Umsetzungsidee? -> Ich habe eine ListView mit Dateinamen und möchte einen Eintrag markieren (EditCaption), jedoch ohne die Extension.
Z.B. Dateiname lautet: "Filename.txt" und davon soll dann nur markiert werden "Filename".

Ich nutze Delphi 11 Community Edition.


Lieben Dank für Hilfe(ansatz),
Migo

himitsu 18. Jul 2023 18:38

AW: EditCaption - markieren ohne Extension
 
* letzten Punkt suchen
* oder Delphi-Referenz durchsuchenExtractFileExt bzw. Delphi-Referenz durchsuchenTPath.GetExtension
* oder Delphi-Referenz durchsuchenChangeFileExt/[QUOTE]TPath.ChangeExtension[/OH] zu ''
* oder Delphi-Referenz durchsuchenTPath.GetFilenNmeWithoutExtension
* oder ...
https://docwiki.embarcadero.com/RADS...fadbearbeitung

und schon weißt du, was oder wie weit markiert werden muß.



Aber eventuell/vermutlich mußt du dann auch noch ein CustomDraw nutzen, um die Items selbst zu markieren malen.
Delphi-Referenz durchsuchenTCanvas.TextWidth

jaenicke 18. Jul 2023 18:54

AW: EditCaption - markieren ohne Extension
 
Das dürfte mit der normalen VCL TListView nicht so einfach möglich sein. Ich empfehle die TVirtualStringTree:
https://github.com/JAM-Software/Virtual-TreeView

Da kannst du z.B. einen eigenen Editor erstellen, mit dem du die Erweiterung entfernst vor dem Editieren und wieder hinzufügst nach dem Editieren, nur entsprechend markierst, usw., hast aber auch Events wie OnEditing, OnEditCancelled, OnEdited.

Die Einarbeitung dauert zwar länger, aber es lohnt sich.

KodeZwerg 18. Jul 2023 22:19

AW: EditCaption - markieren ohne Extension
 
Hilft Dir das vielleicht weiter?
Delphi-Quellcode:
procedure TFormXYZ.ListView1Editing(Sender: TObject; Item: TListItem;
  var AllowEdit: Boolean);
var
  name, ext, new: string;
begin
  ext := ExtractFileExt(Item.Caption);
  name := Copy(Item.Caption, 1, Length(Item.Caption) - Length(Ext));
  new := InputBox('Edit name...', 'Modify', name);
  Item.Caption := new + ext;
  AllowEdit := False;
end;

uligerhardt 19. Jul 2023 07:47

AW: EditCaption - markieren ohne Extension
 
Du könntest anstelle von
Delphi-Quellcode:
TListItem.EditCaption
direkt
Delphi-Quellcode:
ListView_EditLabel
aufrufen. Dessen Rückgabewert ist das Handle der Editbox. Damit könntest du vermutlich auf API-Ebene den gewünschten Text vorselektieren.

Migo 19. Jul 2023 16:06

AW: EditCaption - markieren ohne Extension
 
Vielen Dank an alle für die Hinweise. Ich arbeite alle mal ab...

Viele Grüße,
Migo


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz