PDA

View Full Version : انتقال اطلاعات به داخل دیتاگرید



samiasoft
یک شنبه 04 آبان 1393, 12:09 عصر
سلام دوستان

من یه فایلی حاوی اطلاعات زیر دارم :

BEGIN:VCARD
VERSION:2.1
FN:Aseman Asemani
TEL CELL:0938378
TEL WORK:000000000
URL:wwww
NOTE:SALAM
END:VCARD

BEGIN:VCARD
VERSION:2.1
FN:As mani
TEL CELL:093684588
TEL WORK:000000000
NOTE:SALAM2
END:VCARD

....

که رفته رفته به همین شکل هست.
میخواستم این اطلاعات را که داخل فایل نت پد هست بیارم داخل دیتا گرید یا VSFLEX8 که هرکدوم در یک ستونی نمایش داده بشه.
FN در ستون اول.....TEL CELL در ستون دوم...TEL WORK در ستون سوم....URL در ستون چهارم.....NOTE در ستون پنجم

برای این کار شما ایده ای دارید؟ به نظر خودم باید اینارو اول بیارم داخل یه فایل تکست باکس بریزم بعد از اونجا منتقل کنم.ایا جز این روش دیگری هست؟
البته این کارو هم بلد نیسم چطوری از داخل تکست باکس اینارو بیارم تو ستون جداگانه.

ممنون میشم راهنمایی کنید.

همچنین نکته دیگری هم که باید اشاره بشه اینه که در مواردی مثلا ردیف مربوط به ستونی باید خالی باشه. الان در ساختاری که قرار دادم میبنید که برای قسمت دوم URL وجود ندارد. که خب باید برای این ردیف ستون URL خالی باشه.

vbhamed
یک شنبه 04 آبان 1393, 15:01 عصر
سلام
خب این یک کار نسبتا ساده هست فقط باید انجامش داد
سطر به سطر از فایل بخونید، هر موقع به عبارت BEGIN:VCARD رسیدید یک سطر جدید به Flex اضافه کنید برای بقیه عبارات هم از یک دستور Select Case استفاده کنید عبارت خوانده شده از فایل رو در نظر بگیرید، از اول اون عبارت تا جای : رو جدا کنید و در یک متغیر مثلا FiledName و از : به بعد رو در متغیر دیگه ای مثلا FieldValue قرار بدین (به کمک توابع Instr و Mid)

حالا اگر متغیر FieldName مثلا برابر :FN بود FieldValue رو در ستون 2 بنویسید (فرض کنیم نام در ستون 2 قرار داره)
به کمک خاصیت TextMatrix کامپوننت vsFlexGrid

اگر متغیر FieldName برابر :TELL CELL بود FieldValue رو در ستون 3 بنویسید (فرض کنیم موبایل در ستون 3 قرار داره)

و به همین ترتیب ادامه بدین، در مورد سطرهای خالی یا عبارت END:VCARD هم هیچ کاری نیاز نیست انجام بدین

samiasoft
دوشنبه 05 آبان 1393, 16:54 عصر
من تونستم اطلاعاتم رو از داخل فایل تکست بخونم اما چگونه اینارو به داخل vsFlexGrid انتقال بدم؟ باید از adodc هم استفاده کنم؟ اما نمیخوام ازش استفاده کنم.

خاصیت TextMatrix رو هم نتونستم پیدا کنم

در حالت کلی میشه بگین چگونه یک متنی که داخل تکست باکس هست رو بیارم داخل ستون خاصی از vsFlexGrid ؟

ممنون

vbhamed
سه شنبه 06 آبان 1393, 08:24 صبح
سلام
اگر از كامپوننت ComponentOne vsFlexGrid استفاده كرده باشيد خاصيت TextMatrix رو داره و با اين خاصيت ميشه متن يك سطر و ستون خاص رو تعيين كرد
vsFlexGrid1.TextMatrix(0, 0) = "Test"
براي اضافه كردن سطر هم روش زير
vsFlexGrid1.Rows = vsFlexGrid1.Rows + 1
نيازي به Ado هم نيست

samiasoft
سه شنبه 06 آبان 1393, 20:22 عصر
دو سوال دیگر:لبخند:
1 - در ComponentOne vsFlexGrid ایا میشه براش جستجو هم قرار داد ؟ یعنی بدون نیاز به Adodc :متفکر:

2 - من میخواستم بازم بدون Adodc روی هر ردیفی که کلیک میکنم اطلاعاتش داخل تکست باکس نمایش داده بشه برای همین :


Private Sub VSFlexGrid1_RowColChange()
Text2.Text = VSFlexGrid1.TextMatrix(شماره ستون, شماره ردیف)
End Sub


که خب شماره ستون رو میتونم داخلش قرار بدم اما برای شماره ردیف چیکار کنم؟ اخه شماره ردیف با کلیک کردن رو سطر که هایلایت میشه کل سطر باید مشخص بشه. برای همین به جای شماره ستون چه چیزی باید قرار بدم؟:متفکر:

ممنون میشم در این مورد هم منو راهنمایی کنید

vbhamed
چهارشنبه 07 آبان 1393, 11:25 صبح
سلام
با استفاده از خاصيتهاي زير سطر و ستون جاري رو مي‌تونيد داشته باشيد
vsFlex.Row, vsFlex.Col

samiasoft
چهارشنبه 07 آبان 1393, 11:56 صبح
برای جستجو این رو نوشتم اما ارور اینواید ایندکس میده :متفکر:

For i = 0 To VSFlexGrid1.Rows
If Text1.Text = VSFlexGrid1.TextMatrix(i, 0) Then
VSFlexGrid1.SetFocus
VSFlexGrid1.Select i, 0
Exit For
End If
Next i

در واقع اینجوریه که اگر جستجوی من بیش از یه موارد رو پیدا کنه این ارور رو میده. اما وقتی موارد یافتنیش فقط یه مورد باشه به درستی کار میکنه.

vbhamed
چهارشنبه 07 آبان 1393, 18:03 عصر
سلام
شما بايد در حلقه از 0 تا vsFlex.Rows - 1 حركت كنيد چون vsFlex.Rows تعداد كل سطرها رو ميده و وقتي مثلا 10 سطر داشته باشيد شماره سطرها از 0 تا 9 ميشه، براي vsFlex.Cols هم همينطوره