Zitat von
Satty67:
EditText ruft TreeView_EditLabel (
COM-Interface) auf, wenn sich der Node aber wie im aktuellen Fall noch im Editiermodus befindet, passiert nichts (vermute ich jetzt mal).
Es wird mit EditText ja keine Botschaft verschickt, sondern eine Funktion aufgerufen, die den Inplace-Editor aktiviert bzw. aktiviert lässt, wenn er schon aktiv ist.
Das Ereignis OnEdited wird doch nach dem Editeren aufgerufen. Ich habe jetzt mal folgendes probiert :
Delphi-Quellcode:
if TreeNodeSearch(Node.Parent, S) <> nil then
begin
case MessageBox(0, PChar(rsDuplicateEntry), PChar(rsDuplicateEntryTitle), MB_ICONQUESTION or MB_YESNO) of
idYes: begin
PostMessage(Self.Handle, WM_NOTIFY, TVN_BEGINLABELEDIT, 0);
Node.Text := S;
end;
idNo: S := S + ' [new]';
end;
end;
Nur das funktioniert nicht. Ich habe vermutlich das mit der Message falsch gemacht, weiß aber nicht genau wo und wie.
Dazu habe ich noch getestet, wenn ich in der Case-Anweisung bin, liefert mir TV_Category.IsEditing gleich False zurück.
Edit : Die Delphi-Tags korrigiert.