PDA

View Full Version : سوال: راهنمایی بابت استفاده از نقشه روی نرم افزار



davidrobert
یک شنبه 28 مرداد 1397, 22:09 عصر
سلام و خسته نباشید.
بنده برنامه قبرستان نوشتم برای آرامستان و یه خواسته داشتن که من برای شون موقعیت قبر رو به وسیله موقعیت متصدی تا خود قبر به صورت راهنما نقشه بگه از کجا بره تا کجا تا بتونه قبر متوفی رو پیدا کنه. چون امکان این هستش روی دستگاه مرده یاب که برنامه نوشتماز روی اون موقعیت اون دستگاه هم بخوان یا از سایت که سایت هم براشون طراحی کردم. این سایت http://portal.rezvan-shahriyar.ir/ آرامستانی هستش طراحی کردم من ASP, Csharp بلدم و چیزی به ذهنم نمیکشه چطوری به کسی که امده دنبال مردش تو قبرستون بگرده بهشون راهنمایی کنم این متوفی آشنا شما هستش که دنبالش هستید. در این آدرس هستش.
ممنون میشم نظر دارید بدید.
فکر من یک استفاده از یک آدرس هستش که از متصدی تا خود قبر آدرس بده، دوم از گوگل مپ هستش تا حالا استفاده نکردم و بلد نیستم، سوم استفاده از یک عکس از قبرستون موقعیت هر قبر رو نشان بده و روی اون قبر بره که این مورد هم بلد نیستم اگه روشی یا فایل کمکی دارید به بنده بدید یک دنیا ممنون میشم.

رامین مرادی
دوشنبه 29 مرداد 1397, 13:31 عصر
این لینک فک کنم بدردتون بخوره http://opizo.me/vvyiX8 و این http://opizo.me/x4rsXi
اما پیشنهاد خودم اینه خودتون یه فرم طراحی کنید که نقشه آرامستان رو توش با اشیا یا عکس مشخص کنید. بعد بلوکهارو مشخص کنید. داخل بلوک ها رو به صورت جدول بندی یا براساس محل قبرها با اشیایی مشخص کنید و بعد از سرچ اون شی رو تو نقشه متمایز کنید.
تو مارک کردن نقشه گوگل فک کنم خیلی اذیت بشید چون مشخصه تعداد محل ها خیلی زیاده.

davidrobert
شنبه 03 شهریور 1397, 10:27 صبح
سلام و خسته نباشید.
بابت تاپیک قبلی پیام میدم جای که از بنده سفارش میخواد به بنده یک نقشه میده درست مثل تصویر زیر
148738
که از روی این نقشه من موقعیت های قبر ها رو با جستجو بگم کدام شخص در کدام موقعیت دفن شده و همین طور اگه روی ناحیه رفتم قبر داشت تعداد قبر هام نشان بدم و بگم اگه کسی دفن شده رنگ روشن و گرنه خاموش باشه و بگه سیستم کدام شخص در کدام قبر و در کدام طبقه دفن شده. خواهشا جواب بدید باید دو روز برنامه رو بهشون تحویل بدم از قبل نوشتم و این الان به خواسته شون اضافه شده. ممنون میشم

Shadow_net
شنبه 03 شهریور 1397, 10:42 صبح
اگر قطعه ها ثابت هستن دیگه مشکلی نداره
کافیه به هر قطعه یک کد بدید و دورش PictureBox بدون عکس قرار بدید برای رویداد کلیک، و وقتی بر روی هر کدوم کلیک شد بجای صفحه سمت چپ یک دیتاگرید باز میشه که اطلاعات رو از دیتابیس میخونه

davidrobert
شنبه 03 شهریور 1397, 10:46 صبح
اگر قطعه ها ثابت هستن دیگه مشکلی نداره
کافیه به هر قطعه یک کد بدید و دورش PictureBox بدون عکس قرار بدید برای رویداد کلیک، و وقتی بر روی هر کدوم کلیک شد بجای صفحه سمت چپ یک دیتاگرید باز میشه که اطلاعات رو از دیتابیس میخونه

بله از دیتابیس هستش ولی یه مسئله هستش اینها قبر رو به صورت تصویر میخوان بر حسب هر قسمت روشن و خاموش بشه همچین برنامه دارن از قبل برنامه نویس اشون از ایران رفته برای همیشه حالا برنامه جای که من فروختم دیدن خوششون امده و این امکان مثل نقشه بالا رو خواستن و هر دقیقه داره تغییر میکنه چون زیاد مرده میره اونجا و دفن میشه و هر لحظه باید تصویر آپدیت و وضعیت قبرها معلوم بشه بخاطر همین موضوع 4 تا متصدی دارن و لحظه به لحظه سند دارن میزنن

