PDA

View Full Version : سوال: انداختن عکس به صورت اسلایدشو بعد از فراخوانی از بانک اطلاعاتی



forodo
یک شنبه 27 مرداد 1392, 14:32 عصر
سلام
من می خوام هرچی عکس در داخل یک جدول از بانکی اطلاعاتی هست رو بیاره و اونارو هر مثلاً 5 ثانیه یک بار عوض کنه و داخل پیکچر باکس نمایش دهد.
زمانش رو می دونم که با تایمر حله ولی کدی که باید بنویسم تا عکس در حال نمایش رو با عکس بعدی عوض کنه نمی دونم چیه.
عکسها رو از بانک اطلاعاتی می خونه.
با تشکر

mousa1992
یک شنبه 27 مرداد 1392, 14:43 عصر
خب همین تایمرو زمان که بدونی حله ! در هر اجرای تایمر یک عکس رو فراخوانی میکنی - توی جدولتون اگه ایدی هم ذخیره میکنین ( شماره عکس ) اخرین ایدی رو ذخیره کن تا متوجه باشی که چندمین رکورد رو باید برگردونی و نحوه ی برگرداندن ی رکورد خاص رو هم از این لینک (http://barnamenevis.org/showthread.php?398704-paging-%D8%AF%D8%B1-%DA%AF%D8%B1%DB%8C%D8%AF%D9%88%DB%8C%D9%88-%D8%AF%D8%B1-app-%D9%86%D9%87-%D8%AF%D8%B1-asp-%DB%8C%D8%A7-web&highlight=paging) میتونید پیدا کنید - تو این لینک پروژه ای هست در مورد صفحه بندی گرید ولی خب شما کوئری رو ببین که چجوری رکوردهای مورد نظرش رو برمیگردونه و ازش استفاده کن جهت برگردوندن عکس مورد نظرت از دیتابیس

موفق باشی

forodo
یک شنبه 27 مرداد 1392, 15:25 عصر
خب همین تایمرو زمان که بدونی حله ! در هر اجرای تایمر یک عکس رو فراخوانی میکنی - توی جدولتون اگه ایدی هم ذخیره میکنین ( شماره عکس ) اخرین ایدی رو ذخیره کن تا متوجه باشی که چندمین رکورد رو باید برگردونی و نحوه ی برگرداندن ی رکورد خاص رو هم از این لینک (http://barnamenevis.org/showthread.php?398704-paging-%D8%AF%D8%B1-%DA%AF%D8%B1%DB%8C%D8%AF%D9%88%DB%8C%D9%88-%D8%AF%D8%B1-app-%D9%86%D9%87-%D8%AF%D8%B1-asp-%DB%8C%D8%A7-web&highlight=paging) میتونید پیدا کنید - تو این لینک پروژه ای هست در مورد صفحه بندی گرید ولی خب شما کوئری رو ببین که چجوری رکوردهای مورد نظرش رو برمیگردونه و ازش استفاده کن جهت برگردوندن عکس مورد نظرت از دیتابیس

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

private void timer3_Tick(object sender, EventArgs e)
{
if (SlideCount >= PictureCount)
{
SlideCount = 0;
}
picBox.Image = (Image)imageConverter.ConvertFrom(dataGridView1.Ro ws[SlideCount].Cells["Picc"].Value);
SlideCount++;
}

برای رفتن به عکس بعدی:

private void nextImg_Click(object sender, EventArgs e)
{
timer3.Enabled = false;
PauseOrMove = 1;
SlideCount++;
if (SlideCount >= PictureCount)
{
SlideCount = 0;
}
picBox.Image = (Image)imageConverter.ConvertFrom(dataGridView1.Ro ws[SlideCount].Cells["Picc"].Value);
}

برای رفتن به عکس قبلی:

private void prevImg_Click(object sender, EventArgs e)
{
timer3.Enabled = false;
PauseOrMove = 1;
SlideCount--;
if (SlideCount < 0)
{
SlideCount = PictureCount - 1;
}
picBox.Image = (Image)imageConverter.ConvertFrom(dataGridView1.Ro ws[SlideCount].Cells["Picc"].Value);
}

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

setareh masompoor
یک شنبه 27 مرداد 1392, 15:28 عصر
چرا از دیتا تیبل به جای دیتا گرید ویو استفاده نمیکنی؟؟؟؟

forodo
یک شنبه 27 مرداد 1392, 15:34 عصر
چرا از دیتا تیبل به جای دیتا گرید ویو استفاده نمیکنی؟؟؟؟
بلد نیستم.
چه فرقی داره؟
کدوم بهتره و از چه لحاظ؟
این چیزیه که نوشتم و هنگام لود صفحه عکسارو می ریزه داخل گریدویو:

private void GetPicturesPaths()
{
try
{

OleDbConnection objconnection =
new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\radman.mdb;Persist" +
" Security Info=True;Jet OLEDB:Database Password=123456");
OleDbDataAdapter objDataAdapter = new OleDbDataAdapter();
DataSet objDataSet = new DataSet();

objDataAdapter.SelectCommand = new OleDbCommand();
objDataAdapter.SelectCommand.Connection = objconnection;

objDataAdapter.SelectCommand.CommandText = @"SELECT PictureID, Picc
FROM tblPicturess";

objDataAdapter.SelectCommand.CommandType = CommandType.Text;

objconnection.Open();
objDataAdapter.Fill(objDataSet, "tblPersonal");
objconnection.Close();

dataGridView1.DataSource = objDataSet.Tables["tblPersonal"];
dataGridView1.Columns["PictureID"].HeaderText = "ردیف";
dataGridView1.Columns["PictureID"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dataGridView1.Columns["Picc"].Visible = false;

PictureCount = dataGridView1.Rows.Count;


}
catch (Exception)
{

}
}

setareh masompoor
یک شنبه 27 مرداد 1392, 16:03 عصر
دیتا تیبل یا دیتاست جایی که نتیجه جستجو رو داخلش میشه نگه داشت تو این از دیتا ست استفاده کردی خب اینم خوبه
حالا به جای اینکه بیای دیتا ست رو به دیتا گرید ویو وصل کنی بیا یه رویداد بنویس که ورودیش همین دیتاستت باشه بعد یه حلقه بذار که این کد داخلش اجرا میشه



objDataSet.Tables["tblPersonal"].Rows[اسم ستون][شمارنده حلقه].ToString()

sohil_ww
یک شنبه 27 مرداد 1392, 16:12 عصر
خیلی کار ها میشه انجام داد دیتا ست یا دیتا تیبل من نظرم اینه که گرید کارتو زشت می کنه

forodo
یک شنبه 27 مرداد 1392, 16:46 عصر
خیلی کار ها میشه انجام داد دیتا ست یا دیتا تیبل من نظرم اینه که گرید کارتو زشت می کنه
visible گریدویوم false.
کسی اونو نمی بینه.

sohil_ww
یک شنبه 27 مرداد 1392, 17:04 عصر
visible گریدویوم false.
کسی اونو نمی بینه.

ای کلک کامپیوترم می پیچونی

این سورس نگاه کن شای به کارت بیاد

دانلود (http://uplod.ir/ja8ueu2yh3x9/slid_show.zip.htm)

البته الان دارم می رم بیرون زیاد وقت نداشتم روش کار کنم
ولی یه فکر هایی روش دارم ان شاالله شب اگه خدا قسمت کرد انجام میدم

در ضمن بانکشم از آقای خوخان گرفتم و تو این برنامه استفاده کردم
ان شاالله که مشکلی نداشته باشن ایشان

mousa1992
دوشنبه 28 مرداد 1392, 00:26 صبح
visible گریدویوم false.
کسی اونو نمی بینه.
اخه این چه کاریه :قهقهه:
البته اگه تعداد رکوردها زیاد نمیشه اشکال نداره ولی بازم از گرید استفاده نکن
خب اگه تعداد رکوردها زیاد بشه بازگردانی مثلا 100 تا عکس فک کنم زمان بر باشه ( من تست نکردم ولی اصولی نیست کارت )
بیا همون روشی که گفتمو استفاده کن تا در موقع لزوم فقط ی دونه عکس رو لود کنی