View Full Version : پاک کردن اسامی تکراری از لیست باکس
  
xrezax
چهارشنبه 01 تیر 1390, 22:52 عصر
بچه ها من یک لیست باکس دارم به نام List2 و یک کامند هم دارم .
می خوام وقتی روی کامند کلیک کنم تمام اسم های تکراری که توی List2 هستند پاک بشن. و برنامه یک اررور بزنه و بگه پایان.
ممنون میشم با پروژه های وی بی توضیح بدین.
 
راستی من تمام پروژه ها و سورس های انجمنو تست کردم به نتیجه ای نرسیدم . یا کار نمی داد یا اررور می زد.
Snoopboy
پنج شنبه 02 تیر 1390, 01:48 صبح
71481
ببین این به دردت می خوره
xrezax
پنج شنبه 02 تیر 1390, 09:23 صبح
بدردم خورد. 
اما وقتی می خوام لیست توش لود کنم برنامه اررور میده
Snoopboy
پنج شنبه 02 تیر 1390, 09:46 صبح
On Error Resume Next
    Dim St As String
    Dim Adress As String
    CD.Filter = ".Texts|*.txt"
    CD.ShowOpen
    Adress = CD.FileName
    If Adress = "" Then
    Exit Sub
    End If
    Open Adress For Input As #1
    Do Until EOF(1)
    Line Input #1, St
    List1.AddItem St
    List1.ListIndex = 0
    Loop
    Close #1
بیا اینم کد دوباره دکمه Load
فقط اسم ابزار رو خودت با برنامه خودت ست کن
xrezax
پنج شنبه 09 تیر 1390, 21:26 عصر
برنامه هنگ میکنه. تعداد چون زیاده :گریه:
xrezax
یک شنبه 12 تیر 1390, 18:50 عصر
مثالی دیگه ای نداری ؟؟؟ سورسی چیزی اگه هست بزارین دوستان.
محسن واژدی
یک شنبه 12 تیر 1390, 22:26 عصر
برنامه هنگ میکنه. تعداد چون زیاده :گریه:
 
سلام عليكم
چون تعداد زياد است و برنامه قفل ميشود ميتوانيد از دستور DoEvents در حلقه استفاده كنيد همچنين يك متن "Please Wait" يا يك ProgressBar و نظير اينها تا اتمام عمليات بارگذاري به منظور اطلاع رساني به كاربر جهت انتظار نمايش دهيد
موفق باشيد
xrezax
دوشنبه 13 تیر 1390, 09:41 صبح
میشه ایدیتش کنی واسم ممنونت میشم :قلب:
محسن واژدی
دوشنبه 13 تیر 1390, 10:26 صبح
کد زیر که ویرایش شده پست 4 است را جایگزین کد دکمه Load کنید:
  On Error Resume Next
 
    Dim St     As String
    Dim Adress As String
    CD.Filter = ".Texts|*.txt"
    CD.ShowOpen
    Adress = CD.FileName
    If Adress = "" Then
        Exit Sub
    End If
    Open Adress For Input As #1
    Me.Caption = "Loading..."
    Do Until EOF(1)
        Line Input #1, St
        List1.AddItem St
        List1.ListIndex = 0
        DoEvents
    Loop
    Me.Caption = "Loaded"
    Close #1
موفق باشید
AMIBCT
دوشنبه 13 تیر 1390, 10:38 صبح
دو تا راه هست كه ميشه سرعت رو افزايش داد
اول استفاده از دستور LockWindowUpdate به صورت زير
LockWindowUpdate( List1.hWnd )
....
LockWindowUpdate( 0 )
اين دستور در API ويندوز است و قبلش بايد تعريف تابع رو در بالاي برنامهتون قرار بديد
راه دوم هم خاموش كردن Visible ليست قبل از شروع عمليات و روشن كردن Visible بعد از پايان عمليات است
به طور كلي ListBox يه شيء مبتدي به حساب مياد
و براي مديريت تعداد زيادي رديف مناسب نيست
محسن واژدی
دوشنبه 13 تیر 1390, 13:37 عصر
دو تا راه هست كه ميشه سرعت رو افزايش داد
اول استفاده از دستور LockWindowUpdate به صورت زير
LockWindowUpdate( List1.hWnd )
....
LockWindowUpdate( 0 )
اين دستور در API ويندوز است و قبلش بايد تعريف تابع رو در بالاي برنامهتون قرار بديد
راه دوم هم خاموش كردن Visible ليست قبل از شروع عمليات و روشن كردن Visible بعد از پايان عمليات است
به طور كلي ListBox يه شيء مبتدي به حساب مياد
و براي مديريت تعداد زيادي رديف مناسب نيست
 
استفاده از روشی که جناب AMIBCT در پست فوق پیشنهاد کرده اند هم میتواند سریعتر و هم بهینه تر باشد
موفق باشید
xrezax
دوشنبه 13 تیر 1390, 17:00 عصر
میشه خود سورسو ایدیت شده بزارید اینجا من نگرفتم :لبخند:
محسن واژدی
دوشنبه 13 تیر 1390, 18:07 عصر
در سورس زیر این API به دستور Load اضافه شده است
برای دستورات ذخیره سازی نیز میتوانید بدین صورت عمل کنید
موفق باشید
xrezax
دوشنبه 13 تیر 1390, 22:15 عصر
اررور می زنه
 
به حلقه J اشکال می گیره
محسن واژدی
سه شنبه 14 تیر 1390, 11:31 صبح
اررور می زنه
 
به حلقه J اشکال می گیره
 
چه خطایی میدهد؟ همینطور داخل چه روالی است چون بنده بجز روال Load مابقی کدها را نخوانده ام
xrezax
سه شنبه 14 تیر 1390, 12:03 عصر
به همون حلقه j اررور می ده
محسن واژدی
سه شنبه 14 تیر 1390, 12:15 عصر
باید ابتدا این منتغیر را توسط دستور اعلان Dim تعریف کنید:
Dim j
موفق باشید
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.