Friday, February 24, 2017

TitleBarX Color Cycling Trick

What is TitleBarX again?

It is a class to replace the form's titlebar.  It has these features:

1.  Two captions
2.  Ability to change on-the-ply its color and the objects on a form, and retain those via a popup colorwheel

To take a thorough glimpse on what this class is, click here

A subscriber emailed me just now and asked if we can change its default behavior of picking up the last color scheme.  What he wanted instead is to dictate to the class the color cycling which is based on the day of the week.  So for Monday, a color, Tuesday another color and so on...

Well, the trick is simple enough so I will show it here in case some of those who use it wants to do the same.  The trick is to put something like this on its Init Event:

* TitlebarX Init
DODEFAULT()
Do Case
      Case Dow(Date()) = 1
            This.BackColor = Rgb(0,128,128)
      Case Dow(Date()) = 2
            This.BackColor = Rgb(128,255,0)
      Otherwise
            This.BackColor = Rgb(138,176,66)
Endcase
This._swapcolor()

And that is it!  Cheers!

Tuesday, February 21, 2017

EditX 2017.02.20 Version

Okay. So for new readers, what is this EditX again? 

EditX is a dropdown editbox control class to save space on forms and grid. This is especially designed to show and handle contents of memo fields. 

Another new subscriber seems to be very much interested in this especially on grid usage so after a long time, I dug this one out again. And decided to do a major overhaul to satisfy them, and of course to make it better further. 

So What is New? 

  • More responsive. Unlike on the previous versions where when inside a grid cell, you need to click twice, first on that cell to activate it then next on the arrow to fire the dropdown section, with this one you can click on the arrow straight from anywhere and it will fire outright
  • Added ReadOnly. This allows us to use this on Grid to show memo notes and to either limit it to viewing purposes only or to allow direct editing of underlying ControlSource's value
  • Cosmetic adjustments. Adjusted objects positions and sizes depending if it is on form or inside a grid. Changed down arrow to a better one.
  • Finally, cleaned up old codes and other objects and replaced those with better and leaner ones. 

Advantages of EditX vs native EditBox? 

Thursday, February 9, 2017

DropSwitch

February 13, 2017

Added MultiSelect capability.  It is controlled by two properties:

  • MultiSelect
    • .F. (Default), only a single switch can be selected each time from the dropdown list.  The caption of the selected switch will be reflected outright on the class
    • .T. or allow multiselect.  When this is set to .T., the caption will reflect the number of switches turned on (see image below)
  • mValues = are character values representing which switches are turned on.  On the image below, I set the initial mValues to 1,3,5.  mValues change on-the-ply, or when you turn on and off available switches.  Showing new Theme 17 I created just now too.


=====
February 9, 2017

Well, I've been meaning to do this for a long time but can't find much time to work on it.  But yesterday, I decided to finally do this.

What is DropSwitch?

It is a Control class with a commandbutton that has a dropdown form with several switches based on your desire.  You can think of the dropdown portion like an OptionGroup on a dropdown form, except that it does not use radiobuttons but my switches.



It is more like my OptionSwitchX class but this one hides the selection until you click the button.  So if you want to change the value, click on it, click anew on the popup selections (change will reflect on-the-ply), and click outside.


Some more differences with OptionSwitchX:

Monday, January 16, 2017

GrdSortLock

Also a replacement for both GridSort and GridLock classes.  This one combines both classes' capability into one. Like AnchorX, codes here are more simplified and straightforward.  

What it can do?

Provide instant sorting capability on your cursor used as grid's recordsource.  To use this class is as simple as dropping this class on form and declaring on target grid's INIT:


thisform.grdSortlock1._BindGrid(this)
By default, grid's column 1 will be sorted ASCENDING. Left-clicking on other column headers will make that column the sorted one as long as the underlying ControlSource for that column is not of Blog, General or Memo type. Right-clicking a column header pops up options as shown below. So as the name says, it can sort and it can lock a column; or totally remove lock.



I urge my subsribers to likewise move into this later so I can also remove GridSort and GridLock (and again AnchorSizer) in the future from the library.

Saturday, January 14, 2017

AnchorX

I decided to revisit my AnchorSizer class because basically I just dragged the old ssAnchorSizer from ssClasses then dropped it to my ssUltimate library, and simply renamed it (as well as GridSort and GridLock).  My focus back then is on other new classes I was planning to make for ssUltimate and so I simply moved those ones there.

Today though, I decided to revisit my codes there... and I winced, LOL!  And shuddered too, which is what we normally experience for the sheer horror of seeing our old codes after learning better ones.  Anyway, I cannot simply remove that AnchorSizer anymore as others may be using those already plus while I do not like (now) the codes I used there and the way I manipulate resizing, those nevertheless work good on the resizing need.

So instead I created a new and better Sizer class for the insides of listbox, combobox and grid and named it simply as AnchorX.  So what has been changed here?

Saturday, January 7, 2017

DTPeriod Class

This is two dtPickerX class for our two dates need (from and to).  This is quite simple.  Drop this class on your form and choose its orientation, 1 for portrait (default) and 2 for landscape.

Why not logical?  Instead of 1 for portrait, why not use .T. and .F. for landscape?  Well I plan to create a 3rd look for this later when I got time.

This returns two (2) values, i.e., ValueFrom and ValueTo which are already self-explanatory.  Since dtPickerX now has that HotKey, then this one has that too.  It automatically switch values ensuring that ValueFrom will always have the lowest or equal value than ValueTo, removing your need to code those yourself.

On form, during developing, you will only see one (1) dtPicker.  But on runtime, it will be shown like any of these depending on your orientation.



And Oh, you can assign initial values on those too:

* DtPeriod Init
this.valuefrom = DATE(2013,2,12)

DODEFAULT()


Date Scoping

Min and Max Values.  Two properties I added just now are ValueMin and ValueMax.  Those are optional.  If you leave both empty, then there is no scope restriction.  If you set just the ValueMin to say DATE(2013,1,1) or Date()-90 or GoMonth(date(),-3), then the dtpickers can not go lower than that.  If you also set ValueMax to a date, then the pickers will be restricted to those scope.

As usual, I am open to suggestions and comments for the betterment of the library from existing subscribers or even from those who plan to subscribe but is wishing some features I have not created yet.

Cheers!

See what's on ssUltimate:

http://sandstorm36.blogspot.com/2015/12/whats-on-ssultimate-library.html


Thursday, December 22, 2016

CtrlBox Class

This is another simple class that has been inside ssUltimate for quite a long time now.  But I designed this solely for the need of TitleBarX when I experimented on creating a control box that is purely made of shapes.  

However, recently I am changing my forms' appearances again and I now favor a form with no titlebar and border that is run maximized.  And while users of my app know they can always press Esc key to exit any of my forms, I still want an additional way for them to close it via a mouse.