Питання
Чим принципово відрязняеться архітектура застосувать першої та другої лабораторної роботи.
Навіщо оператор DoEvents. Який програмний код виконується після DoEvents. Від чого це залежить.
Які класи містять кодування потрібне для виконання цієї роботи.
Які елементи керування завдання можуть отримувати фокус які ні.
З яких структурних елементів складається проект.
З чого починається виконання програми
Які властивості яких елементів керування отримали значення під час проєктування, які під час виконання програми.
Як зміниться робота програми якщо закоментувати оператори pr = 0
Завдання 3
В додатку 2 приведені таблиці, кожна з яких відповідає одному варіанту завдання. Зірочки в таблицях поміщені в поля, значення яких необхідно обчислити програмно.
В програмі необхідно відобразити на формі образ таблиці з додатку 2, реалізувати обчислення, задані таблицею. Повинна бути передбачений можливість зміни початкових даних, представлених таблицями з контролем правильності заповнення інформації (неприпустимість введення букв в числові поля). Зовнішній образ таблиці повинен бути промоделирован за допомогою списків прокрутки – кожний стовпець таблиці - один список прокрутки.
Для введення і редагування даних в списках може бути використаний наступна технологія.
1 приклад
Private Sub List1_Click()
Text1.Visible = True
Text1.ZOrder (0)
Text1.SetFocus
End Sub
Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, У As Single)
Dim d As Single
Me.ScaleMode = 1
d = Me.TextHeight("a")
Text1.Width = List1.Width
Text1.Height = d
Text1.Left = List1.Left
Text1.Top = List1.Top + У - d / 2
Text1.Text = List1.List(List1.ListIndex)
End Sub
Private Sub Text1_Change()
List1.List(List1.ListIndex) = Text1.Text
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
List1.List(List1.ListIndex) = Text1.Text
Text1.Visible = False
End If
End Sub
Private Sub Text1_LostFocus()
Text1.Visible = False
End Sub
В цьому випадку для введення даних використовується TextBox. Цей елемент розміщений на формі і робиться видимим в мить, коли здійснюється клацання по деякому елементу списку. Позиція елемента поєднується з позицією елемента списку. Відредагована в TextBox інформація займає місце елемента списку.
Забезпечити горизонтальне і вертикальне масштабування елементів управління при зміні розмірів форми. Горизонтальне масштабування забезпечує додавання наступних кодів в модуль форми.
2 Приклад
Public zwith As Single
Dim zhi As Single
Private Sub Form_Load()
zwith = Me.Width
zhi = Me.Height
End Sub
Private Sub Form_Resize()
ratiow = zwith / Width
ratioh = zhi / Height
zhi = Height
zwith = Width
Dim а As Control
On Error Resume Next
For Each а In Controls
а.Left = а.Left / ratiow
а.Width = а.Width / ratiow
а.Top = а.Top / ratioh
а.Height = а.Height / ratioh
а.X1 = а.X1 / ratiow
а.X2 = а.X2 / ratiow
а.Y1 = а.Y1 / ratioh
а.Y2 = а.Y2 / ratioh
Next
End Sub
Варіанти кодування для NET
Альтернативна технологія на C#
private void list_mousedoun(object sender, MouseEventArgs e)
{
float d;
d = listBox1.ItemHeight;
textBox1.Width = listBox1.Width;
textBox1.Height = (int)d;
textBox1.Left = listBox1.Left;
textBox1.Top = (int)(listBox1.Top + e.Y - d / 2);
textBox1.Text = listBox1.Text;
}
private void list_clic(object sender, EventArgs e)
{
//Text1.Visible = True
//Text1.ZOrder (0)
//Text1.SetFocus
textBox1.BringToFront();
textBox1.Visible = true;
textBox1.Focus();
}
private void kp1(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)
{
textBox1.Visible = false;
int a = listBox1.SelectedIndex;
listBox1.Items.RemoveAt(a);
listBox1.Items.Insert(a, textBox1.Text);
}
}