Jump to content



Photo

GUIPager.au3


  • Please log in to reply
18 replies to this topic

#1 Mat

Mat

    43 38 48 31 30 4E 34 4F 32

  • MVPs
  • 4,042 posts

Posted 11 March 2010 - 09:58 PM

This control is useful in situations where a window does not have enough area to display a child window. For example, if your application has a toolbar that is not wide enough to show all of its items, you can assign the toolbar to a pager control and users will be able to scroll to the left or right to access all of the items. You can also create pager controls that scroll vertically.

Posted Image

Functions:
Spoiler


Download link
Downloads so far is shown on the download page.

The download zip contains:
  • GUIPager.au3
  • Examples
  • Planets Example (As shown in screen shot)

Mat

Edited by Mat, 12 March 2010 - 11:18 PM.

I don't know where I'm going, but I'm on my way.






#2 AlmarM

AlmarM

    Programming my way.

  • Active Members
  • PipPipPipPipPipPip
  • 1,642 posts

Posted 11 March 2010 - 11:18 PM

Looks great, its a bit late for me to test now, so i'll test it tomorrow. :mellow:

#3 WeMartiansAreFriendly

WeMartiansAreFriendly

    Where's the kaboom?

  • Active Members
  • PipPipPipPipPipPip
  • 1,245 posts

Posted 12 March 2010 - 01:20 AM

Yes like a very good project, keep it up.
Posted ImageDon't bother, It's inside your monitor!------GUISetOnEvent should behave more like HotKeySet()

#4 Shafayat

Shafayat

    Polymath

  • Active Members
  • PipPipPipPip
  • 245 posts

Posted 12 March 2010 - 01:59 AM

Great job. I've always wanted to make something like that. Again, cool work.
[Not using this account any more. Using "iShafayet" instead]

#5 Yashied

Yashied

    Happy in Moscow

  • MVPs
  • 2,512 posts

Posted 12 March 2010 - 08:08 AM

Nice job. But why not written _GUICtrlPager_Destroy() function? Anyways, 5* from me for a really usefull UDF.

Edited by Yashied, 12 March 2010 - 03:01 PM.


#6 Mat

Mat

    43 38 48 31 30 4E 34 4F 32

  • MVPs
  • 4,042 posts

Posted 12 March 2010 - 08:10 AM

Thanks Guys :mellow:

The one thing I did forget is to add an example of handling the PGN_CALCSIZE notification manually. I'll do that today.

I don't know where I'm going, but I'm on my way.


#7 Mat

Mat

    43 38 48 31 30 4E 34 4F 32

  • MVPs
  • 4,042 posts

Posted 12 March 2010 - 08:14 AM

Nice job. But why not written _GUICtrlPager_Destroy() function? Anyways, 5* from me for a really useful UDF.


Completely missed that one out :mellow:

Another thing is that I have no idea how to make the function work for external applications.

I don't know where I'm going, but I'm on my way.


#8 Fire

Fire

    Universalist

  • Active Members
  • PipPipPipPipPipPip
  • 362 posts

Posted 12 March 2010 - 02:46 PM

Fantastic Job! Very nice and very usefull for me too.
Thanks so much Mat.
5 stars from me too.
Also Thanks too: George Gedye (GEOSoft), SmOke_N

Edited by Sh3llC043r, 12 March 2010 - 02:49 PM.


#9 Mat

Mat

    43 38 48 31 30 4E 34 4F 32

  • MVPs
  • 4,042 posts

Posted 12 March 2010 - 03:20 PM

Fantastic Job! Very nice and very usefull for me too.
Thanks so much Mat.
5 stars from me too.
Also Thanks too: George Gedye (GEOSoft), SmOke_N


Yes, I didn't mention that at the top, but GEOSoft was very helpful in making the _GUICtrlPager_Create function, and he also got a lot of help from SmOke_N for the same. :mellow:

I don't know where I'm going, but I'm on my way.


#10 zackrspv

zackrspv

    Universalist

  • Active Members
  • PipPipPipPipPipPip
  • 437 posts

Posted 12 March 2010 - 05:42 PM

This control is useful in situations where a window does not have enough area to display a child window. For example, if your application has a toolbar that is not wide enough to show all of its items, you can assign the toolbar to a pager control and users will be able to scroll to the left or right to access all of the items. You can also create pager controls that scroll vertically.


Is it just for toolbars?
-_-------__--_-_-____---_-_--_-__-__-_ ^^€ñ†®øÞÿ ë×阮§ wï†høµ† ƒë@®, wï†høµ† †ïmë, @ñd wï†høµ† @ †ïmïdï†ÿ ƒø® !ïƒë. €×阮 ñø†, bµ† ïñ§†ë@d wï†hïñ, ñ@ÿ, †h®øµghøµ† †hë ë§§ëñ§ë øƒ !ïƒë.

#11 Mat

Mat

    43 38 48 31 30 4E 34 4F 32

  • MVPs
  • 4,042 posts

Posted 12 March 2010 - 10:49 PM

Is it just for toolbars?


No... Although I have not done it with other controls yet, it should work with any window.

I will do that as well. :mellow:

I don't know where I'm going, but I'm on my way.


#12 Mat

