رفتن به مطلب
  • 0

دسترسی در حلقه های تو در تو


amoramante

سوال

سلام دوستان

من یک حلقه تو در تو با 32 باتن ایجاد کردم .

حالا میخوام به باتن ها دسترسی داشته باشم و برای یک باتن دلخواه دستورات رو بنویسم که چه کاری رو انجام بده ولی نمیتونم به اونها دسترسی پیدا کنم ...

من تازه کار هستم و این کدیه که نوشتم 

لطفا راهنمایی کنید ...

 

 

 

    For i = 0 To 3
        For j = 0 To 7
            Dim B As Button
            B.Initialize("")
            If i = 0 Then
                B.Text = i + j + 1
            Else If i = 1 Then
                B.Text = i+j+8
            Else If i = 2 Then
                B.Text = i+j+15
            Else If i = 3 Then
                B.Text = i+j+22
            End If
            B.SetBackgroundImage(LoadBitmap(File.DirAssets,"key.png"))
            B.TextColor = Colors.Red
            Activity.AddView(B,Offsetx,Offsety,10%x,10%y)
'            Arr(i,j) = B
            Offsetx = Offsetx + 12%x
        Next
        Offsety = Offsety + 12%y
        Offsetx = 3%x
    Next

لینک ارسال
به اشتراک گذاری در سایت های دیگر

4 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

سلام و درود 

اگه منظورتون از دسترسی همون رویداد کلیکه که خیلی سادس شما موقه اینیشیالایز کردن هر کدومو با نام یکتا اینشیالایز کن بعد کلیکهاشونو هم با همون ایونت نیم بنویس

 B.Initialize("B_"&i&j)

  for i=1 , j=2 


sub B_12_Clic
///////////
end sub

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در هم اکنون، محمدرضا شاهپیری گفته است :

سلام و درود 

اگه منظورتون از دسترسی همون رویداد کلیکه که خیلی سادس شما موقه اینیشیالایز کردن هر کدومو با نام یکتا اینشیالایز کن بعد کلیکهاشونو هم با همون ایونت نیم بنویس


 B.Initialize("B_"&i&j)

  for i=1 , j=2 


sub B_12_Clic
///////////
end sub

 

مثلا الان بخوام بک گراند همه باتن ها یکی باشه ، و با زدن یک دکمه بک گراند فقط خانه شماره مثلا 7 عوض بشه باید چیکار کنم ؟؟؟

میشه سورس رو تکمیل کنید برام :empathy3:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

اینجوری خودتونو به دردسر میندازین و نمیتونین مدیریت کنین باتنها رو چون همه لوکال تعریف میشن

شما نهایتا 20 تا باتن دارین بیاین و اونارو تو دیزاینر طراحی کنید و اونا رو تو sub global هم تعریف کنید دیگه هر کاری میخواین میتونین روشون انجام بدین

لینک ارسال
به اشتراک گذاری در سایت های دیگر

صحبتی که دوستمون آقای شاهپیری می کنن توی بیشتر مواقع جواب میده. با این حال برای اینکه با وجود تازه کار بودن، کد خیلی خوبی نوشتید و خودمم اوایل کار کردنم به این مشکل بر خورده بودم، سورسی رو برات آماده کردم که به خوبی متوجهش میشی و کارایی لازم برات رو داره.

#Region  Project Attributes 
	#ApplicationLabel: multi button
	#VersionCode: 1
	#VersionName: 
	'SupportedOrientations possible values: unspecified, landscape or portrait.
	#SupportedOrientations: unspecified
	#CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes 
	#FullScreen: False
	#IncludeTitle: True
#End Region

Sub Process_Globals

End Sub

Sub Globals
	Dim xx As Int = Activity.Width
	Dim yy As Int = Activity.Height
	Dim sv As ScrollView
End Sub

Sub Activity_Create(FirstTime As Boolean)	
	sv.Initialize(xx)
	Activity.AddView(sv, xx/20, xx/20, xx-xx/10, yy-xx/10)
	
	Dim side_border As Int = xx*3/40 'left and right border (distance) from edghe of it's parent panel
	Dim top_down_border As Int = xx/40 'top and down border (distance) from edghe of it's parent panel
	Dim number_inrow As Int = 5 'number of buttons(views) in a row
	Dim number_incolumn As Int = 10 'number of buttons(views) in a column
	Dim space As Int = xx/30 'space between two buttons(views)
	Dim paranet_panel_width As Int = sv.Width 'the width of parent panel of views
	
	Dim size_button As Int = (paranet_panel_width - space*(number_inrow-1)- (2*side_border)) /number_inrow
	For j = 1 To number_incolumn
		For i = 1 To number_inrow
			Dim b As Button
			b.Initialize("button") 'event name of button(view)
			
			sv.Panel.AddView(b, side_border + (i-1)*(space + size_button), _
				top_down_border + (j-1)*(space + size_button), size_button, size_button)
			sv.Panel.Height = b.Top + b.Height + xx/40 'add views to the scrollview
			
			b.Tag = i + (j-1) * number_inrow 'we need the tag to use in event sub (sub button_Click)
			b.Text = b.Tag
			b.TextColor = Colors.DarkGray
			b.Color = Colors.White
		Next
	Next
	
End Sub

Sub button_Click
	Dim button_clicked As Button = Sender
	If button_clicked.Tag < 6 Then
		button_clicked.Color = Colors.Yellow
	Else if button_clicked.Tag < 11 Then
		button_clicked.Color = Colors.LightGray
	Else
		button_clicked.Color = Colors.RGB(Rnd(0,255), Rnd(0,255), Rnd(0,255))
	End If
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

 

توی این سورس کد، شما می تونید تعداد ویووهایی که می خواهید در سطر و ستون داشته باشید رو وارد کنید و فاصله اون از لبه های چپ و راست و بالا و پایین رو هم مشخص کنید و همینطور فاصله بین دو ویوو. سپس به طور خودکار ویووها با فاصله منظم از همدیگه داخل اون پنل parent اضافه میشه. همچنین یک رویداد کلیک ساده قرار دادم که بر اساس شرایط هر دکمه، رنگ ویوو تغییر می کنه.

این سورس برای خیلی از دوستان و توی ساخت خیلی صفحات (مثلا صفحه مراحل یک بازی)، یک صفحه مثل جدول ضرب، یا طراحی های چند ستونه به صورت CardView می تونه مفید باشه.

Multi Buttons.zip

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...