|
Ok , let's take an example
My application on a big screen with high resolution , looks very small and almost unusable.
But Office applications like Word , Excel... are ok.
Why ?
|
|
|
|
|
satc wrote: My application on a big screen with high resolution , looks very small and almost unusable. Means you have a small screen relative to the highest resolution it supports.
satc wrote: But Office applications like Word , Excel... are ok. They aren't, in your terms. They don't resize their buttons to be equal size independent of resolution, those buttons become dang small on my cheap TV, with some unreadable tooltip in them.
So I set the resolution lower until it is readable. The buttons resize as expected, and one can see that there is a bit of (unused) grey area right of the buttons. The largest change is in the document-area; in the case of Word you see that large TextBox take up more space. That means that it simply displays more text if you have a larger screen.
In the case of Excell, you'll see that the amount of rows and columns suddenly increases. They use the additional area to display more information. Even for a complex UI as MS Access, it makes sense.
Take MS Outlook; it is not the "address" bar that is resized; it is just the "body" part that suddenly fills up your form if it is maximized. That's done using docking and alignment.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
And here is a class that I've found , but I think it needs some modifications :
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Windows.Forms
Imports System.Drawing
Imports System.ComponentModel
Public Class FormResizer
Private f_HeightRatio As New Single()
Private f_WidthRatio As New Single()
Public Sub ResizeForm(ByVal ObjForm As Form, ByVal DesignerWidth As Integer, ByVal DesignerHeight As Integer)
Dim i_StandardHeight As Integer = DesignerHeight
Dim i_StandardWidth As Integer = DesignerWidth
Dim i_PresentHeight As Integer = Screen.PrimaryScreen.Bounds.Height
Dim i_PresentWidth As Integer = Screen.PrimaryScreen.Bounds.Width
f_HeightRatio = CSng(CSng(i_PresentHeight) / CSng(i_StandardHeight))
f_WidthRatio = CSng(CSng(i_PresentWidth) / CSng(i_StandardWidth))
ObjForm.AutoScaleMode = AutoScaleMode.None
ObjForm.Scale(New SizeF(f_WidthRatio, f_HeightRatio))
For Each c As Control In ObjForm.Controls
If c.HasChildren Then
ResizeControlStore(c)
Else
c.Font = New Font(c.Font.FontFamily, c.Font.Size * f_HeightRatio, c.Font.Style, c.Font.Unit, CByte(0))
End If
Next
ObjForm.Font = New Font(ObjForm.Font.FontFamily, ObjForm.Font.Size * f_HeightRatio, ObjForm.Font.Style, ObjForm.Font.Unit, CByte(0))
End Sub
Public Sub ResizeControlStore(ByVal objCtl As Control)
If objCtl.HasChildren Then
For Each cChildren As Control In objCtl.Controls
If cChildren.HasChildren Then
ResizeControlStore(cChildren)
Else
cChildren.Font = New Font(cChildren.Font.FontFamily, cChildren.Font.Size * f_HeightRatio, cChildren.Font.Style, cChildren.Font.Unit, CByte(0))
End If
Next
objCtl.Font = New Font(objCtl.Font.FontFamily, objCtl.Font.Size * f_HeightRatio, objCtl.Font.Style, objCtl.Font.Unit, CByte(0))
Else
objCtl.Font = New Font(objCtl.Font.FontFamily, objCtl.Font.Size * f_HeightRatio, objCtl.Font.Style, objCtl.Font.Unit, CByte(0))
End If
End Sub
End Class
|
|
|
|
|
Linking to commercial components looks like spam. I suggest you edit your message and remove the link.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Sorry , with that link I'm just confirming that a solution exists but it's too expensive. Without giving the link , how can I express what I want ?
|
|
|
|
|
I have an xml file that I am loading into a datagridview. Pretty simple and loads with no problem.
<?xml version="1.0" encoding="utf-8"?>
<!--Project Time Tracking-->
<TimeTracking>
<Ticket Client="150-338" Code="Overview" Call="33685" Start_Time="1/12/2015 10:04:56 AM" Stop_Time="1/12/2015 2:09:04 PM" TimeNote="">04:04:08</Ticket>
<Ticket Client="150-310" Code="Documents" Call="32201" Start_Time="11/20/2014 11:42:20 AM" Stop_Time="11/20/2014 3:21:04 PM" TimeNote="install and test 1099 again internally.">04:39:44</Ticket>
<Ticket Client="609-327" Code="Misc Implementation" Call="34453" Start_Time="2/20/2015 10:15:36 AM" Stop_Time="2/20/2015 10:45:36 AM" TimeNote="Help with docusign and discuss Trust account">00:30:00</Ticket>
</TimeTracking>
Now, as you can see there is a Start_Time and Stop_Time column. Like tons of other folks, I am trying to sort the date columns Descending with no luck. When I use the grid to sort, or add my own programmatic sorting, it does not sort in date order, but in text format. From what I have read, this is because the data is being seen as a string and not a date.
Below is my simple code to load the xml
Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click
Dim myXMLTime As String = "C:\myBSG\myBSGTimeclock.xml"
DataGridView2.Columns.Clear()
DataGridView2.Rows.Clear()
dsTime.ReadXml(myXMLTime)
DataGridView2.DataSource = dsTime
DataGridView2.DataMember = "Ticket"
DataGridView2.Sort(DataGridView2.Columns(6), System.ComponentModel.ListSortDirection.Descending)
End Sub
I have played with literally hundreds of examples I have found online which attempt to address this problem with no success. Some have loaded the data into a datatable or a Dataset in an attempt to sort it there and then use that to load the datagridview. Either they did not work or were to complex for me to understand as a beginner. I cannot imagine that this could be THAT difficult as there have to be plenty of folks that need to sort by date in the Datagridview.
I need to sort load the grid with ReadXML and then be able to modify as necessary and write it back to xml using WriteXML
Any help that could be offered would be greatly appreciated!
Dan
Dan Chapin
|
|
|
|
|
How is the data being loaded and into what data structure? How the data is represented affects how you're going to sort it. If it's stored in memory as strings, there's your problem.
|
|
|
|
|
Unfortunately, there's no easy way to do this, because your dates are not in the standard XML date/time format[^], and your XML doesn't include a schema.
You'll need to read the XML into a temporary table, and then manually copy the rows to a table with the correct data types for the columns.
Something like this should work:
Dim dsTemp As New DataSet()
dsTemp.ReadXml(myXMLTime)
Dim dsTime As DataSet = dsTemp.Clone()
Dim table As DataTable = dsTime.Tables(0)
Dim startTimeColumn As DataColumn = table.Columns("Start_Time")
Dim stopTimeColumn As DataColumn = table.Columns("Stop_Time")
startTimeColumn.DataType = GetType(DateTime)
stopTimeColumn.DataType = GetType(DateTime)
Dim formatProvider As IFormatProvider = System.Globalization.CultureInfo.InvariantCulture
For Each row As DataRow in dsTemp.Tables(0).Rows
Dim values As Object() = row.ItemArray
Dim time As String = DirectCast(values(startTimeColumn.Ordinal), String)
values(startTimeColumn.Ordinal) = DateTime.Parse(time, formatProvider)
time = DirectCast(values(stopTimeColumn.Ordinal), String)
values(stopTimeColumn.Ordinal) = DateTime.Parse(time, formatProvider)
table.Rows.Add(values)
Next
DataGridView2.DataSource = dsTime
DataGridView2.DataMember = "Ticket"
DataGridView2.Sort(DataGridView2.Columns(startTimeColumn.Ordinal), System.ComponentModel.ListSortDirection.Descending)
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
pls i have a some textbox named ram size and i have a value in a combo box like rack, personal computer, servers and i want when i select rack from the combo box, the ram size text box should be set to readonly.
|
|
|
|
|
OK, so what part of this are you having a problem with?
Is it handling the SelectedItemChanged event of the ComboBox or setting the ReadOnly property of the TextBox to True?
|
|
|
|
|
setting the ReadOnly property of the TextBox to True?
|
|
|
|
|
Very simple:
myTextBox.ReadOnly = True
|
|
|
|
|
Use the SelectedIndexChanged event of the combobox, ComboBox.SelectedIndexChanged Event (System.Windows.Forms)[^]
And in that event check if combobox.SelectedItem = "rack" and if so set txtRam.ReadOnly= true.
Pretty simple.
There are only 10 types of people in the world, those who understand binary and those who don't.
|
|
|
|
|
develop a project which provide following mode of transport and fares per unit distance .it should calculate the price for the travel distance.mode:railway=rs2 perkm,flight=rs100perkm,car = rs 5 per km.
|
|
|
|
|
|
|
Your homework should serve the purpose that you learn something. And that something is not how to get your homework done for you by someone else.
If you have a specific question while attempting to do your homework, feel free to ask. But we won't do it all for you.
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
Ok. I've done that. Now what?
|
|
|
|
|
If the brain were so simple we could understand it, we would be so simple we couldn't. — Lyall Watson
|
|
|
|
|
You lose. Simon didn't say.
There are only 10 types of people in the world, those who understand binary and those who don't.
|
|
|
|
|
hi...
need help on urgent basis.
i wanna make a graph for my few excel files containing different datas . unable to get the code how to call those excel files for making graphs..
thanks for your help in advance..
|
|
|
|
|
|
I'm programming for my G15 LCD Keyboard.
When i press a button on the LCD it triggers the "ButtonPressed" event. When i press button 2 i want it to Add Handlers for my KeyboardHook for my Calculator.
The idea is that when i press button 2, my screen changes and my KeyboordHook starts listening, then i can enter calculations on my keyboard that are displayed on my LCD and processed when i hit enter.. Simple enough..
The problem is that i can't seem to find a way to add the Handlers for it while i'm already in an event..
The ButtonPress Event that starts the Calculator:
Dim Calculator As New Tools.LCDCalculator
Public Function ButtonPress(ByVal device As Integer, ByVal dwButtons As Integer, ByVal pContext As System.IntPtr) As Integer
Calculator.StartCalculator()
End Function
And here's the Calculator Class:
Public Class LCDCalculator
Public Active As Boolean
Public Sub StartCalculator()
Debug.WriteLine("Active")
AddHandler HookManager.KeyPress, AddressOf HookManager_KeyPress
End Sub
Public Sub StopCalculator()
Debug.WriteLine("Inactive")
RemoveHandler HookManager.KeyPress, AddressOf HookManager_KeyPress
End Sub
Public Sub HookManager_KeyPress(sender As Object, e As KeyPressEventArgs)
Debug.WriteLine(String.Format("KeyPress - {0}", e.KeyChar))
e.Handled = True
End Sub
End Class
I thought it might be threading or something so i tried doing this:
Task.Run(Sub() Calculator.StopCalculator())
But no such luck ...
I can start the Calculator from anywhere else and it works flawlessly, but when i try adding that handler from in the ButtonPress event it doesn't seem to work..
Please advise
|
|
|
|
|
Being inside and event handler has no bearing at all on the ability to add or remove event handlers.
The problem lies elsewhere, though I can't say where because there is insufficient code and description of how you have things setup. For example, does the KeyboardHook work in a test application?
|
|
|
|
|
I am building a windows form, using VB in VS2015.
I have a number of objects on the form. I added MSFlexGrid. Clicked F4 to edit properties, changing name, number of rows and columns.
The MsFlexgrid object then displays as a dotted box. If I try clicking on it it disappears.
I thought it might have been because I picked one column and two rows, so I have tried different number of rows and columns, no difference.
Anyone else had this problem and know the fix please ?
Thanks for reading
|
|
|
|