نمایش نتایج 1 تا 14 از 14

نام تاپیک: گذاشتن عکس بر روی فرم

  1. #1

    گذاشتن عکس بر روی فرم

    سلام بر اساتید و دوستان عزیزی که در این سایت عالی ، زحمت می کشند.
    من چند مشکل دارم که امیدوارم با کمک و راهنمایی شما اساتید محترم ، کاملا بر طرف شود. لازم به توضیح است که این سایت و بسیاری از سایتها را زیر و رو کرذه ام ؛ اما آن نتیجه دلخواه را بدست نیاورده ام و امیدوارم این بابی شود که در اینجا این مشکلات برای همه تازه کارانی مثل من برای همیشه حل شود و دیگر سئوالی باقی نماند.
    ضمنا اگر این سئوالات و مشکلات باید در جای دیگری بازگو شود به بزرگواری خودتان ببخشید و بگویید تا به آن جا منتقل نمایم.
    مواردی که می خواهم در جواب سئوالاتم در نظر گرفته شود اینکه: بانک اطلاعاتمSQLite است و میخواهم در راهنمایی از دستورات SQL استفاده نمایید. برای اتصال به بانک هم از ADOConnection و ADOQuery و DataSource استفاده شود.
    اما سئوال اول:
    مشکل اولم گذاشتن عکس بر روی فرم است. میخواهم یک پوشه به نام Image کنار برنامه داشته باشم و تمام عکسها با فرمتهای مختلف مانند ,jpg, png bmp و ... را داخل آن بریزم و آدرس آنها در بانک اط ذخیره شود و عکس بر روی فرم نشان داده شود.

    لطفا برنامه کوچکی طراحی کنید که روی آن دو EditBox نام و فامیل باشد و یک کادر Image داشته باشد و با توجه به مطالب بالا بتوان عکس را در کادر نمایش داد و سه دکمه وجود داشته باشد که بتوان به آن عکس اضافه نمود یا عکس را حذف نمود یا عکس را تغییر داد و دوباره آنرا ذخیره نمود. (مانند برنامه دفتر تلفن)
    عزیزان از همه شما که دلسوزانه راهنمایی میکنید با تمام وجود سپاسگذارم و برایتان سلامتی و طول عمر ، از خداوند تقاضا دارم.
    باز هم ممنون و متشکر

  2. #2
    کاربر دائمی آواتار idehrayan
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    نیشابور
    پست
    103

    نقل قول: گذاشتن عکس بر روی فرم

    سلام
    چن وقت پیش واسه یکی از برنامه هام این قطعه کد رو نوشتم تقریبا همون چیزیه که شما میخواهید
    البته واسه تصاویر jpg هستش
    کد زیر برای ذخیره تصاویر در پوشه picture

    procedure TForm4.img4Click(Sender: TObject);
    Var
    S, T: TFileStream;
    Begin
    if dbedt3.Text='' then showmessage('لطفاَ مقدار فیلد نام را وارد نمائید .تصویر با این نام ذخیره می گردد.')
    else
    if dlgOpen1.Execute then
    begin

    S := TFileStream.Create( dlgOpen1.FileName, fmOpenRead );
    try
    T := TFileStream.Create( ExtractFilePath(Application.ExeName)+'picture\'+db edt3.Text+'.jpg',fmOpenWrite or fmCreate );
    try
    T.CopyFrom(S, S.Size ) ;
    finally
    T.Free;
    end;
    finally
    S.Free;
    end;
    end;

    این هم برای بارگذاری تصویر و خواندن از پوشه picture

    procedure TForm4.dbedt3Change(Sender: TObject);
    begin

    if fileexists(ExtractFilePath(Application.ExeName)+'p icture\'+dbedt3.Text+'.jpg')=true then
    img4.Picture.LoadFromFile(ExtractFilePath(Applicat ion.ExeName)+'picture\'+dbedt3.Text+'.jpg');

    end;


    آخرین ویرایش به وسیله idehrayan : جمعه 23 مرداد 1394 در 15:29 عصر

  3. #3

    نقل قول: گذاشتن عکس بر روی فرم

    سلام
    از اینکه پاسخ دادی ممنونم. اما یکبار دیگر سئوال بنده را مطالعه بفرمایید.
    ما پوشه عکسها را در کنار برنامه داریم و عکسها از قبل در آن ذخیره شده اند و حالا ما فقط می خواهیم عکسها را به کنترل Timge متصل نماییم و بعد با مرور دبی گرید ، عکس هر فرد به همراه مشخصاتش نمایش داده شود.
    اگر لطف نمایید و با بانک اکسس یک برنامه کوچک مثل دفترچه تلفن بنویسی ، خیلی محبت نموده اید(با دستورات Sql و فقط آدرس عکسها در بانک ذخیره شود نه خود عکس). باز هم متشکر

  4. #4
    کاربر دائمی آواتار hamedjim
    تاریخ عضویت
    مهر 1393
    محل زندگی
    تهران
    پست
    140

    نقل قول: گذاشتن عکس بر روی فرم

    من برای یه برنامه که فیلد یونیک و مشخصی نداشت این کار رو کردم:
    لحظه‌ای که عکس انتخاب میشد تازیخ و زمان رو به عنوان اسم منحصر بفردی (مثلا 940613111025) در متغیری می‌ریختم و پسوند عکس هم با توجه به نوع عکس انتخاب شده تعیین می‌شد و در ادامه عنوان عکس قرار می‌گرفت (940613111025.jpg) و عکس رو با این اسم به محل فولدر تصاویر کپی می‌کردم. و بعد این متغیر رو در فیلد مربوط به تصویر فرد ( که البته یک فیلد رشته‌ای بود) می‌ریختم.
    هر زمان هم که نیاز به فراخوانی اطلاعات بود، همه مشخصات در DBGrid نمایش داده می‌شد و عنوان عکس مربوطه از طریق فیلد تصویر مشخص و در TImage مربوط به خودش نمایش داده مبشد.

  5. #5
    کاربر دائمی آواتار hp1361
    تاریخ عضویت
    دی 1384
    محل زندگی
    تهران
    پست
    750

    نقل قول: گذاشتن عکس بر روی فرم

    سلام

    برنامه شما شامل دو قسمت میشه
    1- ذخیره اطلاعات جدید (شامل نام و نام خانوادگی)در دیتابیس و عکس مربوطه در پوشه
    2- نمایش تصاویر مربوط به نام و نام خانوادگی(تصاویری که در پوشه قرار دارند و نام و نام خانوادگی ای که در دیتابیس ذخیره شده اند)

    ذخیره سازی از اطلاعات فردی که کار خاصی نست و براحتی می تونی انجام بدی. نکته مهم نحوه تعیین نامگذاری عکس ها ست. شما میتونید از ترکیب نام و نام خانوادگی و یا یک شماره یونیک مثلا شماره رکورد استفاده کنید. اما پیشنهاد من استفاده از کدملی ست. یعنی هر رکورد جدیدی که ایجاد شد عکس مربوطه با شماره ملی نامگذاری بشه و در پوشه عکس ها ذخیره بشه. به طبع شما باید کد ملی رو نیز در دیتابیستون ذخیره کنید. برای ذخیره عکس هم میتونید از روشی که دوستمون idehrayan گفتند استفاده کنی

    برای نمایش هم در زمان درخواست کاربر(مثلا فشردن یک دکمه) کدملی اون فرد رو از بانک داشته باشید و عکس رو در کنترل ایمیج نمایش بدید.(اینکه اسامی افراد چطور لیست بشن به ایده شما بستگی داره. میتونید از DBGrid یا ComboBox ووو استفاده کنید)

    موفق باشیم

  6. #6

    نقل قول: گذاشتن عکس بر روی فرم

    سلام
    از هر سه شما بزرگواران که وقت گذاشتید و جواب دادید، متشکرم. کد ملی ایده خوبی است. البته من در مورد ثبت مشخصات فردی در جدول و نشان دادن آن در دبی گرید مشکلی ندارم. من می خواهم بعد از اینکه عکس را در پوشه کنار برنامه ذخیره کردم ؛ آدرس عکس را در فیلد مربوطه که رشته ای است ، ذخیره کنم و روی کنترل Timage فرم شخص نشان دهم. کدهای این قسمت را بلد نیستم. اگر محبت نمایید و کدها یا برنامه ای بنویسید که عکسهای با فرمت jpg, png, bmp را بتوانم در پوشه ریخته و روی فرم نشان دهم خیلی ممنون می شوم. با داشتن یک دکمه حذف عکس و یکی هم برای ویرایش یا تعویض عکس.

  7. #7
    کاربر دائمی آواتار hamedjim
    تاریخ عضویت
    مهر 1393
    محل زندگی
    تهران
    پست
    140

    Red face نقل قول: گذاشتن عکس بر روی فرم

    خب اگر در برنامه شما وارد کردن کد ملی اجباری هست، این کد رو میشه به این شکل نوشت:

    اول از همه در قسمت uses این موارد رو اضافه کن:

    uses
    ..., Jpeg, pngimage, GIFImg;


    بعد در Button مربوط به دریافت عکس (رویداد OnClick) این کد:

    var
    Path1, Path2: String;
    begin
    OpenDialogImage.Execute();
    if OpenDialogImage.FileName<>'' then
    begin
    PictureName:= EditNationalID.Text + ExtractFileExt(OpenDialogImage.FileName);
    Path1:= OpenDialogImage.FileName;
    Path2:= 'Images\' + PictureName;
    CopyFile(PChar(Path1),PChar(Path2), False);
    Image1.Picture.LoadFromFile(Path2);
    end;
    end;


    و در نهایت زمان ذخیره اطلاعات در دیتابیس :


    with ADO do
    begin
    FieldByName('Name').Value:= EditName.Text;
    FieldByName('SName').Value:= EditSName.Text;
    FieldByName('NationalID').Value:= EditNationalID.Text;
    FieldByName('Picture').Value:= PictureName;
    end;


    متغیر PictureName به صورت رشته ای و پابلیک در فرم تعریف میشه.

    هر زمان هم که نیاز به نمایش عکس داشتی، با خوندن اطلاعات مربوط به فیلد Picture در متغیر PictureName، تصویر رو از مسیر 'Image\' + PictureName ننشون میدی.


    البته شرط‌هایی مثل بررسی وارد شدن کد ملی قبل از دریافت عکس، یا بررسی صحت کپی شدن عکس در مسیر مورد نظر رو هم به برنامه اضافه کن.

  8. #8
    کاربر دائمی آواتار ابوالفضل عباسی
    تاریخ عضویت
    شهریور 1393
    محل زندگی
    Inside Esfahan
    پست
    719

    نقل قول: گذاشتن عکس بر روی فرم

    با سلام خدمت شما دوست عزیز
    در بانک access یک فیلد رو تعریف کن فقط نوعش رو بگذار OLE Object بعد هر چیزی قبول میکنه با این تفاوت که باید با برنامه نویسی بهش بگی که این فیلد رو چه طوری نمایش بده
    به نظر بنده بهتره از نمونه کد های دوستان استفاده کنی چون این روش خیلی پیچیدگی داره

  9. #9

    نقل قول: گذاشتن عکس بر روی فرم

    دوست عزیز آقای hamedjim سلام
    از لطف شما متشکرم. با کدهای شما کارم راه افتاد ؛ اما برخی موارد هست که در حین کار پیش می آید که امیدوارم مرا راهنمایی کنید. از جمله:
    1- وقتی کد ملی را وارد و OpenDialogImage را باز و عکس را اوپن می کنم ، قبل از ذخیره کردن مشخصات و ناخواسته ، عکس با کد ملی در پوشه Images ذخیره می شود. با اینکه برایش شرط هم گذاشته ام. کد را می گذارم ، لطفا بررسی و راهنمایی بفرمایید یا کامل کنید.
    procedure TForm_Moshakhsat.ButtonLoad_PicClick(Sender: TObject);
    var
    Path1, Path2: String;
    begin
    OpenDialogImage.Execute();
    if OpenDialogImage.FileName <>'' then
    begin
    PictureName:= EditNationalID.Text + ExtractFileExt(OpenDialogImage.FileName);
    Path1:= OpenDialogImage.FileName;
    if (EditNationalID.Text <> '')then //در صورتی که کد ملی خالی نباشد
    begin
    Path2 := 'Images\' + PictureName;
    CopyFile(PChar(Path1),PChar(Path2), False);
    Image1.Picture.LoadFromFile(Path2);
    end
    else
    begin
    ShowMessage('کد ملی نباید خالی باشد');
    EditNationalID.SetFocus;
    end;
    end;
    end;


    2- کد نمایش عکسها ، در فرم اصلی و هنگام مرور دبی گرید را نیز در DataSource1DataChange نوشتم که مشکلی ندارد و عکسها را نمایش می دهد ؛ ولی وقتی توسط فرم مشخصات ، اطلاعات و عکس جدیدی را وارد و ذخیره می کنم، دیگر Timage عکسها را نشان نمی دهد و باید یکبار برنامه را ببندم و باز کنم که درست شود. ریفرش ADOQuery هم گذاشتم که تاثیری نداشت. لطفا راهنمایی کنید یا اگر کد نمایش عکس بهتری سراغ دارید ، برایم بنویسید. خیلی ممنون

  10. #10

    نقل قول: گذاشتن عکس بر روی فرم

    نقل قول نوشته شده توسط delphi-xe7 مشاهده تاپیک
    با سلام خدمت شما دوست عزیز
    در بانک access یک فیلد رو تعریف کن فقط نوعش رو بگذار OLE Object بعد هر چیزی قبول میکنه با این تفاوت که باید با برنامه نویسی بهش بگی که این فیلد رو چه طوری نمایش بده
    به نظر بنده بهتره از نمونه کد های دوستان استفاده کنی چون این روش خیلی پیچیدگی داره
    سلام
    این روش را بلدم. در این روش عکسها داخل بانک ذخیره می شوند و بانک سنگین و کند می شود. به هر حال ممنون

  11. #11
    کاربر دائمی آواتار hamedjim
    تاریخ عضویت
    مهر 1393
    محل زندگی
    تهران
    پست
    140

    نقل قول: گذاشتن عکس بر روی فرم

    در مورد سوال اول، این کاملا طبیعه هست که تصویر در پوشه Image ذخیره بشه.
    برای اون چیزی که مدنظرت هست، باید Path1 رو به صورت پابلیک تعریف کنی و دستور If رو به محل ذخیره منتقل کنی. در واقع دستور CopyFile ، فایل رو از مسیر Path1 که توسط ImageDialog تعیین شده، به مسیر Path2 که در پوشه Image هست منتقل می کنه.


    منظورت از سوال دوم رو هم به خوبی متوجه نشدم.

  12. #12

    نقل قول: گذاشتن عکس بر روی فرم

    سلام
    در مورد سوال اول: در محل ذخیره If گذاشته ام ، اما عکس ناخواسته و به محض وارد شدن کد ملی در پوشه Images ذخیره می شود.
    سوال دوم: من یک فرم اصلی دارم که درآن یک دبی گرید دارم و مشخصات همه افراد را نشان می دهد از جمله عکس فرد ؛ وقتی فردی را از طریق فرم جدیدی به لیست اضافه میکنم ؛ دیگر عکس افراد نمایش داده نمی شود و باید برنامه را باز و بست نمایم. کد نمایش عکسها را در زیر می گذارم ، بررسی و راهنمایی بفرما. خیلی ممنون


    procedure TFormMain.DataSource1DataChange(Sender: TObject; Field: TField);
    begin
    Try
    if (ADOQuery1.State <> dsinsert) then
    ImagePreview.Picture.LoadFromFile('Images\' + PictureName
    + ADOQuery1.FieldByName('Picture').AsString);
    Except
    ImagePreview.Picture := nil;
    end;
    end;
    آخرین ویرایش به وسیله kamran749 : چهارشنبه 18 شهریور 1394 در 16:09 عصر

  13. #13

    نقل قول: گذاشتن عکس بر روی فرم

    دوست عزیز آقای hamedjim سلام
    مشکل دومم حل شد. ولی مشکل اولم هنوز پا برجاست. عکس هنوز ناخواسته در پوشه Images ذخیره می شود. گفته بودی که if را بردار و در محل ذخیره اطلاعات بگذار. من هم همین کار را کردم ؛ ولی مشکل بدتر شد ؛ چون این بار عکس ناخواسته و بدون اسم در پوشه ذخیره می شود.
    لطفا راهنمایی کن یا کد را برایم اصلاح نما. واقعا ازت ممنونم.

  14. #14
    کاربر دائمی آواتار hamedjim
    تاریخ عضویت
    مهر 1393
    محل زندگی
    تهران
    پست
    140

    نقل قول: گذاشتن عکس بر روی فرم

    چند روزی نبودم.
    همون‌طور که گفتم می‌تونی دستور CopyFile رو از اون کد حذف کنی و بیاریش تو قسمت ذخیره در ADO
    اگه هنوز مشکلت رفع نشده، کدهات رو بذار با هم چک کنیم

تاپیک های مشابه

  1. سوال: گذاشتن عکس بر روی فرم توسط کاربر
    نوشته شده توسط Morteza-76 در بخش VB.NET
    پاسخ: 2
    آخرین پست: جمعه 11 بهمن 1392, 14:08 عصر
  2. سوال: نحوه قرار دادن عکس بر روی فرم از طریق یک دکمه brows
    نوشته شده توسط atoorpatkan در بخش C#‎‎
    پاسخ: 10
    آخرین پست: چهارشنبه 13 شهریور 1392, 21:03 عصر
  3. سوال: نحوه نمایش عکس بر روی فرم
    نوشته شده توسط joooje در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 7
    آخرین پست: جمعه 14 مرداد 1390, 22:57 عصر
  4. سوال: گذاشتن چند pictureBox روی فرم به صورت آرایه ای
    نوشته شده توسط ghrzarei در بخش C#‎‎
    پاسخ: 10
    آخرین پست: جمعه 26 تیر 1388, 09:42 صبح
  5. effect پخش لیزری عکس بر روی فرم
    نوشته شده توسط hadi2345 در بخش برنامه نویسی در 6 VB
    پاسخ: 2
    آخرین پست: دوشنبه 02 خرداد 1384, 13:48 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •