Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Alternative zu Treeview.Enabled:=false (https://www.delphipraxis.net/140468-alternative-zu-treeview-enabled-%3Dfalse.html)

taaktaak 18. Sep 2009 18:09


Alternative zu Treeview.Enabled:=false
 
Moin, Moin.

Will es kurz machen: Aus optischen Gründen scheidet der "normale" Weg mit "Treeview.Enabled:=false" leider aus. Tastendrücke kann ich im OnKeyDown() mit Key:=0 eleminieren, aber im OnMouseDown() gelingt es mir nicht die Mausbetätigung "zu löschen".

Gibt es auch für die Maus eine Lösung, d.h. einen Weg die Mausbedienung "auszuschalten" ohne das das Control es registrieren kann und sich in schrecklicher Optik als "disabled" darstellt?

DeddyH 18. Sep 2009 18:16

Re: Alternative zu Treeview.Enabled:=false
 
Und wenn Du dem Treeview eine Behandlungsroutine für WM_LBUTTONDOWN spendierst?

alzaimar 18. Sep 2009 18:17

Re: Alternative zu Treeview.Enabled:=false
 
Verbiete einfach das 'Collapse'...

taaktaak 18. Sep 2009 18:21

Re: Alternative zu Treeview.Enabled:=false
 
Ahhh, hatte gedacht das geht mit 'nem Trick und einem Fingerschnips...
Mist..

Danke :hi:

Edit:
Habe doch was ganz Einfaches gefunden OnChanging() dort das AllowChange auf false setzen, dann kann der selektierte Knoten nicht gewechselt werden, jetzt noch das Popup temporär auf nil setzen, Problem (offenbar) gelöst :)
- auf zum Nächsten :P

himitsu 18. Sep 2009 18:35

Re: Alternative zu Treeview.Enabled:=false
 
Zitat:

Zitat von taaktaak
jetzt noch das Popup temporär auf nil setzen,

du kannst auch, statt das PopupMenü zuzuweisen es über onPopup selber aufrufen, bzw. dort eben nicht aufrufen :D

taaktaak 18. Sep 2009 19:47

Re: Alternative zu Treeview.Enabled:=false
 
Nee, das war doch nix mit meiner Lösung, das macht wieder an anderen Stellen Probleme. Die einfachste und kürzeste Lösung ist dann doch eine minimalistische Windows-Botschaftsprozedur in dieser Art:

Delphi-Quellcode:
procedure TfrmTopics.TVNewWProc(var Msg:TMessage);
begin
  if not(LockTreeview) then TVOrgWProc(Msg)
end;
Wenn LockTreeview=true, ist das Treeview tatsächlich taub, blind und stumm.

// EDIT - Ahhh, shit, so geht das auch nicht! Wenn in diesem Zustand ein anderes Fenster drüber war, wird nach dessen Verschieben das Treeview ja nicht neu gezeichnet. Also sind wir jetzt nach einem "kleinen Umweg" endlich bei Detlefs Lösung angekommen - ich hör' heute auf, mach' ja nur noch Unsinn
:wall:

Ruio 19. Sep 2009 09:40

Re: Alternative zu Treeview.Enabled:=false
 
Kann man nicht das TreeView auf ein Panel ziehen und das Panel dann deaktivieren?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:43 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