Interface suggestions

M

Matthew

<!-- snipped great comments -->


They are all tabbed dialogs.



Would you consider this an improvement to my layout?

Please note that my dialog is only slightly larger than the dialogs you
mentioned. Adding tabs would either leave lots of white space, or make it
smaller than the standard size.


And, considering 3 of the OP's
frames need Color and Font, the tabbed dialog could display
them as combo boxes, rather than buttons to call up yet
another dialog (see how Display Properties uses combos).



Good point. Does anybody have some example code for a colorpicker and
fontpicker combo box?

One other change I'd suggest is to call TextWindow1 "Header"
and TextWindow2 "Footer" since that is the function they display.



Hmm. That's true. Of course, they are windows and can be moved anywhere.
Would it be confusing to call a window to the lower right a Header? On the
other hand, somebody that's moving them in strange ways might be the savvy
type and less likely to be confused by the names.



Just thinking out loud on this point.



Matthew
 
M

Matthew

I would however use the DateTimePicker to enter the time values. To use a
DateTime picker to enter your times set the following properties:

Format = Custom
CustomFormat = "hh:mm" (for hour:min)
CustomFormat = "mm:ss" (for min:sec)
ShowUpDown = True



I'll look in to the DateTimePicker. It originally turned me off because of
the arrow that shows the callender, but ShowUpDown = True handles that
nicely.

I would expect the Browse button for the Sound File to be at the end of
the text box, not below it.



True. I'll see if I can jockey it around some.


I normally include "..." at the end of buttons that show a second dialog
box, for example: Change Color..., Change Font..., Browse... and Show
Border...



Oops, I missed that one.

It looks like Microsoft messed up a little on this in Screen Saver and
Appearance tabs in Display Properties.



Of course, that's no excuse.



Larry suggested a combobox for picking fonts and colors.

The Desktop tab in Display Properties has a nice colorpicker.


If this is under VS.NET 2003, I would enable Themes by:

Setting the FlatStyle to System that supported it (labels, group boxes,
buttons).

Include the following in my MainForm:

Public Shared Sub Main()
Application.EnableVisualStyles()
Application.DoEvents()
Application.Run(New MainForm)
End Sub



I like this idea. Is there a programmatic way to change all my buttons and
stuff to flatstyle.system?



Matthew
 
M

Matthew

Mathew, this was simply a ruse to raise the hackles of Jay, it was purely
a mischeivous act on my behlf to lure him into an act of self defence. I
do it sometimes just for fun.

OK, nice to have that cleared up. Your other posts I have read seemed to be
very good-natured, so I was truely wondering what caused you to speak this
way.
As far as the 'Clear Landscape' principle is concerned, I just made it up.
Jay is forever quoting books and I wanted to see if he would admit to not
knowing about this non existant principle.
:)

I do think it is a little crowded, and personally I would not have all the
lines dividing up the form, but thats my personal opinion, other than that
it looks OK.

OK, I'll think about it some more.

Matthew
 
J

Jay B. Harlow [MVP - Outlook]

Matthew,
I like this idea. Is there a programmatic way to change all my buttons
and stuff to flatstyle.system?
I normally set them in the designer, however you should be able to use
something like:

Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
MyBase.OnLoad(e)
UpdateFlatStyles(Me.Controls, FlatStyle.Standard)
End Sub

Private Sub UpdateFlatStyles(ByVal controls As
Control.ControlCollection, ByVal flatStyle As FlatStyle)
For Each control As control In controls
If TypeOf control Is Label Then
DirectCast(control, Label).FlatStyle = flatStyle
ElseIf TypeOf control Is ButtonBase Then
DirectCast(control, ButtonBase).FlatStyle = flatStyle
ElseIf TypeOf control Is GroupBox Then
DirectCast(control, GroupBox).FlatStyle = flatStyle
End If
If control.HasChildren Then
UpdateFlatStyles(control.Controls, flatStyle)
End If
Next
End Sub

I would consider including the above in my base form class, so all forms
benefit from the code.

Hope this helps
Jay
 
J

Jay B. Harlow [MVP - Outlook]

Doh!
I was testing on a sample that already had flat style set,

Change the following:
UpdateFlatStyles(Me.Controls, FlatStyle.Standard)

TO:
UpdateFlatStyles(Me.Controls, FlatStyle.System)

Hope this helps
Jay
 
M

Matthew

Doh!
I was testing on a sample that already had flat style set,

Change the following:

TO:
UpdateFlatStyles(Me.Controls, FlatStyle.System)

Hey, no problem. I get the idea.
Your code is perfect!

Thank you,

Matthew
 
M

Matthew

Thanks to all for your comments.

Here is what I have now:
http://www.osbornewood.com/countdown/images/properties.gif
I consider it much improved.

I gave the tabs idea a try:
http://www.osbornewood.com/countdown/images/tabs.gif
While it does look neater, I think the sacrifice of convience is to great.

I played around with another idea: vertical alignment.
http://www.osbornewood.com/countdown/images/vertical.gif
However, I think I like the first one better.

Cor mentioned that the timepicker in the sound section wasn't clear. I'm
thinking of explaining in a tooltip.
Does anybody have any more thoughts for improvements?

Matthew
 
M

Matthew

I would consider including the above in my base form class, so all forms
benefit from the code.

How would I go about doing this? I don't know where the "base form class"
can be found.

Matthew
 
O

