Autor Beitrag
MaikRutsche
Hält's aus hier
Beiträge: 6


D6
BeitragVerfasst: Do 14.08.03 00:25 
Hallo,

ich habe folgendes Problem:

Ich habe einen Treeview mit mehreren Einträgen.

Einige der Einträge will ich editieren.

Vor dem Editieren soll aber der Text der Node geändert werden!
Als Beispiel wo das z.B. auftritt ist der Explorer, wenn man seine Festplatten umbenennen will, da wird kurz vorm Edieren der Laufwerksbuchstabe hinter der Bezeichnung entfernt.

Etwas Code:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TTest.tvDataEditing(Sender: TObject; Node: TTreeNode;
  var AllowEdit: Boolean);
begin
  Node.Text := 'test';

  AllowEdit := True;
end;


Das dumme aber:
Der Node übernimmt nicht mehr den neuen Text.
Das Edit-Feld enthält noch den alten...

Hat jemand ne Idee wie ich das realisieren kann?

Oder weis einer wie ich direkt an das Edit-Feld herankomme?


MfG

Maik

/e
Aso, verwendet habe ich den Standard TTreeView (Delphi 6)
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 14.08.03 10:14 
Gibt´s nicht im Objektinspektor die Ereignisse "OnBeginEdit" und "OnEndEdit"? (oder so ähnlich ... :oops:) Sorry, hab kein Delphi da. Schau doch mal, welche Ereignisse der Tree-View bietet. IMHO kann man vor und nach dem Edit die Werte abfragen.
Tpercon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 60



BeitragVerfasst: Do 14.08.03 11:44 
Bitte wieder löschen
a.C.k
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 93

WIN 2000
Delphi 6 Enterprise ; Delphi 7 Studio
BeitragVerfasst: Do 14.08.03 12:05 
Die Eigenschafften die Mathias anspricht müssten sein:


ausblenden Quelltext
1:
TCustomTreeView.OnEdited					

ausblenden Quelltext
1:
TCustomTreeView.OnEditing					


Hoffe das hilft dir weiter :wink:

_________________
Wer nicht gerne denkt, sollte wenigstens von Zeit zu Zeit seine Vorurteile neu gruppieren.
MaikRutsche Threadstarter
Hält's aus hier
Beiträge: 6


D6
BeitragVerfasst: Do 14.08.03 14:59 
Hmmm.

Das kleine Codestück ist ja eben schon das Ereingnis TTreeView.OnEditing.

Scheinbar wird das Edit-Feld schon vor OnEditing erstellt und der Text der Node eingefügt, so dass eine neue TextZuweisung für ein Node keine Auswirkung mehr hat...

Aber hier (m)eine Lösung, mit Hilfe von www.delphi-groups.de...ewprofile;user=Tryer;
ausblenden Quelltext
1:
2:
3:
4:
5:
var
  EditHWnd: HWnd;
begin
  EditHWnd := TTreeView(Sender).Perform(TVM_GETEDITCONTROL, 0, 0);
  SendMessage(EditHWnd, WM_SETTEXT, 0, Integer(PChar('MyEditText')));

Damit komme ich direkt an das Edit-Feld ran...[/code]


Zuletzt bearbeitet von MaikRutsche am Do 14.08.03 19:52, insgesamt 1-mal bearbeitet
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 14.08.03 15:11 
"OnEditing" ist IMHO, wenn du gerade änderst. "OnEdited" ist nach dem Ändern. Mir war so, als gäb´s da noch eine "Bevor man was ändert". Zumindest kenne ich vom API-Control die Notification TVN_BEGINLABELEDIT:
MSDN hat folgendes geschrieben:
Remarks
When label editing begins, an edit control is created but not positioned or displayed. Before it is displayed, the tree-view control sends its parent window a TVN_BEGINLABELEDIT notification message.

To customize label editing, implement a handler for TVN_BEGINLABELEDIT and have it send a TVM_GETEDITCONTROL message to the tree-view control. If a label is being edited, the return value will be a handle to the edit control. Use this handle to customize the edit control by sending the usual EM_XXX messages.

When the user cancels or completes the editing, the parent window receives a TVN_ENDLABELEDIT notification message.

Es würde mich wundern, wenn´s das nicht auch in der VCL als Ereignis gibt.
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Do 14.08.03 15:13 
MaikRutsche hat folgendes geschrieben:


Aber hier meine Lösung:

"Deine" Lösung ?
www.delphi-groups.de...splay;threadid=16501

sei fair

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
MaikRutsche Threadstarter
Hält's aus hier
Beiträge: 6


D6
BeitragVerfasst: Do 14.08.03 15:26 
Jap die stammt von da...

Hätt ich evtl. dazu schreiben sollen...

Aber darf ich die Lösung meinses Problems denn nicht meine Lösung nennen?