Mahmoud Zaad
شنبه 03 شهریور 1397, 10:48 صبح
سلام
من چیزی که برای برنامه دسکتاپ با استفاده از کارهای گرافیکی به ذهنم میرسه میگم. شما یه نقشه اصلی دارید مثل نقشه بالا و برای هر قطعه هم یک نقشه دارید که قبرها هستن. حالا وقتی روی هر قطعه کلیک میشه یه عکس جدید لود میشه که همون نقشه قبرهای اون قطعه هست. تا اینجا که مشخصه.
چون قبرها مستطیل هستن یک راه حل اینه که شما لوکیشن هر قبر رو ذخیره کنید و بعد در mouseOver یا mouse click و با استفاده از متد Contains برای Rectangle، ببینید اون نقطه که موس اشاره میکنه قبر کیه.
یه نمونه برنامه سی شارپی هست به اسم نقشه ایران توی اون حتی وقتی موس روی یه نقطه قرار میگیره، نقشه یه استان رو مشخص میکنه و اسم استان رو نمایش میده. حالا اینجا که مستطیله و راحته.

davidrobert
شنبه 03 شهریور 1397, 10:56 صبح
سلام
من چیزی که برای برنامه دسکتاپ با استفاده از کارهای گرافیکی به ذهنم میرسه میگم. شما یه نقشه اصلی دارید مثل نقشه بالا و برای هر قطعه هم یک نقشه دارید که قبرها هستن. حالا وقتی روی هر قطعه کلیک میشه یه عکس جدید لود میشه که همون نقشه قبرهای اون قطعه هست. تا اینجا که مشخصه.
چون قبرها مستطیل هستن یک راه حل اینه که شما لوکیشن هر قبر رو ذخیره کنید و بعد در mouseOver یا mouse click و با استفاده از متد Contains برای Rectangle، ببینید اون نقطه که موس اشاره میکنه قبر کیه.
یه نمونه برنامه سی شارپی هست به اسم نقشه ایران توی اون حتی وقتی موس روی یه نقطه قرار میگیره، نقشه یه استان رو مشخص میکنه و اسم استان رو نمایش میده. حالا اینجا که مستطیله و راحته.

سلام و خسته نباشید دوست عزیز منظور شما این نقشه هستش
148740
که بنده گیر آوردم و نمونه اش رو با کپی پست درست کردم ولی مشکل من سر دانامیک کردن هستش سعی کردم دانامیک کنم اسکیول درست کردم داده هاش بهش دادم ولی هر کاری کردم نتوانستم درست کنم دانامیک و هنگ کردم.
http://s9.picofile.com/file/8335404976/MAP.zip.html
این سورس به همراه اسکریپت با دادههاش هستش
خواهشا اگه مقدور بود برای شما دانامیک کنید ممنون میشم.
چون این بتوانم دانامیک درست کنم و بدانم چطور سایز بهش بدم برای آرامستان درست میکنم این نتوانستم درست کنم این درست بشه روی نقشه قبرستون درست میکنم.

Shadow_net
شنبه 03 شهریور 1397, 10:59 صبح
بله از دیتابیس هستش ولی یه مسئله هستش اینها قبر رو به صورت تصویر میخوان بر حسب هر قسمت روشن و خاموش بشه همچین برنامه دارن از قبل برنامه نویس اشون از ایران رفته برای همیشه حالا برنامه جای که من فروختم دیدن خوششون امده و این امکان مثل نقشه بالا رو خواستن و هر دقیقه داره تغییر میکنه چون زیاد مرده میره اونجا و دفن میشه و هر لحظه باید تصویر آپدیت و وضعیت قبرها معلوم بشه بخاطر همین موضوع 4 تا متصدی دارن و لحظه به لحظه سند دارن میزنن
مشکلی نیست یک دیتاگرید قرار بدید
نمونش هم کامپوننت تقویم شمسی هست که هر خونه دیتاگرید مشخصه 1 روز هست و اطلاعات رو از دیتابیس میخونه و رنگ cell رو تغییر میده، سورس تقویم شمسی در سایت موجوده میتونید دانلود کنید و الگو بگیرید

Mahmoud Zaad
شنبه 03 شهریور 1397, 11:04 صبح
بله همینه، اینو برای نمونه گفتم.
یک راه راحتتر! نقشه اصلی که هیچی اونو باید داشته باشید ولی برای هر قطعه شما می تونید از فرم و دکمه کمک بگیرید. معمولاً قطعه ها منظم هستن یعنی مثلاً 10*10 قبر توی هر قطعه هست. شما می تونید به تعداد قبرها، روی یک فرم دکمه قرار بدید. از طرفی هر قبر شماره اش در قطعه مشخصه. خب کافیه شماره هر قبر رو توی خاصیت تگ دکمه ذخیره کنید و راحت هم جستجو میشه.
ولی اگه دقیقاً میخواید از روی نقشه هر قطعه باشد که باید کار گرافیکی انجام بدید.

davidrobert
شنبه 03 شهریور 1397, 11:05 صبح
مشکلی نیست یک دیتاگرید قرار بدید
نمونش هم کامپوننت تقویم شمسی هست که هر خونه دیتاگرید مشخصه 1 روز هست و اطلاعات رو از دیتابیس میخونه و رنگ cell رو تغییر میده، سورس تقویم شمسی در سایت موجوده میتونید دانلود کنید و الگو بگیرید
درست مشکل اول من سر نقشه هستش که لحظه به لحظه تغییر کنه و در قسمت قبر ها اطلاعات ظاهر بشه چون قبر ها چند طبقه هستش الان میگیردم ببینم سورس تقویم شمسی رو گیر میارم تا بتوانم این دو مورد رو با هم ارتباط بدم.

