PDA

View Full Version : گذاشتن عکس در برنامه توسط کاربر



maryamb
سه شنبه 24 اردیبهشت 1387, 09:53 صبح
من می خوام تو برنامم یه گزینه ای داشته باشم که از طریق اون کاربر بتونه یه عکس انتخاب کنه که اون عکس مثلا بالا ی فاکتوری که برنامه چاپ می کنه قرار بگیره و با اجرای مجدد برنامه هم اون عکس سر جای خودش باشه.
چطور می تونم این کار رو بکنم؟ضمنا من ازadodc استفاده می کنم
ممنون از همگی

sajjad1365
سه شنبه 24 اردیبهشت 1387, 10:58 صبح
بسم الله.
یه picbox بذار و یه command dialog ویه دونه adodc . بعد از اینکه عکس رو تو picbox لود کردی با دستور Adodc1.Recordset.Save عکس رو تودیتابیس سیو کن.به همین راحتی.
اگه بخوای برنامه رو میذارم.

maryamb
سه شنبه 24 اردیبهشت 1387, 11:12 صبح
خیلی ممنون از پاسخ گویی تون
اگه یه نمونه برنامه برام بزارین لطف بزرگی کردین

kitten
سه شنبه 24 اردیبهشت 1387, 20:07 عصر
من کدش را توخونه دارم اگه یه کم صبر کنی برات تو همین تاپیک می فرستم
اگه بخوام یه کم برات توضیح بدهم باید بگم که باید از یه image استفاده کنی و یه کد مثل این بنویسی

