AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TTreeView, Focus...merkwürdiges Verhalten

Ein Thema von haentschman · begonnen am 18. Feb 2012 · letzter Beitrag vom 19. Feb 2012
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#1

TTreeView, Focus...merkwürdiges Verhalten

  Alt 18. Feb 2012, 22:48
Hallo...
ich hätte mal eine Knobelaufgabe:

gegeben(vereinfacht):
1. Form
2. TTreeView
3. PageControl (AdvOfficePager)
4. auf jeder Seite des PageControl ein Listview (AdvListview)

Im OnChange des TTreeView wird, je nach Index, die entsprechende Page aktiviert und der Focus auf das entsprechende Listview gesetzt.

Problem:
1. wenn mit der Maus geklickt wird:
- OnChange wird ausgeführt
- Listview.SetFocus wird ausgeführt aber der Focus bleibt auf dem TreeView
2. wenn mit den Cursor Tasten geändert wird: (Hoch/Runter)
- OnChange wird ausgeführt
- Listview.SetFocus wird ausgeführt und der Focus geht auf das Listview über

Hat jemand eine Idee, Lösung oder kann es zumindest reproduzieren ? Der Focus soll immer auf die Listviews gesetzt werden.

Danke...

Ich schreibe lieber 1000 Zeilen Code als immer diese Quälerei mit Kleinigkeiten der GUI !

Geändert von haentschman (18. Feb 2012 um 22:53 Uhr)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: TTreeView, Focus...merkwürdiges Verhalten

  Alt 18. Feb 2012, 22:53
Na ja, vielleicht wird im MouseUp der TreeView der Focus auf die TreeView gesetzt.

Fang das doch ab, zur not mit nem Timer (100ms). Das ist natürlich zweitklassig, funktioniert aber. Manchmal hat man nicht die Zeit, sich um solche Kinkerlitzchen zu kümmern.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#3

AW: TTreeView, Focus...merkwürdiges Verhalten

  Alt 18. Feb 2012, 22:56
Danke für die schnelle Antwort

wie soll ich das im MouseUp "abbrechen" ? Das setzen des Focus passiert ja intern im TreeView ...

Kannst du mir auf die Sprünge helfen ?
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#4

AW: TTreeView, Focus...merkwürdiges Verhalten

  Alt 18. Feb 2012, 23:28
Im MouseUp der Treeview den focus nochmal setzen oder so einen blöden Timer starten, der 100ms später den focus setzt. Klappt immer, ist aber, wie erwähnt, peinlich
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#5

AW: TTreeView, Focus...merkwürdiges Verhalten

  Alt 19. Feb 2012, 00:05
ok...funktioniert. Habe mich aber entschlossen auf den ganzen Focuskram zu verzichten... Sind mir zu doof die Verrenkungen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: TTreeView, Focus...merkwürdiges Verhalten

  Alt 19. Feb 2012, 00:23
Timer weglassen und sich eine Message zusenden.
Darin wird dann das SetFocus gemacht.

Wenn mit PostMessage gesendet wird, dann wird diese ausgeführt, nachdem alles andere, was noch gemacht werden soll, vorher ausgeführt.

Eventuell könnte man auch ein Application.ProcessMessage vor dem SetFocus einfügen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#7

AW: TTreeView, Focus...merkwürdiges Verhalten

  Alt 19. Feb 2012, 09:41
Das wäre natürlich viel besser. Ich wäre mir nur nicht sicher, ob das komische Verhalten der TreeView nach dem feuern des OnMouseUp-Events eintritt, oder davor.

Aber mit der Message kann man sich rantasten.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: TTreeView, Focus...merkwürdiges Verhalten

  Alt 19. Feb 2012, 10:44
Das Verhalten liegt daran, dass OnChange beim Herunterdrücken der Maus ausgelöst wird. Daher ist die Maus bei SetFocus noch gedrückt und der Fokus wird nicht geändert.

Nimm einfach eine bessere Komponente wie die VirtualTrees (TVirtualStringTree) und OnFocusChanged, dann hast du das Problem nicht. Außerdem ist die Komponente eh deutlich schneller und kann deutlich mehr.

// EDIT: Die Standard TreeView oder ListView habe ich seit Jahren nicht mehr ernsthaft benutzt...
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (19. Feb 2012 um 10:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#9

AW: TTreeView, Focus...merkwürdiges Verhalten

  Alt 19. Feb 2012, 11:56
Moin...
Zitat:
Nimm einfach eine bessere Komponente wie die VirtualTrees
...warum sollte ich mir für eine Hand voll statische Nodes (die man im VST nicht zur Designzeit definieren kann) so ein Monster antun ?

Geändert von haentschman (19. Feb 2012 um 12:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: TTreeView, Focus...merkwürdiges Verhalten

  Alt 19. Feb 2012, 14:24
...warum sollte ich mir für eine Hand voll statische Nodes (die man im VST nicht zur Designzeit definieren kann) so ein Monster antun ?
Na gut, wenn bei dir solche Daten zur Designzeit auf dem Formular liegen... bei mir sind die Komponenten so oder so leer. Wenn ich einen solchen Fall von statischen Nodes habe, liegen die Überschriften schlicht in einem Array und damit ist das in wenigen Zeilen erledigt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz