[delphi] treenode tekst editen

Pagina: 1
Acties:

  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 16-12-2025
hallee,
ik ben bezig met een TTreeView in delphi en ik heb een vraag/probleem omtrent het bewerken van de labels van een TTreeNode. je zou zeggen, dat is toch niet zo moeilijk en dat is het ook niet, dwz ik heb het wel werkend maar het is nou niet de 'je van het' manier. ik heb het GoT forum doorgespit en de rest van het internet maar kan niks zinnigs vinden, daarom informeer ik hier maar even. welnu:
aangezien een TTreeNode geen events heeft maar alleen de TTreeView zul je daar dus mee aan de gang moeten. ik had op internet gevonden dat je door een node te selecteren en er dan nog een keer op te klikken, hem zou moeten kunnen editen. maar dat werkt bij mij niet. dus heb ik besloten zelf iets maken. ik wil dat er ondubbelklik een label geedit kan worden. dus heb ik in de ondblclick eventhandler van een TTreeView gezegt dat de huidige geselecteerde node editklaar gemaakt moet worden middels de EditText procedure aan te roepen. dat werkt dus allemaal prima, behalve het feit dat als je midden in je treeview dubbel klikt dat dan je label edit klaar gemaakt word. wat ik dus wil is dat je alleen een label kunt editen als je daar ook daadwerkelijk op ge(dubbel)klikt hebt. maar ik zou absoluut niet weten hoe ik dat voor mekaar moet krijgen aangezien ik in een onclick of dblclick geen muiscoordinaten mee krijg en dus niet kan controleren waar er geklikt is. ik hoop dat mijn punt een beetje duidelijk is, en dat iemand me hier meer info over kan verschaffen. hoe word dit normaal gedaan, want het moet toch kunnen lijkt mij.

offtopic:
ook heb ik het idee dat mijn delphi help wat incompleet is op wat vlakken want er komen vrij cruciale zaken niet in voor (bv. de edittext procedure)

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 00:25

Delphi32

Heading for the gates of Eden

Volgens mijn Delphi Help kan je de labels editen als je de property ReadOnly van de TTreeView op False zet, dat lijkt me toch aanzienlijk eenvoudiger dan wat jij probeert :)
Overigens start je het editen niet door op de nodetext te dubbelklikken, maar door een node te selecteren en daarna nogmaals te klikken. Dat zou gewoon moeten werken.

  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 16-12-2025
dat lijkt me nogal wiedes ja, dat je readonly op false moet zetten. :) dat heb ik ook gedaan.
Overigens start je het editen niet door op de nodetext te dubbelklikken, maar door een node te selecteren en daarna nogmaals te klikken. Dat zou gewoon moeten werken.
dat heb ik ook ergens gelezen ja, maar dat werkt bij mij dus niet :?
vandaar dat ik zelf iets in mekaar heb geknutseld :7

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Dat werkt toch echt zo. Net nog getest voor je. Het lijkt me handiger als je gaat zoeken waarom dat niet bij je werkt. Als je toch denkt dat je het zelf beter kan zou ik eens kijken naar de OnMouse events waarbij je wel de coordinaten meekrijgt. Je kan ze ook op ieder ander moment in je code achterhalen via Mouse.CursorPos. Met TTreeView.GetNodeAt kan je de node vinden die onder bepaalde muiscoordinaten zit. Misschien dat je met ClientToScreen/ScreenToClient moet werken om de coordinaten om te zetten.

We adore chaos because we like to restore order - M.C. Escher


  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 16-12-2025
wat ik nog niet verteld had is dat ik alle nodes at runtime toevoeg. zou dat er iets mee te maken kunnen hebben? jullie zeggen dus, dat als je een node aanklikt (hij word geselecteerd), en je klikt dan nog een keer, dat je node dan verandert in een soort inputveld waarin je tekst kan typen? kzal me bril eens even opzetten :p want zoiets zie ik niet gebeuren bij mij 8)7. merkwaardig toch...

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Ja, en daarbij maakt het niet uit of je ze runtime toevoegt. Als ReadOnly maar op False staat en je verder geen rare dingen doet. Probeer het maar eens in een nieuwe applicatie. En je kan ook een node selecteren en F2 drukken voor hetzelfde effect.

We adore chaos because we like to restore order - M.C. Escher


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 00:25

Delphi32

Heading for the gates of Eden

Dat laatste (F2) wilde ik ook eerst schrijven, maar dat ging in D5 niet echt werken :)
Oh ja, de 'edit mode' van de node
- werkt alleen als er geen dubbelklik is gedaan
- werkt alleen als je klikt op de TEKST van de node
- werkt net zoals je in Windows Explorer filenames kan veranderen
Misschien ten overvloede, maar misschien herkende je gewoon niet dat de node in edit mode kwam te staan. Want het hoort gewoon te werken, ook ik heb dit (zoals altijd) voordat ik postte eerst uitgeprobeerd.

  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 16-12-2025
bedankt voor de moeite allemaal :).
ik heb het opgelost maar de oorzaak is me nog steeds een raadsel. :? ik heb nu mijn oude TTreeView van mijn formulier gemikt en er een nieuwe opgezet. Die doet inderdaad precies wat jullie zeggen, en wat ie dus zou moeten doen. erg raar waarom die andere het niet deed, ik heb niks bijzonders aan verandert en alles via de delphi object inspector. maar goed, het euvel is verholpen. :+
bedankt.

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition

Pagina: 1