image1.picture = loadpicture(ادرس")
که یه کم تو این ادرسش باید دقت کنی چون ادرس گیری در ویزوال این طوری است که بعضی ادرس ها را با بک اسلش نشون می ده بعضی ها را بدون ان که باید با یه دستور ایف چک بشه
خلاصه :چند روز دیگه کدش را برات می فرستم

mehdad.koulab
چهارشنبه 25 اردیبهشت 1387, 11:52 صبح
میتونی از یه image استفاده کنی و بعد با دستور save تصویر مورد نظر خودت رو تو database ذخیره کنی و برای آوردن تصویر و هم برای ذخیره کردن اون هم از command dialog استفاده کن البته همون طور که دوستمون sajjad1365 گفت می تونی از picbox استفاده کنی که این یه کم کارتو مشکل می کنه چون image به حالت خود کار streech داره فقط باید true کنی ولی برای pixbox باید کد نویسی کنی که اون هم اگه خواستی بگو تا تو این بگم.

maryamb
چهارشنبه 25 اردیبهشت 1387, 12:51 عصر
اگه نمونه برنامه بهم بدین لطف بزرگی کردین
من می خوام وقتی کاربر یه عکس رو انتخاب کرد اون عکس همیشه بالای فاکتورش نمایش داده بشه

H4i0 ACP
چهارشنبه 25 اردیبهشت 1387, 12:52 عصر
سلام
کد ذخیره عکس در DATA BASE رو اگر ممکنه بذارید .

ASKaffash
چهارشنبه 25 اردیبهشت 1387, 14:28 عصر
با سلام
این هم دوتابع برای ارسال هر چیز به یک پایگاه داده
Public Function Binary2SQL(ByVal YourFileName As String, ByRef YourRecordSet As Recordset, ByVal YourFieldName As Variant) As Boolean
Dim FH As Integer, FL As Long, ChunkSize As Integer, Chunks As Integer
Dim Fragment As Integer, Chunk() As Byte, i As Integer
ChunkSize = 16384
FH = FreeFile()
On Error GoTo NoBinary2SQL
Open YourFileName For Binary Access Read As #FH
FL = LOF(FH)
If FL <> 0 Then
Do While FL Mod ChunkSize = 0
ChunkSize = ChunkSize - 1
Loop
Chunks = FL \ ChunkSize
Fragment = FL Mod ChunkSize
YourRecordSet.Fields(YourFieldName).AppendChunk Null
ReDim Chunk(Fragment)
Get FH, , Chunk()
YourRecordSet.Fields(YourFieldName).AppendChunk Chunk()
ReDim Chunk(ChunkSize)
For i = 1 To Chunks
Get FH, , Chunk()
YourRecordSet.Fields(YourFieldName).AppendChunk Chunk()
Next
YourRecordSet.Update
Binary2SQL = True
End If
Close FH
NoBinary2SQL:
End Function
Public Function SQL2Binary(ByRef YourRecordSet As Recordset, ByVal YourFieldName As Variant, ByVal YourFileName As String) As Boolean
Dim FH As Integer, FL As Long, ChunkSize As Integer, Chunks As Integer
Dim Fragment As Integer, Chunk() As Byte, i As Integer
ChunkSize = 16384
FH = FreeFile()
On Error GoTo NoSQL2Binary
Open YourFileName For Binary Access Write As #FH
FL = YourRecordSet.Fields(YourFieldName).ActualSize
Do While FL Mod ChunkSize = 0
ChunkSize = ChunkSize - 1
Loop
Chunks = FL \ ChunkSize
Fragment = FL Mod ChunkSize
ReDim Chunk(Fragment)
Chunk() = YourRecordSet.Fields(YourFieldName).GetChunk(Fragm ent)
Put FH, , Chunk()
ReDim Chunk(ChunkSize)
For i = 1 To Chunks
Chunk() = YourRecordSet.Fields(YourFieldName).GetChunk(Chunk Size)
Put FH, , Chunk()
Next
Close FH
SQL2Binary = True
NoSQL2Binary:
End Function

maryamb
چهارشنبه 25 اردیبهشت 1387, 14:43 عصر
مشکل من حل نشد.
دوستانی که گفتن تکه برنامه دارن که این کار رو می کنه من رو از لطف خودشون بی نصیب نذلرن

ali_habibi1384
پنج شنبه 26 اردیبهشت 1387, 17:24 عصر
ذخیره کردن توی بانک اطلاعاتی که برای حسابداری استفاده میشه صحیح نیست زیرا حجم اطلاعات رو بالا می بره و سرعت میاد پایین. بهتره که شما یک فیلد برای ذخیره سازی مسیر عکس درست کنین سپس عکسی رو که لازم دارید توسط comondialig انتخاب کنید و مسیرش رو از commondialog بخونین.
موقع چاپ عکس توسط loadpicture اونو توی یه picture box بارگذاری کنید و محتویات اونو به گزارش یا پرینتر بفرستید.

kitten
پنج شنبه 26 اردیبهشت 1387, 19:32 عصر
سلام دوستان این هم برنامه لود پیکچر

maryamb
شنبه 28 اردیبهشت 1387, 10:38 صبح
ممنون از فایل ضمیمه ولی می خوام وقتی کاربر عکس رو انتخاب کرد دیگه تا وقتی اونو عوض نکرد بمونه.
مثلا سر برگ فاکتو ر رو انتخاب کنه دیگه عوض نشه.نه اینکه تو هر بار پرینت عکس رو هم انتخاب کنه
ممنون اگه نمونه برنامه بفرستین

ali_habibi1384
شنبه 28 اردیبهشت 1387, 15:21 عصر
اینکه کاملا مشخصه.
شما لازم نیست برای هر چاپ از کاربر مسیر عکس رو بپرسید . فقط کافیست این گزینه رو به تنظیمات برنامه اضافه کنید و مسیر عکس انتخابی رو توی قسمت تنظیمات مربوط به بانکتون ذخیره کنید . سپس هر بار که بخواهید چاپ کنید فقط مسیر ذخیره شده در تیبل رو بارگذاری می کنید.

maryamb
شنبه 28 اردیبهشت 1387, 15:38 عصر
می شه بگید چجوری باید مسیر رو تو تیبل ذخیره کنم و بعد چطوری فرا خوانی کنم؟
اگه با کد بگید ممنون می شم

ali_habibi1384
شنبه 28 اردیبهشت 1387, 16:04 عصر
یک فیلد از نوع text درست کنید .
اگر با commondialod مسیر عکس رو میگیرید توسط متد filename اطلاعات مربوط به مسیر عکس رو بگیرید و در تیبل ذخیره کنید.

maryamb
شنبه 28 اردیبهشت 1387, 17:10 عصر
می شه دستور لود کردنش رو هم بگید؟

.:KeihanCPU:.
شنبه 28 اردیبهشت 1387, 18:59 عصر
به نظر من در همون برنامه ای که دوستمون گذاشته:
با انتخاب عکس آدرس عکس در رجیستری سیو بشه
Savesetting "Project1", "Picture" ,"value" , Picture Address
بعدش باید در Form_LOad این دستور رو بذاری
A=getsetting "Project1" ,"picture" ,"value" ,Picture Address
image1.loadPicture a
حالا دیگه زمانی که فرم Load میشه عکس هم Load میشه

ali_habibi1384
یک شنبه 29 اردیبهشت 1387, 02:07 صبح
در نمونه ضمیمه شده چگونگی دریافت مسیر عکس از کاربر و ذخیره شدن آن در دیتا بیس آمده است و نیز بارگذاری عکس در image از درون دیتابیس آورده شده است.

mah6951
سه شنبه 12 مرداد 1389, 15:48 عصر
سلام میشه بگوید نوع فیلد چه باشد text یا ole object ؟ بعد چطور مسیر فایل تصویر ذخیره کنم؟ بعد چطور می توانم با استفاده از این فیلد نمایش بدهم؟ ممنون

sajjad zeinalpor
چهارشنبه 13 مرداد 1389, 20:38 عصر
اگه میشه کد بانک اکسس و با Adodc ربط داده بشه و اگه خود برنامه را بزارید ممنون میشم.

returnx
پنج شنبه 14 مرداد 1389, 10:34 صبح
شما تو بانکتون یک فیلد از نوعtext به اسم ax یا هراسم دیگه ای درست کنید بعد در فرمتون یکcommand dialog و یک textbox وهمینطور یک button و یک imagebox بذارید .
texbox رو به بانکتون و فیلد ax ارتباط بدید بعد خاصیت streach در imagebox رو برابر true قرار بدید و بعد در button کد زیر رو کپی کنید
هر جا در کد cmd دیدید یعنیcommand dialog

cmd.Filter = "All Graphic Formats|*.jpg;*.bmp;*.gif|jpg|*.jpg|GIF|*.gif|BMP| *.bmp"
cmd.ShowOpen
Text1.Text = cmd.FileName
Image1.Picture = LoadPicture(cmd.FileName)

و برای form_load کد زیر را اظافه کنید:

Image1.Picture = LoadPicture(Text1.Text)

برای دکمه next :

If Adodc1.Recordset.EOF = True Then
Adodc1.Recordset.MoveFirst
Else
Adodc1.Recordset.MoveNext
End If
Image1.Picture = LoadPicture(Text1.Text)

برای دکمه previous هم که مشخصه.
اگه خواستید برنام رو هم براتون می زارم.

mah6951
دوشنبه 18 مرداد 1389, 14:09 عصر
سلام با تشکر از ali_habibi1384
مسیر تصویر در بانک ذخیره کردم چطور می توانم در گزارش data report تصویر نشان داد؟و ان را چاپ کرد. اشاره کردید با loadpicture .
لطفا کد ان را بنویسد

چینی ساز
دوشنبه 18 مرداد 1389, 15:00 عصر
سلام
شما در فرمت ی image بزار و مثل textbox مسیر بانک و فیلدی که آدرس عکس هست رو بده فرم لود شد عکس هم باز میشه فقط باید ی شرط بزاری که اگر فیلد آدرس پر بود و در غیر اینصورت ارور میده
و برای اضافه کردن هم ی کلید می زاری و از dbimage استفاده کن کلا با 5 خط می تونی آماده کنی
اگه مشکلت هنوز حل نشد ب من ایمیل بزن ی برنامه برات بفرستم
chinisaz_morteza@yahoo.com

ghasemweb
چهارشنبه 20 مرداد 1389, 21:17 عصر
سلام دوستان به نظر من بهترين روش همونيه كه دوست عزيزمون گفتن هستش كه بايد شما مسير عكس انتخابي كاربر را به عنوان يك فيلد متني در بانك ذخيره كنيد و در يك imagebox لود كنيد كه دوستان زحمت سورسشو كشيدن منتها مشكل اينجاست من تا حالا تو گزارش گيري از عكس ذخيره شده در بانك استفاده نكردم و احتمالا بشه.راستي اون روشي كه گفتن آدرس عكس در رجيستري ذخيره بشه همچين يه كم غير اصولي هستش. البته جسارت نشه به دوستان.
اگه تونستم و وقت شد الساعه يه سورس كد ضميمه مي كنم
مـــوفـــق باشد همگـــي

hossein_sh2008
پنج شنبه 21 مرداد 1389, 12:04 عصر
با سلام خدمت دوستان
به نظر من اگر مسير عكس رو توي بانك نگه داريد و بعد با دستور زير هر دفعه عكس را داخل picture‌لود كنيد
((picture1.picture=load picture(adodc1.recordset.fileld(0
كه در اون مثلا صفر شماره فيلد هستش
كه مسير عكس داخلشه
در ضمن ياد آور مي شوم كه شما با دستور move next يا find مي تونيد ركوردها رو تغيير دهيد

SilverGold
شنبه 23 مرداد 1389, 00:42 صبح
سلام این روشی که دوستان گفتند خوبه ولی کار شما با بانک اطلاعاتی درست نمیشه
یعنی اگه هم درست کار کرد روش شما صحیح نیست
بهترین کار ؛ کارکردن با رجیستری ویندوز هستش اگه خواستین از این روش استفاده کنین به من بگید من فایلشو در اختیارتون بذارم
با یک خط کد

ghasemweb
جمعه 29 مرداد 1389, 10:35 صبح
من به کلی سر در گم شدم مگه سوال این نیست که کاربر یک عکس رو انتخاب کنه و اون عکس همیشه تو بانک موجود باشه و در صورت نیاز در صفحه گزارش گیری به همراه اطلاعات دیگه نمایش داده بشه و چاپ بشه؟

mobi3nter
چهارشنبه 03 شهریور 1389, 08:04 صبح
چرا همینه ، موندم دوستان پی می گن :متعجب:
ghasemweb (http://www.barnamenevis.org/forum/member.php?u=109005) لطفا سریع تر این سورس رو آماده کن که خیلی لازمش دارم
ممنون می شم اگر من رو خبر کنی
sou_javad_69@yahoo.com

kiss_my_l0ve
چهارشنبه 03 شهریور 1389, 09:17 صبح
سلام
من تمام اين روش هاي كه دوستان گفتن رو امتحان كردم ولي بهترين و راحت ترين نش استفاده از DBImage.ocx هستش اگه خواستي بگو يه نمونه برنامه واست بزارم

mobi3nter
چهارشنبه 03 شهریور 1389, 09:49 صبح
kiss_my_l0ve (http://www.barnamenevis.org/forum/member.php?u=157266)
ممنون می شم بزاری

mds_boy
جمعه 05 شهریور 1389, 21:13 عصر
rببخشید ها، عجب مخهایی هستید شما :قهقهه:.
بابا ایشون ali_habibi1384 (http://barnamenevis.org/forum/member.php?u=48789) بهترین روش رو ارائه کردند.
کار با رجستری برای ذخیره عکس !!! ایول بابا، این روش اصلا توصیه نمیشه، مگه 1 عکسه !!!
فایل ضمیمه ali_habibi1384 (http://barnamenevis.org/forum/member.php?u=48789) جان را بگیر روش کار کن، این که کاری نداره، من وقته زیادی ندارم، درگیر پروژه پایانی خودم هستم، وگر نه کمکت میکردم.