Более быстрый / чистый способ вычисления ширины / слева от текстового поля в зависимости от того, сколько отображается
Привет всем, я в настоящее время ищу способ рассчитать ширину и левое положение MAX 12 TXTbox в моей форме отчета. Высота всегда будет 0.206, а вершина всегда будет 0.
Вот как выглядит код с 12 (max) txtboxes:
txtData1.Width = 0.7
txtData1.Left = 0
txtData2.Width = 0.7
txtData2.Left = 0.708
txtData3.Width = 0.7
txtData3.Left = 1.416
txtData4.Width = 0.7
txtData4.Left = 2.124
txtData5.Width = 0.7
txtData5.Left = 2.832
txtData6.Width = 0.7
txtData6.Left = 3.54
txtData7.Width = 0.7
txtData7.Left = 4.248
txtData8.Width = 0.7
txtData8.Left = 4.956
txtData9.Width = 0.7
txtData9.Left = 5.664
txtData10.Width = 0.7
txtData10.Left = 6.372
txtData11.Width = 0.7
txtData11.Left = 7.08
txtData12.Width = 0.7
txtData12.Left = 7.788
Согласно моим расчетам (которые я люблю математику... математика просто не любит меня:o)) общая ширина будет 8,4 дюйма, а оставшаяся 7,788 дюйма. Ширина листа 8,5 (альбомная ориентация).
Так что теперь трудная часть вступает в игру. Для 11 ящиков ширина увеличилась бы немного, и левая позиция также поднялась бы, чтобы разместить дополнительное пространство, не имеющее 12-го ящика больше.
Я пытаюсь найти хороший способ сделать это с минимальным кодом, так как я знаю, что могу сделать то же самое, что и выше для каждого уровня (от 12 до 2 текстовых полей), но это было бы много кода.
Так что любая помощь в расчете оставшихся 11-2 текстовых полей будет большой помощью!: О)
1 ответ
Я не уверен, что полностью понимаю ваш вопрос, но я понимаю, что вы всегда хотите, чтобы текстовые поля полностью заполняли 8,5 дюйма.
Если это так, я бы сделал следующее:
Dim NumberOfBoxes As Integer = 11 ' Number of textboxes you'll have next to each other
Dim AssignedWidthPerBox As Double = 8.5 / NumberOfBoxes
Dim CurrentLeft As Double = 0 ' How Far left you are on your form - Increment this by AssignedWidthPerBox for each textbox
Затем вы назначаете свойства Textbox либо через цикл (предпочтительно), либо вручную следующим образом:
txtData1.Width = AssignedWidthPerBox
txtData1.Left = CurrentLeft
CurrentLeft += AssignedWidthPerBox
Надеюсь это поможет