davidrobert
شنبه 03 شهریور 1397, 11:10 صبح
بله همینه، اینو برای نمونه گفتم.
یک راه راحتتر! نقشه اصلی که هیچی اونو باید داشته باشید ولی برای هر قطعه شما می تونید از فرم و دکمه کمک بگیرید. معمولاً قطعه ها منظم هستن یعنی مثلاً 10*10 قبر توی هر قطعه هست. شما می تونید به تعداد قبرها، روی یک فرم دکمه قرار بدید. از طرفی هر قبر شماره اش در قطعه مشخصه. خب کافیه شماره هر قبر رو توی خاصیت تگ دکمه ذخیره کنید و راحت هم جستجو میشه.
ولی اگه دقیقاً میخواید از روی نقشه هر قطعه باشد که باید کار گرافیکی انجام بدید.

درست مشکل منم همین که باید هر قطعه به صورت گرافیکی نشان بدم با اطلاعاتش و هر لحظه هم نقشه و تعداد قبر بهش اضافه بشه و از اسکیول باشه و چیزی به ذهنم نمیرسه تا ببتوانم درست کنم.

رامین مرادی
شنبه 03 شهریور 1397, 11:40 صبح
شما که نقشه قطعه هارو دارید و تعداد قبرهای هر قطعه رو میدونید و جاهاشونم میدونید. همون لحظه که مثلا رو قطعه فلان کلیک میکنید بیاید یه تعداد باتن یا هرچیز دیگه ای(توصیه م طراحی یه کنترل) به تعداد قبرها به صورت داینامیک ایجاد کنید تو خاصیت تگش یه آی دی چیزی بدید بهش وقتی روش کلیک میشه یه سری اطلاعات بصورت پاپ آپ ظاهر بشه.

davidrobert
شنبه 03 شهریور 1397, 11:49 صبح
شما که نقشه قطعه هارو دارید و تعداد قبرهای هر قطعه رو میدونید و جاهاشونم میدونید. همون لحظه که مثلا رو قطعه فلان کلیک میکنید بیاید یه تعداد باتن یا هرچیز دیگه ای(توصیه م طراحی یه کنترل) به تعداد قبرها به صورت داینامیک ایجاد کنید تو خاصیت تگش یه آی دی چیزی بدید بهش وقتی روش کلیک میشه یه سری اطلاعات بصورت پاپ آپ ظاهر بشه.
سلام و خسته نباشید دوست عزیز بنده اول روی نقشه اش ماندم چون تو نقشه اول یه نقشه ثابت به بنده میداند و اون نقشه تا یک ماه مثلا ثابت هستش ولی بعدا میان از زمین های اطراف میخرند چون قبرستان پر شده و باید زمین بخرند برای فروش قبر و دوباره به اون قسمت ممکن هر زمین بزرگ باشه یا کوچک یا گیرد میخوام طوری باشه دانامیک بتوانند نقشه جدید بداند و اطلاعات جدید و هر مرده که میمیرد و میخوان دفن کنن معلوم باشه تو هر منطقه چه تعداد قرار میگیره و وقتی تعدادش پر شد سیستم بگه این قطعه پر شد و دیگه جای نیست بره منطقه دوم و هر بار ممکن یک قطعه برای شهدا باشه، ی قطعه برای نوزادان باشه و غیره چون هر قطعه نسبت به قطعه دیگه فرق میکنه باید طوری درست کنم که هر لحظه نقشه بتوانند عوض کنن و همین طور حالت و نمایش اطلاعات هم باهاش پیش بره تا اطلاعات اشتباه نشه

