Fa TreePlugin

mohamadarab

Active Member
سلام.
دوستان من برای پروژم احتیاج به یک نمودار درختی دارم برای نمایش نام فیلم ها و پخش اون ها.
اما مشکلی که هست اینکه تعدا فیلم ها مشخص نیست .چه جوری میتونم نام فیلم ها رو توی نمودار درختی بیارم بدون اینکه یدونم تعدادش چندتاست؟
مثلا توی فولدری که فیلم ها هستند اگه 3 تا فیلم بود نمودار 3 تا زیر شاخه داشته باشه و اگر 50 تا بود به همون تعدا زیر شاخه بده..
ممنون از راهنمایی هاتون:rose:
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
خب مسلماً در اکثر مواقع تعداد داده ها برای ما مشخص نیست و کد باید بتونه هر تعدادی از داده رو مدیریت کنه.
در بسته ی پلاگین TreeObject Plugin 1.1 مثالی هست بنام New Sample، در اون مثال دو شئ درختی ایجاد شده، یکی توسط حلقه ها برای شرایطی مثل این که نیاز هست داده ها بصورت دینامیک خونده بشن و نمایش داده بشن و دیگری حالتی هست که داده ها همگی مشخص هست و از روش دیگه ای برای نمایش استفاده میشه
کد مربوط به حالت اول این هست:
کد:
TreeID = 1
NumOfParentNodes = GetArrayNum(ParentNodes$,#)
For i = 1 To NumOfParentNodes
  Node$ = GetArrayItem(ParentNodes$,#,i)
  Param$ = CHAR(TreeID) + '|' + '-1' + '|0|' + Node$ + '|0'
  PluginSet("TreeObject","Param$")
  PluginRun("TreeObject","AddTreeItem")
  Items = Items + 1
  *******************************************
  If (NodeItem$[i] <> '') Then
    NumOfChildNodes = GetArrayNum(NodeItem$[i],#)
    For j = 1 To NumOfChildNodes
      ChildNode$ = GetArrayItem(NodeItem$[i],#,j)
      Param$ = CHAR(TreeID) + '|' + '-1' + '|1|' + ChildNode$ + '|0'
      PluginSet("TreeObject","Param$")
      PluginRun("TreeObject","AddTreeItem")
      Items = Items + 1
      **************************************
      If (ChildNode$ = 'Miscellaneous') Then
        ChildNode$ = 'Advanced'
        Param$ = CHAR(TreeID) + '|' + '-1' + '|2|' + ChildNode$ + '|0'
        PluginSet("TreeObject","Param$")
        PluginRun("TreeObject","AddTreeItem")
        Items = Items + 1
      Else
        **// ANOTHER ITEM
      End
    Next j
  End
Next i
**// Expand All Tree Items
For i = 0 To Items
  param$ = CHAR(TreeID) + '|' + CHAR(i) + '|1'
  PluginSet("TreeObject","param$")
  PluginRun("TreeObject","ExpandTreeItem")
Next i
در این کد هم داده ها از آرایه خونده میشن و تعدادشون از قبل مشخص نشده، شما هم باید از روش مشابه این استفاده کنید
در کار با پلاگین TreeObject باید به خاطر داشته باشید که گره ها پشت سر هم وارد میشن، یعنی نمیتونید اول گره های والد رو بسازید و بعد به هرکدوم از اونها یه گره فرزند اضافه کنید
بلکه روش کار به این شکل هست که بعد از ایجاد هر گره والد تمام زیرمجموعه ها (و تمام زیر مجموعه های اون زیرمجموعه ها) اضافه میشن بعد میریم سراغ گره والد بعدی (در هر مرحله به همین شکل هست)
 

mohamadarab

Active Member
ممنون از راهنمایی تون..
اما الان آدرس فولدری که فیلم ها رو داره رو کجا باید بنویسم؟
و توی نمونه ای که گفتید اسم ها دستی نوشته شده از جایی نخونده ...
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
به هرحال شما قبل از هرچیز منبعی دارید که نیاز به نمایش در TreeView داره.
مثلاً باید توسط پلاگین ها یا دستورات خود MMB لیست فایل ها و فولدرها رو که نیاز دارید نمایش بدید بدست بیارید
فرض کنیم لیست این فایل ها و فولدرها در یک آرایه ذخیره شده، برای اضافه کردن آیتم ها از آرایه به درخت از کدی مشابه کد بالا استفاده کنید.
تنها نکته ای که نیاز داره خیلی بهش توجه کنید این هست که آیتم ها باید به ترتیب اضافه بشن
پس اگر تعدادی فولدر دارید که اونها هم ممکنه زیر-فولدر داشته باشن، باید اینها رو به ترتیب وارد کنید
شما بفرمایید لیست فایل ها رو چطور بدست میارید و در چه قسمتیش مشکل دارید
 

جدیدترین ارسال ها

بالا