[VBA voor applicaties] Z-index van een control element

Pagina: 1
Acties:
  • 155 views sinds 30-01-2008
  • Reageer

  • Database freak
  • Registratie: Oktober 1999
  • Laatst online: 21-01 12:56
In Excel XP wil ik tijdens run time een treeview (na het klikken op een knop) zichtbaar maken en over twee andere treeview elementen heen terecht laten komen. Na het klikken verdwijnt deze treeview weer en komen de andere twee treeviews weer geheel te voorschijn (ze worden niet geheel bedekt door de overlappende treeview.
Dit doe ik door de .visible =true c.q. =false te zetten met het klikken op de knop.
Helaas ondanks meerder keren de overlappende treeview op naar voren brengen te hebben gezet en de 2 onderliggende treeviews op naar achteren brengen (in de Excel/VBA voor apps forms designer, rechter muisknop) blijven de 2 initieel zichtbare treeviews boven de van niet zichtbaar naar zichtbaar gebrachte treeview.

Na wat testen lijkt het er op dat Excel de, ik noem het maar even de z-index, propertie van de nog niet zichtbare Treeview weer op achtergrond zet als de visibility property op false wordt gezet en de 2 ander weer op voorgrond. Het compleet .visibe=false van de twee andere treeviews te zetten levert (te) veel vertraging op; aangezien Excel dan weer een complete redraw moet doen)
In moet dus naast de visibe op true zetten bij het klikken van de knop ook de 'naar voorgrond'-property van het treeview control element zetten.
.visible =true
.zindex=1

Excel kent echter geen zindex property. Wat is het equivalent zindex/ naar voorgrond property in Excel/VBA?

Verwijderd

Heb hier alleen maar Excel 2000, maar de property heet Zorder. Is alleen een run-time property, geen designtime, dus je kunt hem alleen in code zetten.

  • Database freak
  • Registratie: Oktober 1999
  • Laatst online: 21-01 12:56
Hartstikke bedankt!! Dit was de oplossing! :) :) :) :) :)


TreeViewDimensie.ZOrder = 0

gaf Compileerfout: Toewijzing aan constante niet toegestaan


De zorder property direct toewijzen werkt alleen voor shape-objecten:
http://msdn.microsoft.com...mthZOrder1_HV03076930.asp

Maar de
TreeViewDimensie.ZOrder(0)
method werkt goed:
http://msdn.microsoft.com...derMethod1_HV03077520.asp

Vrij debiel dat er op msdn.com geen object model voor form-controls aanwezig is waar deze method gewoon in genoemd staat.|:(


In eerste instantie had TreeViewDimensie.ZOrder(0) ook geen effect, waardoor ik het dit commando op meerder plekken had neer gezet.
Na wat testen bleek dat de .ZOrder method enkel werkt als deze tussen de .Visible en .SetFocus property stelling geplaatst is:


If TreeViewPivotObject.Visible Then
  TreeViewPivotObject.SetFocus
  TreeViewPivotObject.Visible = False
Else
  ' TreeViewPivotObject.ZOrder (0)
  TreeViewPivotObject.Visible = True
  TreeViewPivotObject.ZOrder (0)
  TreeViewPivotObject.SetFocus
  ' TreeViewPivotObject.ZOrder (0)
  TreeViewDimensie.ZOrder (1)
  TreeViewMDXfuncties.ZOrder (1)
  ' TreeViewPivotObject.ZOrder (0)
End If

[ Voor 3% gewijzigd door Database freak op 16-02-2005 13:07 ]