Mahmoud Zaad
شنبه 03 شهریور 1397, 11:59 صبح
از نظر من، شما فقط نقشه اصلی رو باید ذخیره کنید و هر بار هم که تغییر کرد باز مشخصات جدید رو ذخیره کنید بطوریکه از روی نقشه شماره قطعه مشخص باشه. و نقشه جزیی هر قطعه باید بصورت داینامیک باشه. برای نقشه جزیی قطعه که همون قبرها هستن می تونید سایت ایران کنسرت (https://www.iranconcert.com) رو ببینید. قسمت خرید بلیت کنسرتها. که اونجا برای هر سالن میاد نقشه سالن رو رسم میکنه بعد روی هر بخش که کلیک کنید صندلی ها رو رسم میکنه. مثلاً این (http://www.iranconcert.com/?ebuy=8559&t=%DA%A9%D9%86%D8%B3%D8%B1%D8%AA%20%DA%AF%D8%B1%D9 %88%D9%87%20%DA%86%D8%A7%D8%B1%D8%AA%D8%A7%D8%B1)
خب تا اینجا که مشخصه. الان شما شروع کنید یه نمونه انجام بدید قسمت گرافیکش رو ما کمک می کنیم.

davidrobert
شنبه 03 شهریور 1397, 12:23 عصر
از نظر من، شما فقط نقشه اصلی رو باید ذخیره کنید و هر بار هم که تغییر کرد باز مشخصات جدید رو ذخیره کنید بطوریکه از روی نقشه شماره قطعه مشخص باشه. و نقشه جزیی هر قطعه باید بصورت داینامیک باشه. برای نقشه جزیی قطعه که همون قبرها هستن می تونید سایت ایران کنسرت (https://www.iranconcert.com) رو ببینید. قسمت خرید بلیت کنسرتها. که اونجا برای هر سالن میاد نقشه سالن رو رسم میکنه بعد روی هر بخش که کلیک کنید صندلی ها رو رسم میکنه. مثلاً این (http://www.iranconcert.com/?ebuy=8559&t=%DA%A9%D9%86%D8%B3%D8%B1%D8%AA%20%DA%AF%D8%B1%D9 %88%D9%87%20%DA%86%D8%A7%D8%B1%D8%AA%D8%A7%D8%B1)
خب تا اینجا که مشخصه. الان شما شروع کنید یه نمونه انجام بدید قسمت گرافیکش رو ما کمک می کنیم.
سلام این درست خودش هستش تمام سعی خودم میکنم مثل این درست کنم ولی خیلی سخت با نقشه میخواستن فقط مختصات میدادم و مرورگر می آورد.

Mahmoud Zaad
شنبه 03 شهریور 1397, 12:37 عصر
من حدس میزنم اینها یه دیزاینر در اختیار اپراتور قرار دادن و اپراتور میاد چیدمان صندلی ها رو انجام میده و طرح رو ذخیره میکنه مثل نرم افزارهای چاپ چک که مثلاً کاربر جای تاریخ رو با درگ کردن مشخص میکنه و برای هر دسته چک ممکنه متفاوت باشه.
حالا باز هم شما یه مقدار خونسرد باشید و بدون استرس بیشتر فکر کنید شاید راه سریعتری هم پیدا شد ولی راه اصولی مثل همون سایت هست.

davidrobert
شنبه 03 شهریور 1397, 13:44 عصر
من حدس میزنم اینها یه دیزاینر در اختیار اپراتور قرار دادن و اپراتور میاد چیدمان صندلی ها رو انجام میده و طرح رو ذخیره میکنه مثل نرم افزارهای چاپ چک که مثلاً کاربر جای تاریخ رو با درگ کردن مشخص میکنه و برای هر دسته چک ممکنه متفاوت باشه.
حالا باز هم شما یه مقدار خونسرد باشید و بدون استرس بیشتر فکر کنید شاید راه سریعتری هم پیدا شد ولی راه اصولی مثل همون سایت هست.

الان من نقشه رو آوردم روی PictrueBox ماندم چطوری بگم روی قطعه شماره یک رفت قبر ها رو نمایش بده یعنی حالت مختصات دادن بهش گیر کردم و نمیدانم با چی باید بهش بگم.
الان به کل دارم نمونه درست میکنم تا جواب بگیرم وقتی جواب گرفتم برم سراغ پروژه اصلی

Mahmoud Zaad
شنبه 03 شهریور 1397, 14:27 عصر
اولین کار اینه که به کاربر بگید روی نقشه محل هر قطعه رو با یه مستطیل مشخص کنه (اگه مستطیل باشه اگه نباشه که یه مقدار کار سخت میشه)
خب از کاربر یه مستطیل میگیرید و یه اسم یا کد قطعه هم ازش می گیرید و ذخیره می کنید. در گرافیک با نقطه بالا و سمت چپ اشیا کار داریم. پس نقطه بالا و سمت چپ مستطیل بعلاوه طول و عرض مستطیل رو ذخیره می کنید.
حالا من فرض کردم ما 3 تا مستطیل داریم و اومدم اونا رو رسم کردم و بعد وقتی موس رو حرکت میدید بالای فرم اسم قطعه رو مینویسه. این یه مثال ساده هست. ایونت ها رو برای پیکچرباکس خودتون تنظیم کنید.

Rectangle _rect1 = new Rectangle(10, 20, 150, 300);
Rectangle _rect2 = new Rectangle(170, 20, 150, 300);
Rectangle _rect3 = new Rectangle(330, 20, 150, 300);

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{

if (_rect1.Contains(e.Location))
{
this.Text = "قطعه 1";
}
else if (_rect2.Contains(e.Location))
{
this.Text = "قطعه 2";
}
else if (_rect3.Contains(e.Location))
{
this.Text = "قطعه 3";
}
else
{
this.Text = "";
}
}

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawRectangle(Pens.Red, _rect1);
e.Graphics.DrawRectangle(Pens.Red, _rect2);
e.Graphics.DrawRectangle(Pens.Red, _rect3);

}

رامین مرادی
شنبه 03 شهریور 1397, 15:24 عصر
میتونید یه جدول هم تو دیتابیس درست کنید هر وقت کاربر خواست قطعه جدید ایجاد کنه . قطعه رو رسم کنه بعد ذخیره بشه تو دیتابیس اونموقع میتونی تو دفعه های بعدی راحت به اون مختصات دسترسی داشته باشی.(نقطه شروع+طول+عرض+نام قطعه+تعداد قبر در هر ردیف+تعداد قبر در هر ستون و...)

davidrobert
پنج شنبه 08 شهریور 1397, 09:55 صبح
سلام و خسته نباشید دوستان توانستم این فایل رو درست کنم.
دانلود (http://s8.picofile.com/file/8335836318/MAP.zip.html)
148774
فقط یه خواهش دارم چطور میتوانم بگم موس روی اون قسمت رفت رنگش بشه مثلا سبز و غیره و چطور مختصات تصویر دقیق بگیرم و وقتی روش رفتم رنگش عوض بشه سمت چپ اطلاعات اون قسمت رو بیارم.
ممنون میشم این دو مورد که هم مختصات قسمت به قسمت تصویر گیر بیارم و هم رنگش اون قسمت عوض بشه این با دیتابیس انجام دادم اسکیول اش هستش.

davidrobert
پنج شنبه 08 شهریور 1397, 19:30 عصر
سلام و خسته نباشید دوستان بنده از GMAP استفاده کردم برای نمایش نقشه با مختصات دستوراتش خیلی خوب و سریع هستش.
148775
این هم دستوراتش

private void button1_Click(object sender, EventArgs e)
{
MAP.DragButton = MouseButtons.Left;
MAP.MapProvider = GMapProviders.GoogleMap;
//double lat = Convert.ToDouble(TxtLat.Text.ToString().Replace("/", ".").Replace(",", ".").Replace(".", "."));
//double longt = Convert.ToDouble(TxtLong.Text.ToString().Replace("/", ".").Replace(",", ".").Replace(".", "."));
//MAP.Position =
// new PointLatLng(Convert.ToDouble(TxtLat.Text.ToString( )),Convert.ToDouble(TxtLong.Text.ToString().Length ));
MAP.Position =
new PointLatLng(35.579593, 51.112131);
//MAP.MinZoom = 10;
MAP.MaxZoom = 100;
MAP.Zoom = 18;
}

ولی با یک مشکل برخورد کردم و اون مشکل در سر مختصات هستش وفتی مختصات دستی میدم درست مثل این.
MAP.Position = new PointLatLng(35.579593, 51.112131);
برنامه به من هیچ خطایی نمیده ولی موقع که میخوام از کادر متن استفاده کنم و عمل تبدیل انجام بدم چون اعشار داره خطا میده و هرجور سعی کردم این به نقطه اعشار گیر نده و بره بیاره توسط کادر متن گیر داد تو قسمت ورودی مختصات فقط فقط مقدار Double میشناسه دوستان با این کامپوننت کار کردن برای رفع این مشکل که سیستم گیر نده و دقیقا بره روی همون قسمت.

danialafshari
پنج شنبه 08 شهریور 1397, 23:00 عصر
با سلام
برای من مشکل نداشت

148777

اگر از ویندوز 8 استفاده کنید فکر میکنم بجای . باید از / استفاده کنید
موفق باشید

davidrobert
جمعه 09 شهریور 1397, 11:44 صبح
ممنون درست شد چون هنگام کپی پست از یک BackSlash کوچک استفاده میکرد که Unicode اش فرق میکرد و از ویندوز 10 استفاده میکنم ولی با مقدار Replace حل کردم بک اسلش موقع ارسال عوض میکنم و درست شد.

davidrobert
یک شنبه 25 شهریور 1397, 21:33 عصر
سلام و خسته نباشید دوستان امروز تونستم با خود سازمان صحبت کنم و جلسه که قرار دادم حالت نقشه روی نرم افزار قبلی ایشون به این صورت نقشه شون هستش.

اومده از یه یک ابزار مثل دکمه استفاده کرده برای هر قطعه که میگیره یه دونه قبر اضافه میکنه و روی اون میزنم اطلاعات متوفی در سه طبقه نشان میده و بر حسب رنگ هم وضعیت قبر نشان میده و هر لحظه هم به تعداد قبرش اضافه میشه تو ثبت ولی یه خواهش دارم چطوری میتوانم اگه شخص متوفی ثبت شد به این صورت که تو خانه 8 تا چند یا 7 تا چند روی به پایین قرار بدم. و بر حسب رنگ بتوانم بگم کی کجا خوابیده و اگه تو شماره یک، یک نفر دفن کرد یک دفعه رفت شماره 13 از یک تا 13 قبر به صورت خالی نشان بده که به اون رنگ مورد نظر هم که موجود هستش و یک و 13 رو به صورت متوفی ثبت شده قرار بده و باقی خالی و ادامه اش هم ثبت شد و یک دفعه تو شماره 6 دفن شد یک و شش و 13 رو رنگ شده پر نشان بده و باقی رو خالی و روی همه شون یه شماره بی فته این شماره نداره چطوری میتوانم به این صورت درست کنم وقتی روش کلیک کردم اطلاعات شو بهم نشان بده ممنون میشم کمک کنید این تصویر برنامه قبلی و خواستشون هستش.
و یک سوال دیگه در استیمول سافت من چطوری میتوانم بگم 10 تا عنوان گزارش روی برگه هستش ولی از 10 تا هر کدام به صورت دلخواه یک یا 10 تا نشان بده و جمع کنه هزینه کل همان ستون ها رو یا کمتر انتخاب کنه و همون تعداد از هزینه رو جمع و در خود استیمول همان تعداد که رفته برای نمایش همانجا جمع و گزارش کنه ممنون میشم بهم بگید راهی هستش با تشکر فراوان

Mahmoud Zaad
یک شنبه 25 شهریور 1397, 22:33 عصر
سلام
این ظاهراً با یه طرح گرافیکیه شبیه همون مثالی که کدش رو براتون نوشتم. شما همون مثال رو تکمیل کنید. کلیتش اینه که یه مسطیل بزرگ داریم که با یه سری محاسبات ساده ریاضی طول و عرضش رو تقسیم می کنیم و با استفاده از DrawLine یه سری خطوط افقی و عمودی میکشیم تا مستطیل های کوچک ایجاد بشن. رنگ کردن و نوشتن شماره هم کاری نداره با DrawStrng میشه متن مورد نظر رو در مکان مورد نوشت. فقط یه سری محاسبات ریاضی میخواد. بعد از هر ثبتی یه بار طرح رو رفرش می کنید و با توجه به نوع طبقات، اون مستطیل رو رنگ می کنید.

davidrobert
یک شنبه 25 شهریور 1397, 23:02 عصر
سلام
این ظاهراً با یه طرح گرافیکیه شبیه همون مثالی که کدش رو براتون نوشتم. شما همون مثال رو تکمیل کنید. کلیتش اینه که یه مسطیل بزرگ داریم که با یه سری محاسبات ساده ریاضی طول و عرضش رو تقسیم می کنیم و با استفاده از DrawLine یه سری خطوط افقی و عمودی میکشیم تا مستطیل های کوچک ایجاد بشن. رنگ کردن و نوشتن شماره هم کاری نداره با DrawStrng میشه متن مورد نظر رو در مکان مورد نوشت. فقط یه سری محاسبات ریاضی میخواد. بعد از هر ثبتی یه بار طرح رو رفرش می کنید و با توجه به نوع طبقات، اون مستطیل رو رنگ می کنید.
سلام و خسته نباشید دوست عزیز جسارت نباشه به همین صورت اگه برای شما مقدور بود امکانش هستش با دیتابیس یه دونه ساده برای بنده درست کنید اگه مقدور بود یک دنیا ممنون میشم بتوانم لطف شما رو جبران میکنم.
چون تو گرافیک مشکل دارم و مختصات گیر آوردم ممنون میشم یه نمونه کمک کنید بنده رو که روی هر کدام زدم اطلاعات مربوط به همان قبر ببینم

Mahmoud Zaad
دوشنبه 26 شهریور 1397, 10:12 صبح
ببینید من راهنمایی میکنم شما خودتون انجام بدید چون فردا ممکنه اونا نظرشون عوض بشه یا یه نقشه دیگه نشون بدن. جسارتاً انوقت دوباره ما باید اونو طراحی کنیم؟ ولی اگه خودتون یاد بگیرید دیگه هر طرحی هم بدن به راحتی انجام میدید.
شما همین طرح رو بخواید روی کاغذ بکشید چکار می کنید؟
من:
1-یه مستطیل با طول و عرض مشخص میکشم.
2- تعداد سطرها رو پیدا میکنم. طول مستطیل بزرگ رو تقسیم بر تعداد میکنم و یک ضلع مستطیل کوچکتر به دست میاد. حالا روی ضلع های مستطیل بزرگ رو علامت گذاری میکنم. (هر دو ضلع روبرو)
3- الگوی قسمت 2 رو برای عرض مستطیل بزرگ هم تکرار میکنم.
4- با خط های افقی و عمودی نقطه های مشخص شده در قسمت 2و3 رو به هم متصل میکنم.
5- یک جدول ایجاد شد.

- نحوه پیدا کردن مستطیلها هم که در کد قبل گفتم با کمی تغییر میتونید انجامش بدید.

davidrobert
دوشنبه 26 شهریور 1397, 11:33 صبح
ببینید من راهنمایی میکنم شما خودتون انجام بدید چون فردا ممکنه اونا نظرشون عوض بشه یا یه نقشه دیگه نشون بدن. جسارتاً انوقت دوباره ما باید اونو طراحی کنیم؟ ولی اگه خودتون یاد بگیرید دیگه هر طرحی هم بدن به راحتی انجام میدید.
شما همین طرح رو بخواید روی کاغذ بکشید چکار می کنید؟
من:
1-یه مستطیل با طول و عرض مشخص میکشم.
2- تعداد سطرها رو پیدا میکنم. طول مستطیل بزرگ رو تقسیم بر تعداد میکنم و یک ضلع مستطیل کوچکتر به دست میاد. حالا روی ضلع های مستطیل بزرگ رو علامت گذاری میکنم. (هر دو ضلع روبرو)
3- الگوی قسمت 2 رو برای عرض مستطیل بزرگ هم تکرار میکنم.
4- با خط های افقی و عمودی نقطه های مشخص شده در قسمت 2و3 رو به هم متصل میکنم.
5- یک جدول ایجاد شد.

- نحوه پیدا کردن مستطیلها هم که در کد قبل گفتم با کمی تغییر میتونید انجامش بدید.

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

Mahmoud Zaad
دوشنبه 26 شهریور 1397, 18:17 عصر
دیتابیس قسمت آخر کاره، شما هنوز اون طرح نکشیدید. ذخیره و فراخوانی در دیتابیس چیزی نداره. شما اول شروع کنید اون طرح رو بکشید. بعدش هر مستطیل کوچک یه شماره داره که به راحتی ذخیره و بازیابی میشه.

davidrobert
دوشنبه 26 شهریور 1397, 18:52 عصر
دیتابیس قسمت آخر کاره، شما هنوز اون طرح نکشیدید. ذخیره و فراخوانی در دیتابیس چیزی نداره. شما اول شروع کنید اون طرح رو بکشید. بعدش هر مستطیل کوچک یه شماره داره که به راحتی ذخیره و بازیابی میشه.

سلام و خسته نباشید بنده دیتابیس رو درست کردم وکاراش دارم پیش میبرم ولی اون نمونه ساده هم باشه میتوانم اگه تغییر یا چیزی بابت نقشه بهش اضافه کنم. چون یه حالت پیش نمایش میخوان بهشون نشان بدم دارم به خواسته اون ها پیش میرم و نقش رو اصلا با دیتابیس با دادن مختصات درست بلد نیستم.

davidrobert
چهارشنبه 28 شهریور 1397, 10:24 صبح
سلام و خسته نباشید دوستان امروز تونستم با خود سازمان صحبت کنم و جلسه که قرار دادم حالت نقشه روی نرم افزار قبلی ایشون به این صورت نقشه شون هستش.

اومده از یه یک ابزار مثل دکمه استفاده کرده برای هر قطعه که میگیره یه دونه قبر اضافه میکنه و روی اون میزنم اطلاعات متوفی در سه طبقه نشان میده و بر حسب رنگ هم وضعیت قبر نشان میده و هر لحظه هم به تعداد قبرش اضافه میشه تو ثبت ولی یه خواهش دارم چطوری میتوانم اگه شخص متوفی ثبت شد به این صورت که تو خانه 8 تا چند یا 7 تا چند روی به پایین قرار بدم. و بر حسب رنگ بتوانم بگم کی کجا خوابیده و اگه تو شماره یک، یک نفر دفن کرد یک دفعه رفت شماره 13 از یک تا 13 قبر به صورت خالی نشان بده که به اون رنگ مورد نظر هم که موجود هستش و یک و 13 رو به صورت متوفی ثبت شده قرار بده و باقی خالی و ادامه اش هم ثبت شد و یک دفعه تو شماره 6 دفن شد یک و شش و 13 رو رنگ شده پر نشان بده و باقی رو خالی و روی همه شون یه شماره بی فته این شماره نداره چطوری میتوانم به این صورت درست کنم وقتی روش کلیک کردم اطلاعات شو بهم نشان بده ممنون میشم کمک کنید این تصویر برنامه قبلی و خواستشون هستش.
و یک سوال دیگه در استیمول سافت من چطوری میتوانم بگم 10 تا عنوان گزارش روی برگه هستش ولی از 10 تا هر کدام به صورت دلخواه یک یا 10 تا نشان بده و جمع کنه هزینه کل همان ستون ها رو یا کمتر انتخاب کنه و همون تعداد از هزینه رو جمع و در خود استیمول همان تعداد که رفته برای نمایش همانجا جمع و گزارش کنه ممنون میشم بهم بگید راهی هستش با تشکر فراوان

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

davidrobert
چهارشنبه 28 شهریور 1397, 14:19 عصر
سلام و خسته نباشید دوستان بنده قبر ها رو با دکمه به صورت آرایه آوردم که سریع تحویل بدم ولی دو مورد گیرم چطور بهش ID دیتابیس بدم که تو نمایش نباشه برای اون دکمه و دوم وقتی رو اون ستون کلیک کردم مثلا روی شماره یک کلیک کردم بیاد نفرات دفن شده داخل اون قبر نشان بده اطلاعات اش رو
148917
به این صورت و رنگ وضعیت قبرها رو لحاظ کردم برای نمایش فقط دو مورد ایراد دارم چطور پارامتر بفرستم برای دریافت اطلاعات و دوم درست برای اون قطعه و شماره قبر اطلاعات نشان بده برحسب شرط ممنون میشم راهی سراغ دارید این هم کد ها من به صورت پروسیجر هستش

void LoadInfo()
{
DataTable dt = sabtMotovafyGabzPeshAndSanadGabr.List_Tomp(Convert .ToInt32(textBox1.Text));
if (dt.Rows.Count > 0)
{
flowLayoutPanel1.Controls.Clear();
for (int i = 0; i < dt.Rows.Count; i++)
{
Button b = new Button();
string number = dt.Rows[i][P_Sabt_Motovafy_Gabz_Pesh_And_Sanad_Gabr.SM_Tabage].ToString();
string shomare = dt.Rows[i][P_Sabt_Motovafy_Gabz_Pesh_And_Sanad_Gabr.SM_Shomar e].ToString();
string live = dt.Rows[i][P_Sabt_Motovafy_Gabz_Pesh_And_Sanad_Gabr.SM_Vazeye t].ToString();

if (number=="0")
{
b.BackColor = Color.Gray;
}
if (number=="1")
{
b.BackColor = Color.Yellow;
}
if (number=="2")
{
b.BackColor = Color.GreenYellow;
}
if (number=="3")
{
b.BackColor = Color.Pink;
//Thread.Sleep(100);
b.BackColor = SystemColors.Control;
}
if (live=="زنده")
{
b.BackColor = Color.Blue;
//Thread.Sleep(100);
b.BackColor = SystemColors.Control;
}

b.Text ="قبر شماره : "+ Convert.ToInt32(i + 1).ToString();
b.Width=100;
flowLayoutPanel1.Controls.Add(b);
}
}
else if (dt.Rows.Count==0)
{
flowLayoutPanel1.Controls.Clear();
}
}


private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
LoadInfo();
flowLayoutPanel1.AutoScroll = true;
}
}

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

