امین مهدی نژاد 2,142 ارسال شده در 14 آذر، ۱۳۹۵ اشتراک گذاری ارسال شده در 14 آذر، ۱۳۹۵ قابلیت هایی که در بی فور نسخه 6 اضافه شده.سبب راحت تر شدن و تمیزتر شدن کدها میشه بخصوص افزوده شدن ماژول کاستوم ویو . در این آموزش نحوه ساخت مولتی پنل با کاستوم ویو و بدون استفاده از تگ ها رو آموزش میدیم. مثال پایه ما در آموزش هم همون مثال آقا آرتا است که ما اون رو با استانداردهای بی فور 6 ایجاد می کنیم. نحوه ساخت: ابتدا یک ماژول کاستوم ویو با محتوای زیر ایجاد می کنیم. #Event: Click2 (Value As Int) #Event: mItemBtnClick (Value As Int) #DesignerProperty: Key: BooleanExample, DisplayName: Boolean Example, FieldType: Boolean, DefaultValue: True, Description: Example of a boolean property. #DesignerProperty: Key: IntExample, DisplayName: Int Example, FieldType: Int, DefaultValue: 10, MinRange: 0, MaxRange: 100, Description: Note that MinRange and MaxRange are optional. #DesignerProperty: Key: StringWithListExample, DisplayName: String With List, FieldType: String, DefaultValue: Sunday, List: Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday #DesignerProperty: Key: StringExample, DisplayName: String Example, FieldType: String, DefaultValue: Text #DesignerProperty: Key: ColorExample, DisplayName: Color Example, FieldType: Color, DefaultValue: 0xFFCFDCDC, Description: You can use the built-in color picker to find the color values. #DesignerProperty: Key: DefaultColorExample, DisplayName: Default Color Example, FieldType: Color, DefaultValue: Null, Description: Setting the default value to Null means that a nullable field will be displayed. Sub Class_Globals Private EventName As String 'ignore Private CallBack As Object 'ignore Private mBase As Panel Private DefaultColorConstant As Int = -984833 'ignore Public chk As CheckBox Private btn As Button Private pnl As Panel Private idme As Int End Sub Public Sub Initialize (vCallback As Object, vEventName As String) EventName = vEventName CallBack = vCallback End Sub Public Sub DesignerCreateView (id As Int) idme=id mBase.Initialize("mBase") mBase.LoadLayout("item") End Sub Public Sub GetBase As Panel Return mBase End Sub Sub chk_CheckedChange(Checked As Boolean) End Sub Sub btn_Click CallSub2(CallBack, EventName & "_" & "mItemBtnClick",idme) End Sub Sub mBase_Click CallSub2(CallBack, EventName & "_" & "Click",idme) End Sub در ماژول اکتیویتی هم کد زیر رو قرار میدیم Sub Process_Globals Dim MyBank As SQL End Sub '=========================================== Sub Globals Dim GetTag As Object Dim offsetY As Int = 1%y Private sv As ScrollView End Sub '=========================================== Sub Activity_Create(FirstTime As Boolean) Activity.LoadLayout("scroll") If File.Exists(File.DirInternal,"eventdb.db") = False Then File.Copy(File.DirAssets,"eventdb.db",File.DirInternal,"eventdb.db") End If If MyBank.IsInitialized = False Then MyBank.Initialize(File.DirInternal,"eventdb.db",False) End If LoadData End Sub '=========================================== Sub LoadData Dim Cr As Cursor Cr = MyBank.ExecQuery("SELECT * FROM Dynamic") For i = 0 To Cr.RowCount - 1 Cr.Position = i Dim itm As mItem itm.Initialize(Me,"itm") itm.DesignerCreateView(Cr.GetInt("id")) sv.Panel.AddView(itm.GetBase,1%x,offsetY,99%x,100%y) offsetY = offsetY + 20%y Next Cr.Close sv.Panel.Height = offsetY End Sub Sub Activity_Resume End Sub Sub Activity_Pause (UserClosed As Boolean) End Sub Sub itm_Click(id As Int) Dim itm As mItem=Sender Dim Cur As Cursor Cur = MyBank.ExecQuery("SELECT * FROM Dynamic WHERE id="&id) Cur.Position = 0 itm.chk.Checked = Not(itm.chk.Checked) End Sub Sub itm_mItemBtnClick(id As Int) Dim itm As mItem=Sender itm.chk.Checked = Not(itm.chk.Checked) End Sub توضیحات: ما در اکتیویتی و در حلقه For به صورت زیر آیتم ها را بر اساس کاستوم ویویی که ساختیم ایجاد کردیم Dim itm As mItem itm.Initialize(Me,"itm") itm.DesignerCreateView(Cr.GetInt("id")) sv.Panel.AddView(itm.GetBase,1%x,offsetY,99%x,100%y) و مقدار id رو از دیتابیس به کاستوم ویو ارسال می کنیم. خب در قسمت رویداد ها به دو طریق اطلاعات رو بین هر آیتم و رویداد مورد نظر ارسال کردیم تا از هر روش مناسب تر دیدید استفاده کنید. روش اول استفاده از آرگومان ها بوده است ما ابتدا رویداد ها رو به همراه آرگومان های اونها مشخص کردیم که در اینجا فقط id به این روش ارسال میشه پس داریم #Event: Click2 (Value As Int) #Event: mItemBtnClick (Value As Int) و بدنه رویداد ها هم که اینه Sub btn_Click CallSub2(CallBack, EventName & "_" & "mItemBtnClick",idme) End Sub Sub mBase_Click CallSub2(CallBack, EventName & "_" & "Click",idme) End Sub در اکتیویتی برای گرفتن id دیگه نیاز به تگ و سندر نداریم Sub itm_Click(id As Int) Dim Cur As Cursor Cur = MyBank.ExecQuery("SELECT * FROM Dynamic WHERE id="&id) Cur.Position = 0 End Sub روش دوم استفاده از متغیرهای عمومی می باشه. که در اینجا CheckBox به این روش ارسال شده است Public chk As CheckBox و در رویداد اکتیویتی هم به روش سندر اونو فراخونی کردیم Dim itm As mItem=Sender itm.chk.Checked = Not(itm.chk.Checked) این اولین آموزش من بود. اگه یه خورده بد توضیح دادم. نادیده بگیرید. مثالش رو پیوست کردم. «موفق باشید.» MultiPanel&CustomView.rar لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
berayan 90 ارسال شده در 7 دی، ۱۳۹۵ اشتراک گذاری ارسال شده در 7 دی، ۱۳۹۵ برای ادیت تکست هم توضیح دهید لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
امین مهدی نژاد 2,142 ارسال شده در 7 دی، ۱۳۹۵ سازنده اشتراک گذاری ارسال شده در 7 دی، ۱۳۹۵ در 2 ساعت قبل، berayan گفته است : برای ادیت تکست هم توضیح دهید کد کاستوم ویو: Sub Class_Globals Private EventName As String 'ignore Private CallBack As Object 'ignore Private mBase As Panel Private Label1 As Label Private Label2 As Label Private Label3 As Label Private EditText1 As EditText End Sub Public Sub Initialize (vCallback As Object, vEventName As String) EventName = vEventName CallBack = vCallback End Sub Public Sub DesignerCreateView () mBase.Initialize("mBase") mBase.LoadLayout("item") End Sub Public Sub GetBase As Panel Return mBase End Sub Sub EditText1_TextChanged (Old As String, New As String) If Regex.IsMatch("[0-9]+",New) Then Label1.Text=New Else Label1.Text=-1 End If End Sub در رویداد TextChanged بررسی میکنه اگه متن عدد باشه در لیبل اول مقدار اونو وارد کنه وگرنه مقدار -1 رو در اون وارد می کنه «موفق باشید» لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.