Sign in to follow this  
Followers 0
marc0v

A TreeView GUI with some functionalities

11 posts in this topic

#1 ·  Posted (edited)

Hi,

Here is a TreeView GUI with some functionalities (search, export to clipboard, change state of the tree...).

Personally I use it to display some datas from the registry.

Tested with : AutoIt 3.3.0.0, WinXP SP3 32 Bits, single monitor, 'Windows classic' (as Windows 95/98/2000) desktop theme

I would be grateful if someone would be willing to test it in different environments than mine to see how it behaves.

Things that could make the script not to work properly :

* using an AutoIt script engine > 3.3.0.0 (However, I tried to make my script compatible with newer AutoIt versions)

* running on another OS than WinXP

* running on a 64 Bits OS (DllStruct or DllCall possible issues with 64 bits pointers/handles)

* GUI problems with desktop themes (I only use the 'Windows classic' theme)

* multiple monitors (for windows positionning, treeview items hit_test and rectangle)

* things I did not think of...

* and bugs of course...

Known bugs :

* memory usage increase by a few hundreds Kbytes everytime the treeview is reloaded (some memory leak...),

as a workaround, after a hundred treeview reload, the program will restart itself to release the lost memory

* small memory leak (~8 kb) on each tree reload

* using a theme for the blinds with large fonts makes the bottom of the main GUI to disappear

The code is free to reuse/improve/adapt as you want.

(This script, as I release it, does not write anything to the registry or the file system)

Thanks for any testing or advice.

Updated, 02 April 2013 :

TreeViewGUI.zip :

MD5 : DF0802EE21D458AA00DA839B235370BB

SHA-1 : 3FF545F440E728B86D1688C56CF7FB3060DEB4EA

SHA-256 : 0D24C6D24808BE34EB8BC2A92218D6EB7B8209DF1B0AED6CB78943633814E320

TreeViewGUI.zip

screenshots :

post-53010-0-35835500-1364932919_thumb.j

post-53010-0-49134900-1364932931_thumb.j

post-53010-0-82064600-1364932941_thumb.j

Edited by marc0v
2 people like this

Share this post


Link to post
Share on other sites

Win7 x64 Autoit 3381

No sparks or smoke (it works).

No problems that I could notice.

Share this post


Link to post
Share on other sites

Thanks lorenkinzel, did you ran the script with AutoIt3.exe or AutoIt3_x64.exe, or both?

(if you don't know, you can look in the Task Manager, when the script is running, to see which process is running : AutoIt3.exe or AutoIt3_x64.exe)

Share this post


Link to post
Share on other sites

Looks nice :), I ran it on Win7 as 32bit and 64bit, both looking good at a first glance. Running at 64bit I've noticed the "TVINormSel.ico" to be missing for the currently selected node, did not show up at all.

What kind of makes your script hard to read are those self-defined file-extensions (.AUC), I would suggest to stick to .au3. Also a thing I've learned the hard way too, I would suggest not to rip apart the standard UDFs for your own custom builds, this way you can not easily participate in version changes / bug-fixes etc., just stick to the standard UDFs. Regarding the memory leak, I think this might have to do with your mixing of the standard functions GUICtrlCreateTreeViewItem() with UDF functions and direct message sends. My guess is that the mem leak should be gone when you replace those standard function calls with the Treeview UDF ones (e.g. _GUICtrlTreeView_Add()).

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

For the memory leak you're right, I must create the treeview items with _GUICtrlTreeView_Add instead of GUICtrlCreateTreeViewItem

This way there's no memory leak, but I'll have to rewrite some parts of the code because :

* items created with _GUICtrlTreeView_Add won't respond to GUICtrlRead($id_treeview) (to know which treeview item is currently selected)

* I will get a handle instead of a CtrlID to work with these treeview items

* _GUICtrlTreeView_Add will allow me to directly set the images for created treeview items (which may solve the "TVINormSel.ico" not appearing)

Edit : now I've a problem,

_GUICtrlTreeView_Add (and other UDF functions for items created this way) do not allow to set the text and background colors of each treeview item, which is a feature I really need.