Mahmoud Zaad
چهارشنبه 28 شهریور 1397, 14:44 عصر
سلام
استفاده از خاصیت tag دکمه ها

davidrobert
چهارشنبه 28 شهریور 1397, 14:52 عصر
سلام
استفاده از خاصیت tag دکمه ها

تا حالا ننوشتم نوشتنش و کجا باید بنویسم ممنون میشم بگید با تشکر که هر دکمه یه ID داشته باشه

Mahmoud Zaad
چهارشنبه 28 شهریور 1397, 15:06 عصر
شما مثلاً توی لود فرم میاید لیست قبرها رو به دست میارید درسته؟ همونجا هم که خاصیت تکست رو مقدار میدید، همونطور هم خاصیت tag رو مقدار بدید. button1.Tag=...

Shadow_net
چهارشنبه 28 شهریور 1397, 15:14 عصر
سلام
چرا برای طراحی از datagridview استفاده نمیکنید؟
اندیس داره و راحت قابل ذخیره سازی در دیتابیس و بارگذاری هست

davidrobert
چهارشنبه 28 شهریور 1397, 15:20 عصر
سلام
استفاده از خاصیت tag دکمه ها

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

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using WindowsFormsApplication1.BAL;
using WindowsFormsApplication1.Models.PAL;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Tbl_sabt_Motovafy_Gabz_Pesh_And_Sanad_Gabr sabtMotovafyGabzPeshAndSanadGabr = new Tbl_sabt_Motovafy_Gabz_Pesh_And_Sanad_Gabr();
private void Form1_Load(object sender, EventArgs e)
{

}
void LoadInfo()
{
DataTable dt = sabtMotovafyGabzPeshAndSanadGabr.List_Tomp(Convert .ToInt32(textBox1.Text));
if (dt.Rows.Count > 0)
{
flowLayoutPanel1.Controls.Clear();
for (int i = 0; i < dt.Rows.Count; i++)
{
Button b = new Button();
string number = dt.Rows[i][P_Sabt_Motovafy_Gabz_Pesh_And_Sanad_Gabr.SM_Tabage].ToString();
string shomare = dt.Rows[i][P_Sabt_Motovafy_Gabz_Pesh_And_Sanad_Gabr.SM_Shomar e].ToString();
string live = dt.Rows[i][P_Sabt_Motovafy_Gabz_Pesh_And_Sanad_Gabr.SM_Vazeye t].ToString();

if (number=="0")
{
b.BackColor = Color.Gray;
}
if (number=="1")
{
b.BackColor = Color.Yellow;
}
if (number=="2")
{
b.BackColor = Color.GreenYellow;
}
if (number=="3")
{
b.BackColor = Color.Pink;
//Thread.Sleep(100);
b.BackColor = SystemColors.Control;
}
if (live=="زنده")
{
b.BackColor = Color.Blue;
//Thread.Sleep(100);
b.BackColor = SystemColors.Control;
}

b.Text ="قبر شماره : "+ Convert.ToInt32(i + 1).ToString();
b.Width=100;
flowLayoutPanel1.Controls.Add(b);
}
}
else if (dt.Rows.Count==0)
{
flowLayoutPanel1.Controls.Clear();
}
}
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
LoadInfo();
flowLayoutPanel1.AutoScroll = true;
}
}
}
}

davidrobert
چهارشنبه 28 شهریور 1397, 15:25 عصر
سلام
چرا برای طراحی از datagridview استفاده نمیکنید؟
اندیس داره و راحت قابل ذخیره سازی در دیتابیس و بارگذاری هست

درخواست سازمان مثل نقشه بود میخوام به این صورت بهشون بدم تا بی خیال نقشه بیشن چون با دیتاگرید ویو قبول ندارن

Shadow_net
چهارشنبه 28 شهریور 1397, 15:42 عصر
درخواست سازمان مثل نقشه بود میخوام به این صورت بهشون بدم تا بی خیال نقشه بیشن چون با دیتاگرید ویو قبول ندارن

طراح شما هستید. تصویر پست قبل رو ببینید
برای اینکه بفهمید رو کدوم دکمه کلیک شده از sender استفاده کنید

private void Form1_Load(object sender, EventArgs e)
{
for (int i = 0; i < 40; i++)
{
Button button = new Button();
flowLayoutPanel1.Controls.Add(button);
button.Tag = i.ToString();
button.Click += Button_Click;
}
}
private void Button_Click(object sender, EventArgs e)
{
var btn = (Button)sender;
MessageBox.Show($"Button number : {btn.Tag}");
}