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

نام تاپیک: ایجاد پنجره با لسیت و اسکرول بار

  1. #1

    ایجاد پنجره با لسیت و اسکرول بار

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

    با تشکر
    فایل های ضمیمه فایل های ضمیمه

  2. #2
    کاربر دائمی آواتار mohsen12345
    تاریخ عضویت
    دی 1387
    محل زندگی
    فعلا تهران
    پست
    193

    نقل قول: ایجاد پنجره با لسیت و اسکرول بار

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

    با تشکر
    شما اگه با canvas می خواهید باید یه آرایه از String داشته باشید و اون ها رو زیر هم چاپ کنید تا به آخر صفحه برسید و با فشردن کلید های جهتی عکس منوی انتخاب کننده رو پایین بیارید تا به آخرین آیتم درون صفحه برسه ، از اون ببعد با هر کلید جهتی کل آیتم هایی که چاپ می کنید یک آیتم بره بالا تا به آخر منو برسه و بعد اون با فشردن کلید جهت پایین به ابتدای منو برگرده

    برای اسکرول هم باید یه عکس برای اون انتخاب کنید و اندازش رو به (اندازه مکانی که برای اسکرول در نظر گرفتید تقسیم بر تعداد آیتم های منو) تنظیم کنید و با هر حرکت اون هم جاش تغییر کنه

  3. #3

    نقل قول: ایجاد پنجره با لسیت و اسکرول بار

    نقل قول نوشته شده توسط mohsen12345 مشاهده تاپیک
    شما اگه با canvas می خواهید باید یه آرایه از String داشته باشید و اون ها رو زیر هم چاپ کنید تا به آخر صفحه برسید و با فشردن کلید های جهتی عکس منوی انتخاب کننده رو پایین بیارید تا به آخرین آیتم درون صفحه برسه ، از اون ببعد با هر کلید جهتی کل آیتم هایی که چاپ می کنید یک آیتم بره بالا تا به آخر منو برسه و بعد اون با فشردن کلید جهت پایین به ابتدای منو برگرده

    برای اسکرول هم باید یه عکس برای اون انتخاب کنید و اندازش رو به (اندازه مکانی که برای اسکرول در نظر گرفتید تقسیم بر تعداد آیتم های منو) تنظیم کنید و با هر حرکت اون هم جاش تغییر کنه

    خدا خیرتون بده دوست عزیز میشه با یه مثال ساده توضیحتون رو تکمیل کنین؟!
    واقعاً ممنون میشم
    مرسی

  4. #4
    کاربر دائمی آواتار mohsen12345
    تاریخ عضویت
    دی 1387
    محل زندگی
    فعلا تهران
    پست
    193

    نقل قول: ایجاد پنجره با لسیت و اسکرول بار

    نقل قول نوشته شده توسط sd.CSharpProgrammer مشاهده تاپیک
    خدا خیرتون بده دوست عزیز میشه با یه مثال ساده توضیحتون رو تکمیل کنین؟!
    واقعاً ممنون میشم
    مرسی
    دوستان انگار نیاز مبرمی به این قضیه به این ساده ایدارن
    باشه واستون توضیح می دم

  5. #5
    کاربر دائمی آواتار mohsen12345
    تاریخ عضویت
    دی 1387
    محل زندگی
    فعلا تهران
    پست
    193

    نقل قول: ایجاد پنجره با لسیت و اسکرول بار

    اول از همه میریم سراغ تعریف متغییر هامون (لازم به ذکره که فرض می کنم که شما یه کلاس فونت قبلا ساختید و اون رو دیگه براتون توضیح نمی دم)

    private String [] Menustr;
    private int[] menupic;
    private int Pointerpic;
    Image Menushow;
    private int PointerMain,Startpaint;
    private int StartPoint;
    private int Endpoint;
    private int getHeight;
    private int getWidth;
    private int pointerPic;
    private Image sel_Left,Sel_Right;
    private int keypress,pointerShowImage;

    ما این متغییر ها رو در قسمت global صفحه تعریف می کنیم که تو تمام برنامه بتونیم از اون استفاده کنیم

  6. #6
    کاربر دائمی آواتار mohsen12345
    تاریخ عضویت
    دی 1387
    محل زندگی
    فعلا تهران
    پست
    193

    نقل قول: ایجاد پنجره با لسیت و اسکرول بار

    حالا میریم سراغ تعریف تابعی که کلمات منو و همچنین شماره عکس ها رو داخلش ذخیره کنیم رو پر کنیم


    private void FillMenu(){
    Menustr=new String[5];
    menupic=new int[5];
    Menustr[0]="menu one";
    Menustr[1]="menu two";
    Menustr[2]="Menu tree";
    Menustr[3]="menu four";
    Menustr[4]="menu Exit";
    menupic[0]=-1;
    menupic[1]=-2;
    menupic[2]=-3;
    menupic[3]=-15;
    menupic[4]=-4;
    PointerMain=4;
    }

  7. #7
    کاربر دائمی آواتار mohsen12345
    تاریخ عضویت
    دی 1387
    محل زندگی
    فعلا تهران
    پست
    193

    نقل قول: ایجاد پنجره با لسیت و اسکرول بار

    حالا میریم سراغ تعریف constractor کلاس
    (فرض رو بر این میگیریم که این یک کلاس فراخوانی شده از داخل یک کلاس مشتق شده از Canvas هست و از داخل اونجا اندازه صفحه رو به این کلاس می فرستیم

    public Menu(int getw,int geth){
    getHeight=geth;
    getWidth=getw;
    Startpaint=50;
    FillMenu();
    }

  8. #8
    کاربر دائمی آواتار mohsen12345
    تاریخ عضویت
    دی 1387
    محل زندگی
    فعلا تهران
    پست
    193

    نقل قول: ایجاد پنجره با لسیت و اسکرول بار

    حالا میریم سراغ اینکه بفهمیم چند تا منو تو صفحمون جا می شوند و اجازه چاپ چند تا منو رو داریم


    private int SetEndPoint(int StartingPoint){
    int ret = 0,Len=Startpaint;
    for (int i=StartingPoint;i<=PointerMain;i++){
    Len=Len+40;
    if (Len>getHeight-30)
    break;
    ret=i;
    }
    return ret;
    }


    احتیاج به توضیح نیست که بگم متغییر Startpaint برای مشخص کردن اینه که الان ما مرز منوهامون رو بدونیم که از کجای صفحه اجازه قرار دادن منوهامون رو داریم
    فرض رو هم بر این می گیریم که تا 30 پیکسل مونده به پایان صفحه لیست منوهامون رو قطع کنیم

  9. #9
    کاربر دائمی آواتار mohsen12345
    تاریخ عضویت
    دی 1387
    محل زندگی
    فعلا تهران
    پست
    193

    نقل قول: ایجاد پنجره با لسیت و اسکرول بار

    حالا میریم سراغ تابع paint

    public void paint(Graphics g){
    Endpoint=SetEndPoint(StartPoint);
    repaint(g);
    g.setClip(0, 0, getWidth, getHeight);

    pointerShowImage=SetShowPointer(StartPoint, pointerPic-1);
    MainCan.Mnushow=true;
    MainCan.Backshow=false;
    MainCan.Clickshow=true;
    MainCan.PosShow=pointerShowImage;

    }



    خب من تو نوشته های قبلی در مورد تابع SetEndpoint توضیح دادم پس میریم سراغ تابع repaint

  10. #10
    کاربر دائمی آواتار mohsen12345
    تاریخ عضویت
    دی 1387
    محل زندگی
    فعلا تهران
    پست
    193

    نقل قول: ایجاد پنجره با لسیت و اسکرول بار

    توی این تابع قراره که منوهامون رو چاپ کنیم


    private void repaint(Graphics g){
    int yprintm = Startpaint;
    String AllPrint;
    for (int i=StartPoint;i<=Endpoint;i++){
    if (yprintm >= getHeight-50)
    break;
    try{
    g.setClip(0, 0, getWidth, getHeight);
    int mnu=menupic[i];
    Menushow=Image.createImage("/Been_D/L1_Menu/"+menupic[i]);
    g.drawImage(Menushow, getWidth-Menushow.getWidth()-8,yprintm, 0);
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    String str=Menustr[i];
    MyFontClass.PrintLine(Menustr[i], getWidth-Menushow.getWidth()-11, yprintm, 10000, 0, getHeight-40, 20, 0, MyFontClass.fullim, g, Graphics.RIGHT);
    yprintm=yprintm+40;
    }
    }

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

  11. #11
    کاربر دائمی آواتار mohsen12345
    تاریخ عضویت
    دی 1387
    محل زندگی
    فعلا تهران
    پست
    193

    نقل قول: ایجاد پنجره با لسیت و اسکرول بار

    خب برگریدم به تابع paint
    من تو خط چهارم تابعی به شکل زیر رو فراخوانی کردم

    pointerShowImage=SetShowPointer(StartPoint, pointerPic-1);

    حالا توضیح در مورد این تابع

    من با این تابع موقعیت منوی انتخاب رو مشخص می کنم (همون عکسی که وقت انتخاب منو باید روش چاپ شه )

    private int SetShowPointer(int Point,int endp){
    if (endp<0){
    return Startpaint;
    }
    if (endp==PointerMain){
    return (ShowPointer(Point, endp));
    }
    if ( keypress==2){
    return (ShowPointer(Point, endp));
    }else {
    return (ShowPointer(Point, endp));
    }

    }


  12. #12
    کاربر دائمی آواتار mohsen12345
    تاریخ عضویت
    دی 1387
    محل زندگی
    فعلا تهران
    پست
    193

    نقل قول: ایجاد پنجره با لسیت و اسکرول بار

    تو تابع SetShowpointer یک تابع دیگه فراخوانی کردم که اینجا توضیح میدم


    private int ShowPointer(int Point,int endp){
    int FirNum = Startpaint;
    for (int i=Point;i<=endp;i++){
    FirNum+=40;
    }
    return FirNum;
    }


  13. #13
    کاربر دائمی آواتار mohsen12345
    تاریخ عضویت
    دی 1387
    محل زندگی
    فعلا تهران
    پست
    193

    نقل قول: ایجاد پنجره با لسیت و اسکرول بار

    خب حالا میریم سراغ تعریف تابع فشردن کلید
    (باز هم میگم فرض ما برا اینه که این رو تو یه کلاسی غیر کلاس اصلی Canvas ساختیم و از اونجا داریم فراخوانی می کنیم)


    public void Keypressed(int keycode , int key){
    if (keycode==50 || key==-1||key==1||keycode==-1){

    UpPress();
    }
    if (keycode==56 || key==-2|| keycode==-2 || key==6){
    DownPress();
    }
    if (keycode==53 || key==8 ){
    FirePress();
    }


  14. #14
    کاربر دائمی آواتار mohsen12345
    تاریخ عضویت
    دی 1387
    محل زندگی
    فعلا تهران
    پست
    193

    نقل قول: ایجاد پنجره با لسیت و اسکرول بار

    خب اول میریم سراغ تابع Uppress()


    private void UpPress(){
    keypress=2;
    if (pointerPic==0){
    pointerPic=PointerMain;
    StartPoint=StartInEnd(pointerPic);
    Endpoint=SetEndPoint(StartPoint);
    }else{
    if (pointerPic<=StartPoint)
    pointerPic=StartPoint;
    else
    pointerPic--;
    }
    if (pointerPic<=StartPoint){
    StartPoint--;
    }
    if (StartPoint<0)
    StartPoint=0;
    }



  15. #15
    کاربر دائمی آواتار mohsen12345
    تاریخ عضویت
    دی 1387
    محل زندگی
    فعلا تهران
    پست
    193

    نقل قول: ایجاد پنجره با لسیت و اسکرول بار

    حالا میریم سراغ تابع DownPress


    private void DownPress(){
    keypress=8;
    if (pointerPic>=Endpoint){
    StartPoint++;
    }
    if (pointerPic==PointerMain){
    pointerPic=0;
    StartPoint=0;
    }else{
    if (pointerPic>Endpoint)
    pointerPic=Endpoint;
    else
    pointerPiC++‎;

    }
    if (StartPoint>=PointerMain)
    StartPoint=0;
    }

  16. #16
    کاربر دائمی آواتار mohsen12345
    تاریخ عضویت
    دی 1387
    محل زندگی
    فعلا تهران
    پست
    193

    نقل قول: ایجاد پنجره با لسیت و اسکرول بار

    حالا میریم سراغ تایع Firepress
    لازم به توضیح کار این توابع که نیست؟ همه اسمشون روشه


    private String FirePress(){

    switch (pointerPic){
    case 0:{
    //Menu One Pressed
    break;
    }
    case 1:{
    //Menu Two Pressed

    break;
    }
    case 2:{
    break;
    }case 3:{
    //Menu Tree Pressed

    break;
    }case 4:{
    //Menu Exit Pressed
    break;

    }
    }
    return "Menu Pressed";

    }


  17. #17
    کاربر دائمی آواتار mohsen12345
    تاریخ عضویت
    دی 1387
    محل زندگی
    فعلا تهران
    پست
    193

    نقل قول: ایجاد پنجره با لسیت و اسکرول بار

    حالا میریم سراغ تابع StartInEnd که در تابع Uppress فراخوانی کردیمش


    private int StartInEnd(int PointerEnd){
    int istart = 0;
    for(int i=PointerEnd;i>=0;i--){

    if (PointerEnd>SetEndPoint(i))
    break;
    istart=i;
    }
    return istart;
    }



  18. #18
    کاربر دائمی آواتار mohsen12345
    تاریخ عضویت
    دی 1387
    محل زندگی
    فعلا تهران
    پست
    193

    نقل قول: ایجاد پنجره با لسیت و اسکرول بار

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

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

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