So, unless I get a way of coloring differently each treeview item, I will keep GUICtrlCreateTreeViewItem and GUICtrlSet(Bk)Color, with the memory leak...

BTW (in 64bits mode), does clicking 'Clear Marks in Full Tree' makes the pink arrow appear?

Or does un-commenting the following two lines 60&61 in 'ReadDatas.au3' solve this problem?

;DllStructSetData($t_tvitem_norm, "hItem", $h_sub_tvitem)

;_GUICtrlTreeView_SetItem($h_treeview, $t_tvitem_norm)

Edited by marc0v

Share this post


Link to post
Share on other sites

Great script!

Works fine with AutoIt 3.3.8.1 and Windows 7.

However I noticed that to expand/collapse it is sometimes (not always) needed to doubleclick the plus/minus. A single click always works if I click the dash right to the plus/minus.


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2017-04-18 - Version 1.4.8.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (NEW 2017-02-27 - Version 1.3.1.0) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2015-04-01 - Version 0.4.0.0) - Download - General Help & Support - Example Scripts
Excel - Example Scripts - Wiki
Word - Wiki
PowerPoint (2015-06-06 - Version 0.0.5.0) - Download - General Help & Support

Tutorials:
ADO - Wiki

 

Share this post


Link to post
Share on other sites

Very good work :thumbsup:

But why are the file extension of the includes different than au3 as already mentioned by KaFu?

Br,

UEZ


Please don't send me any personal message and ask for support! I will not reply!

Selection of finest graphical examples at Codepen.io

The own fart smells best!
Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!
¯\_(ツ)_/¯  ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ

Share this post


Link to post
Share on other sites

To Water

I get a similar behavior :

when I single click on the +/- box (or slightly on the left, or on the right of it), the item always get expanded/collapsed

when I single click far enough on the left of the +/- box, nothing happens, but if I double-click at the same spot the item is expanded/collapsed

and if I go a little further on the left, the parent item gets collapsed

This behavior also occurs in the Windows Explorer folders tree, so it must be something external to my script and even AutoIt...

You could check in a Windows Explorer window (with the folders tree) if you get the same left-right offset.

Well, your cursor icon (the mouse arrow) has a special 'hot-spot', a single pixel that defines where you've clicked

if the 'hot-spot' is misplaced in your cursor icon, you'll get the impression that you are clicking on some place while you are in fact clicking a few pixels away.

Share this post


Link to post
Share on other sites

Thanks for all these compliments :sweating:

but we only get better by 'borrowing' some knowledge from the others :ph34r:

to UEZ, I write AutoIt scripts inside a PSPad project (the PSPad editor has some good features despite a few bugs)

PSPad (for syntax highlighting), and the Windows Explorer (for file opening), can be made to recognize .auc;.aul as AutoIt Files

So it's simply a way of structuring my project more clearly.

.AUC = AutoIt constants : PSPad highlight the content as an AutoIt script but does not allow to run or compile it

.AUL = AutoIt function libraries : same as previous

.UDF = UDF adapted function libraries : same as previous

If you have some problem reading the code in Scite you can just rename .auc, .aul, .udf files to .au3

and correct the 6 include lines at the very beginning of the TreeViewGUI.au3 file.

(next time I'll upload with .au3 extensions only)

Share this post


Link to post
Share on other sites

If you have some problem reading the code in Scite you can just rename .auc, .aul, .udf files to .au3

and correct the 6 include lines at the very beginning of the TreeViewGUI.au3 file.

(next time I'll upload with .au3 extensions only)

... or just add this to your SciTEUser.properties:

au3=*.au3;*.auc;*.AUL;*.inc

Jos :)


Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

Bump for significant update.

* Mostly solved the memory leak on tree reload, by deleting (GUICtrlDelete)

the treeview control and re-creating it after (remains a ~8 kb memory leak on tree reload).

* Improved speed on tree creation and tree operations.

* Minor bug fixes and improvements.

* More help in the TEST_TREE() function to customize the treeview (in ReadDatas.au3) :

customization includes individual coloring, bolding, expanding, sorting of tree items.

* More help in the 'Infos.ReadMe' file.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0