Simple Calendar

Started by John Z, February 21, 2025, 10:11:35 PM

Previous topic - Next topic

John Z

So who wants to fire up Google, Outlook, or other gigantic program just to look at a calendar?   
Not me.  So attached here is a simple calendar with a 6 months view, too simple really, but useful.

A bit more useful since one can also find the number of days from a start day to an end day,inclusive.
Also it can be used to show the resulting date once given a start date and +/- a number of days.
Lastly, it can also set a simple alert for a date & time.  This is a one shot alert, no repeat function.

Simple, but hopefully useful.

John Z

Updated program per Marco's input - revised program and replaced the original one here.

Vortex

Hi John,

Thanks, your application works fine on Windows 7.
Code it... That's all...

John Z

Thanks very much Vortex.

Appreciate the testing feedback.

John Z

Marco

Hi John,

Very nice application and works well on Windows 10/11. One small suggestion. If you click the "+/-" button without first clicking the "Save as Start" button, the end date is wrong. I can think of two possible solutions: 1- Warn the user to click the "Save as Start" button first, or 2- Automatically select the current date as the start date.
However, this is just a suggestion. The application can be really useful in various circumstances. Thanks.

John Z

Hi Marco,

Thanks very much for catching that.  I appreciate you testing it and providing feedback.
Oversight on my part - just didn't think of it :(

Modified the program to make the +/- only active after using 'Save as Start' similar to the Schedule and Days buttons.  Makes sense.

Updated help file as well.

Thanks again, new version replaced the old in the initial post.

John Z

TimoVJL

#5
MS Calendar component (DATETIMEPICK_CLASS) is good for many purboses.

For example, when user needs easy way to select date for program to select data from some periods.
The periods doesn't mean women periods  ;)
May the source be with you

John Z

Yup, and it is also very good to use to get consistent date-time inputs for any program that will be used internationally.  Relieves somewhat the issues of locale specific date formats, which can vary the sequencing of months and days (years are easy). 

John Z

Quin

Hi John,
Thanks for this! Your program works well on Windows 10 and 11 IoT lTSC with my screen reader, NVDA. I do have some feedback though:
1. The text fields in your dialogs aren't labeled. I see the text label if I explore the screen, but if I press tab to focus the text field the label isn't read. The way I typically pull this off is by positioning the text right above/below the control, but you can also set an accessible label using the IAccessible interface.
2. The calendar control with a keyboard is a bit...awkward. I can go by one second intervals with the up and down arrow keys, but that's about all I've been able to figure out. Is it possible for this to be improved?
Overall an incredibly solid program, well done! I especially love the CHM help file :)
Use the assembly, Luke.

John Z

Hi Quin,

for #1 I've download NVDA to 'see' what you mean. The only dialog for text entry is the scheduler asking for a note to show when the schedule is met.  There is a Label above it.  The issue might be that I never include labels in the tab sequencing?  In any case I'll try NVDA.

for #2 I think you are referring to the schedule time input, if you tab to it, it starts in the hours field and hours can be typed in, then use a right arrow key to move to the minutes, then right arrow key to move to seconds, finally right arrow key to the AM/PM.  Left arrow key will move the other way towards hours.  The arrow key use is circular so left on hours goes to AM/PM.  Hopefully this helps for that part.  Every part can be typed in or changed using the UP/Down arrows.  I could do better explaining this in the help file too (I used two pictures but not much explanation).

I checked out IAccessible om the Microsoft web site unfortunately the interface seems to be C++.  That is way far beyond my capability. 

Thanks for trying it out and providing useful feedback!  I'll see if I can understand how to improve label reading for inputs after using NVDA.

John Z

TimoVJL

Quote from: John Z on April 29, 2025, 10:40:06 PMI checked out IAccessible om the Microsoft web site unfortunately the interface seems to be C++.  That is way far beyond my capability. 

John Z
OleAcc.h have C interface too, if it's same thing.
May the source be with you

John Z

Quote from: TimoVJL on April 30, 2025, 01:42:04 AMOleAcc.h have C interface too, if it's same thing.

You are right, it is.  Thanks, I'll look around for an example of how to implement the C version.
it looks like a big, perhaps complex, job -

John z

TimoVJL

May the source be with you

John Z

Hi Quin,

I have installed the NVDA program and run it with the calendar program.  For the most part it reads everything well. 

I think there are two issues.  When Schedule is clicked the confirm dialog is opened. It is read ok BUT the first TAB location is the Confirm button rather than the text edit field, then to get to the text edit field (which is read out as an edit field) tab needs to be pressed twice.  If the Edit field was the first TAB position then the reader would read the preceding label then identify the edit field.  I'll edit the program to try/verify that.

The other edit box for the +/- number of days has the 1st tab location as the edit box and seems to be read out as expected, pausing in the edit box, so I think changing the other will work too.

The other issue which I can't explain is NVDA always seems to be speaking the wrong calendar date - very strange.  I don't understand why.

John Z

Quin

Hi John Z,
Thanks for your dedication to making this better for blind users!
NVDA reading the wrong date is indeed quite strange, my personal recommendation would be to write a minimal C program that shows the behavior, and send it as a bug report to NV Access, if it is NVDA specific. TO test, try activating Narrator with Control+Windows+Enter and having it read your app. Narrator isn't a very good or widely used screen reader, but it'll show us if its NVDA or not.
Thanks again!
Use the assembly, Luke.