One Handed Man \( OHM - Terry Burns \)

I like properties.gif best.

Still not sure about that raised panel tho !

:)


--
OHM ( Terry Burns ) * Use the following to email me *

Dim ch() As Char = "ufssz/cvsotAhsfbuTpmvujpotXjui/OFU".ToCharArray()
For i As Int32 = 0 To ch.Length - 1
ch(i) = Convert.ToChar(Convert.ToInt16(ch(i)) - 1)
Next
Process.Start("mailto:" & New String(ch))
 
L

Larry Serflaten

Matthew said:
I gave the tabs idea a try:
http://www.osbornewood.com/countdown/images/tabs.gif
While it does look neater, I think the sacrifice of convience is to great.

What convenience? Having them all shown on the screen?

You might try showing a monitor above the tabs like the
Display Properties window where they could get an exact
preview of the font and colors. And, you could move Windows
to another tab (Is Windows where you position the text? You
might call that tab Positions)

Of course this is only a suggestion....

:)
LFS
 
J

Jay B. Harlow [MVP - Outlook]

Matthew,
I like properties.gif the best.

I agree the tabs.gif seems inconvenient, as you need to select a new tab
simply to enter one or two items. I find tabs work much better if each tab
has a number (5 to 10) elements or each tab has common info, such as Larry
suggests you had a "monitor" or preview of the settings above the tabs or in
the same location on each tab.

Also did you try 2 tabs instead of 4 tabs? Where Clock & Sound are on the
first tab, while the Header & Footer are on the second tabs?

Hope this helps
Jay
 
M

Matthew

Still not sure about that raised panel tho !

Sorry, I don't understand. What raised pannel?

Matthew
 
J

Jay B. Harlow [MVP - Outlook]

Matthew,
I believe he is referring to the line between your "form" and the menu bar.
It appears that your "form" is raised.

Hope this helps
Jay
 
J

Jay B. Harlow [MVP - Outlook]

Matthew,
You would need to define one, its an advanced feature of VB.NET. If you have
2 or more forms in your project & each form shares common functionality
(either controls or methods) then I would consider using Visual Inheritance.
For only 2 or 3 it depends on how much logic is shared if I would use Visual
Inheritance or not, 5 or more its unlikely I would not use Visual
Inheritance.

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbconforminheritance.asp

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvsm02/html/vs0201gs.asp

http://msdn.microsoft.com/library/d...walkthroughdemonstratingvisualinheritance.asp

In the example I gave its as simple as adding a new Class to your project
called FormBase and have it inherit from Form and add the Code I gave
earlier

Something like:

Public Class FormBase
Inherits System.Windows.Forms.Form

Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
MyBase.OnLoad(e)
UpdateFlatStyles(Me.Controls, FlatStyle.System)
End Sub

Private Sub UpdateFlatStyles(ByVal controls As
Control.ControlCollection, ByVal flatStyle As FlatStyle)
For Each control As control In controls
If TypeOf control Is Label Then
DirectCast(control, Label).FlatStyle = flatStyle
ElseIf TypeOf control Is ButtonBase Then
DirectCast(control, ButtonBase).FlatStyle = flatStyle
ElseIf TypeOf control Is GroupBox Then
DirectCast(control, GroupBox).FlatStyle = flatStyle
End If
If control.HasChildren Then
UpdateFlatStyles(control.Controls, flatStyle)
End If
Next
End Sub

End Class

Then change the Inherits of each of your Forms from:

Public Class MainForm
Inherits System.Windows.Forms.Form

To:
Public Class MainForm
Inherits FormBase

For example I have a DialogBase form in my project that all my Dialog forms
inherit from.

Hope this helps
Jay
 
M

Matthew

What convenience? Having them all shown on the screen?

Yes, that's what I meant. Sorry for not being clear.
You might try showing a monitor above the tabs like the
Display Properties window where they could get an exact
preview of the font and colors.

Ordinarilly I would jump on that idea without a second thought.
It is really cool!
Sadly, I don't think I would work well in this program.
The changes are applied dynamically to three windows with a hidden
background that are on their screen:
http://www.osbornewood.com/countdown/images/red.gif
And, you could move Windows
to another tab (Is Windows where you position the text? You
might call that tab Positions)

Actually, Windows is the toggle button Cor suggested.
(FYI: The text is positioned by click and drag.)
When it's depressed, the borders are shown on the three windows in the link
above:
http://www.osbornewood.com/countdown/images/window.gif

It might not be clear enough. Can you think of a better way to present it?

Matthew
 
M

Matthew

I believe he is referring to the line between your "form" and the menu
bar. It appears that your "form" is raised.

Ooh. Gotcha.

It looks like it's an automatic thing because of the menu. I'm not to
worried about it.
However, if anybody has a suggestion, I'm all ears.

Matthew
 
J

Jay B. Harlow [MVP - Outlook]

Matthew,
I not sure how it compares to properties.gif either.

Overall I prefer properties.gif, closely followed by tab1.gif & tab2.gif...

Just a thought
Jay
 
M

Matthew

Is there a programmatic way to change all my buttons and stuff to
flatstyle.system?
I normally set them in the designer, however you should be able to use
something like:
Code:
[/QUOTE]
I just noticed this slows the load time of my program by over a second!
Changing the flatstyle in the designer is looking more attractive all the
time.
Is there a way to change the default flatstyle in the designer?

Matthew
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top