Стани премиум член и добиј попуст на 2000+ производи и куп други бенефити!
  • Важно
    Имате проблем со најава или регистрација на it.mk?
    Побарајте го решението на вашиот проблем ТУКА!

Скратување на програмски код

Паланчански

Gaining Experience
18 август 2019
582
433
Има ли опција да се скрати програмскиот код?
На пример:

Dim a1 As Integer = Val(TB1.Text)
Dim a2 As Integer = Val(TB2.Text)
Dim a3 As Integer = Val(TB3.Text)
............................................................
Dim a81 As Integer = Val(TB81.Text)

Или:

If a1 > 9 Then TB1.Text = ""
If a2 > 9 Then TB2.Text = ""
If a3 > 9 Then TB3.Text = ""
....................................................
If a81 > 9 Then TB81.Text = ""

Редовите се повторуваат до недоглед, дали постои можност со некој код како
For Each
...................
Next
или нешто слично.

Напомена:
TB значи TextBox.
 
Последна промена:

xhktw

x
2 август 2009
1.432
1.856
xhktw's setup  
Processor & Cooler
MacBook Air M1 16/256
Mouse
Logitech G305 Lightspeed Wireless
Keyboard
Redragon Kumara K552W
Monitor
34" MSI MAG342CQPV 100Hz, 3440x1440 UWQHD Curved
OS
macOS Ventura
C:
For i = 1 To 81
    If eval("a" & i) > 9 Then eval("TB" & i).Text = ""
Next i

Или со array:

C:
Dim values(1 To 81) As Integer
Dim textBoxes(1 To 81) As TextBox

For i = 1 To 81
    If values(i) > 9 Then textBoxes(i).Text = ""
Next i
 

Паланчански

Gaining Experience
18 август 2019
582
433
Нешто ми шкрипи. Не ја препознава синтаксата eval.
Можеби затоа што работам на VB 8 или нешто друго е во прашање.

eval.png
 

viktorf

Intern
27 февруари 2022
5
0
Dim textBoxes As TextBox() = {TB1, TB2, TB3, TB4, ..., TB81}

For Each tb In textBoxes
If a(i) > 9 Then tb.Text = ""
Next


probaj
 

gdamjan

Unstoppable
3 април 2008
3.494
2.433
Скопје
damjan.softver.org.mk
gdamjan's setup  
Processor & Cooler
AMD Ryzen 5 Pro 4650G / Cooler Master Hyper 212 Black
Motherboard
MSI MAG B550m Mortar Wifi
Storage
NVME: 1TB AData XPG SX8200 Pro / HDD: 2x 2TB Toshiba P300
PSU
Gigabyte G750H
RAM
G. SKILL Ripjaws V Series 2x 16GB / DDR4 3200Mhz/CL16
Video card
Vega 7 on APU
Case
Bequiet! PureBase 500
Mouse
Logitech MX Anywhere 2S
Keyboard
ThinkPad USB Keyboard With TrackPoint (sk-8855)
OS
Arch Linux
Наместо да ги штракаш TB1, TB2… рачно како пештерски човек (joke), можеш да ги креираш самите text box-ови програматски, во for loop.
така ќе си ги имаш во array и после ќе работиш врз нив одеднаш.
 

Паланчански

Gaining Experience
18 август 2019
582
433
Dim textBoxes As TextBox() = {TB1, TB2, TB3, TB4, ..., TB81}

For Each tb In textBoxes
If a(i) > 9 Then tb.Text = ""
Next


probaj
Недекларирано tb, недекларирано a, недекларирано i...
Очигледно денес не ми е денот.
Наместо да ги штракаш TB1, TB2… рачно како пештерски човек (joke), можеш да ги креираш самите text box-ови програматски, во for loop.
така ќе си ги имаш во array и после ќе работиш врз нив одеднаш.
Е, тоа за мене веќе е виша математика (пардон, шпанско село).
 

bxxxn

Practice makes perfect
11 март 2011
1.556
1.686
'мала корекција од погоре

Dim i as integer = 0
Dim a(10000) as integer
Dim textBoxes As TextBox() = {TB1, TB2, TB3, TB4, ..., TB81}

For Each tb As TextBox In textBoxes
i=i+1
a(i) = val(tb.text)
If a(i) > 9 Then tb.Text = ""
Next

или доколку сакаш да не ги предефинираш текст боксовите

Dim i as integer = 0
Dim a(10000) as integer

For Each tb As TextBox In Me.Controls.OfType(Of TextBox)()
i=i+1
a(i) = val(tb.text)
If a(i) > 9 Then tb.Text = ""
Next
 
Последна промена:

Паланчански

Gaining Experience
18 август 2019
582
433
'мала корекција од погоре

Dim i as integer = 0
Dim a(10000) as integer
Dim textBoxes As TextBox() = {TB1, TB2, TB3, TB4, ..., TB81}

For Each tb As TextBox In textBoxes
i=i+1
a(i) = val(tb.text)
If a(i) > 9 Then tb.Text = ""
Next

или доколку сакаш да не ги предефинираш текст боксовите

Dim i as integer = 0
Dim a(10000) as integer

For Each tb As TextBox In Me.Controls.OfType(Of TextBox)()
i=i+1
a(i) = val(tb.text)
If a(i) > 9 Then tb.Text = ""
Next
Првото е во ред, второто покажува грешка. Не го признава OfType како член на Me.Controls
 

bxxxn

Practice makes perfect
11 март 2011
1.556
1.686
Пробај со try...catch за доделување на вредност на текст боксот, инаку претпоставувам дека кодот ти е за VB.net, каде што Controls.OfType е ОК?

For Each tb As TextBox In Me.Controls.OfType(Of TextBox)()
i=i+1
a(i) = val(tb.text)
Try
If a(i) > 9 Then tb.Text = ""
Catch
Finally
End Try
Next
 
Последна промена:

Паланчански

Gaining Experience
18 август 2019
582
433
Пробај со try...catch за доделување на вредност на текст боксот, инаку претпоставувам дека кодот ти е за VB.net, каде што Controls.OfType е ОК?

For Each tb As TextBox In Me.Controls.OfType(Of TextBox)()
i=i+1
a(i) = val(tb.text)
Try
If a(i) > 9 Then tb.Text = ""
Catch
Finally
End Try
Next
Не оди ни така. Привремено се откажувам.
Во секој случај благодарам.
 

Нови мислења

Последни Теми

Статистика

Теми
46.585
Мислења
965.495
Членови
34.955
Огласи
2.660
Најнов член
dz0x1
На врв Дно