Mat

    43 38 48 31 30 4E 34 4F 32

  • MVPs
  • 4,042 posts

Posted 12 March 2010 - 11:18 PM

Updated.

Added: _GUICtrlPager_Destroy
Removed: Random Mercury.xcf from the planets example :mellow:

Edit: Interesting that we already have an attempt at doing something similar with GDI+ here.

Edited by Mat, 13 March 2010 - 09:11 AM.

I don't know where I'm going, but I'm on my way.


#13 Shafayat

Shafayat

    Polymath

  • Active Members
  • PipPipPipPip
  • 245 posts

Posted 13 March 2010 - 05:42 PM

Very exciting script.
Does it support automatically resizing? (Forgive me if the question is stupid. I AM STUPID :mellow: )
[Not using this account any more. Using "iShafayet" instead]

#14 Mat

Mat

    43 38 48 31 30 4E 34 4F 32

  • MVPs
  • 4,042 posts

Posted 13 March 2010 - 11:30 PM

Very exciting script.
Does it support automatically resizing? (Forgive me if the question is stupid. I AM STUPID :mellow: )


As in... GUICtrlSetResizing?? No. You will have to process the WM_SIZE message yourself.

I don't know where I'm going, but I'm on my way.


#15 Shafayat

Shafayat

    Polymath

  • Active Members
  • PipPipPipPip
  • 245 posts

Posted 14 March 2010 - 02:43 AM

Thank you. I thought so but was hoping it not to be so.

Edited by Shafayat, 14 March 2010 - 10:48 AM.

[Not using this account any more. Using "iShafayet" instead]

#16 Mat

Mat

    43 38 48 31 30 4E 34 4F 32

  • MVPs
  • 4,042 posts

Posted 14 March 2010 - 09:35 AM

Thank you. I thought so but was hoping it notk to be so.

Its the same for all non-autoit controls.

this is a very simple example:

AutoIt         
#include <GuiRichEdit.au3> #include <WindowsConstants.au3> Global $hGui, $hRichEdit Main() Func Main()     $hGui = GUICreate("Example WM_SIZE", 320, 350, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX))     $hRichEdit = _GUICtrlRichEdit_Create($hGui, "This is a test.", 10, 10, 300, 330)     GUIRegisterMsg($WM_SIZE, "WM_SIZE")     GUISetState()     While 1         Switch GUIGetMsg()             Case -3                 _GUICtrlRichEdit_Destroy($hRichEdit)                 Exit         EndSwitch     WEnd EndFunc   ;==>Main Func WM_SIZE($hWnd, $iMsg, $wParam, $lParam)     #forceref $hWnd, $iMsg, $wParam, $lParam     Local $aPos = WinGetClientSize($hGui)     ControlMove($hGui, "", $hRichEdit, 10, 10, $aPos[0] - 20, $aPos[1] - 20) EndFunc

Mat

I don't know where I'm going, but I'm on my way.


#17 Shafayat

Shafayat

    Polymath

  • Active Members
  • PipPipPipPip
  • 245 posts

Posted 14 March 2010 - 10:48 AM

Thank you, Mat.

I had have some problems with WM_NOTIFY (for a listview item) few days ago and wasted almost 2 hours to find what I did wrong. Got it in the end but for a noob like me it wasn't easy. So I started to kinda fear GuiregisterMsg() . Anyway this one seems easy and working.

Regards
Shafayat
[Not using this account any more. Using "iShafayet" instead]

#18 Mat

Mat

    43 38 48 31 30 4E 34 4F 32

  • MVPs
  • 4,042 posts

Posted 14 March 2010 - 11:01 AM

Thank you, Mat.

I had have some problems with WM_NOTIFY (for a listview item) few days ago and wasted almost 2 hours to find what I did wrong. Got it in the end but for a noob like me it wasn't easy. So I started to kinda fear GuiregisterMsg() . Anyway this one seems easy and working.

Regards
Shafayat

This one is easy because I didn't use any of the parameters, so all its doing is waiting for the message... I did do it the more complex way though, completely overlooking the inbuilt autoit method:

AutoIt         
#include <GuiRichEdit.au3> #include <WindowsConstants.au3> #include <GUIConstantsEx.au3> Global $hGui, $hRichEdit Main() Func Main()     $hGui = GUICreate("Example WM_SIZE", 320, 350, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX))     $hRichEdit = _GUICtrlRichEdit_Create($hGui, "This is a test.", 10, 10, 300, 330)     GUISetState()     Local $aPos     While 1         Switch GUIGetMsg()             Case -3                 _GUICtrlRichEdit_Destroy($hRichEdit)                 Exit             Case $GUI_EVENT_RESIZED                 $aPos = WinGetClientSize($hGui)                 ControlMove($hGui, "", $hRichEdit, 10, 10, $aPos[0] - 20, $aPos[1] - 20)         EndSwitch     WEnd EndFunc   ;==>Main

Thats much easier!!!

I don't know where I'm going, but I'm on my way.


#19 Shafayat

Shafayat

    Polymath

  • Active Members
  • PipPipPipPip
  • 245 posts

Posted 14 March 2010 - 11:39 AM

I learned something today. This will certainly help me understand the language better. Thanks.
[Not using this account any more. Using "iShafayet" instead]




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users