آخرين پست هاي ارسالي انجمن ايران دلفي

تماشای رایگان فیلم ایرانی ، خارجی و کودک آکادمی دلفی
نمایش نتایج: از 1 به 14 از 14

موضوع: ایجاد و چیدن دکمه ها بصورت داینامیک

  1. #1
    مدیر انجمن javad_rajabloo آواتار ها
    تاریخ عضویت
    May 2013
    محل سکونت
    گنبد کاووس
    سن
    11
    نوشته ها
    71
    تشکر ها
    21
    تشکر شده 30 بار در 18 ارسال.

    ایجاد و چیدن دکمه ها بصورت داینامیک

    سلام به دوستان
    خسته نباشید
    یه سوال داشتم
    مثلا در یک دیتابیس ، یک تعداد کالا قراره وارد بشه
    چطور می تونیم بر اساس نام کالا ، دکمه ایجاد کنیم (عنوان دکمه ، مقدار دیتابیس باشه)
    البته تا اینجاش مشکلی نیست
    من می خوام داخل فرم که اجرا میشه ، دکمه ها به ترتیب چیده بشن (مثل یه جدول )
    ممنونم

  2. 2 کاربر مقابل از javad_rajabloo عزیز به خاطر این پست مفید تشکر کرده اند .

    b_e_shamlu (22 / February / 2015),noyasystem (06 / July / 2017)

  3. #2
    کاربر سایت mahmood آواتار ها
    تاریخ عضویت
    November 2014
    نوشته ها
    107
    تشکر ها
    4
    تشکر شده 60 بار در 40 ارسال.

    پاسخ : ایجاد و چیدن دکمه ها بصورت داینامیک

    سلام
    اگه ساخت داینامیکی کامپوننت منظورته تو اینترنت که راهنما زیاده
    یک لینک هم میزارم ببین
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
    میتونی بعد از ساخت قطعه، سایز و موقعیت و نم و ایونت هاش رو بهت تعیین کنید
    با تشکر

  4. #3
    مدیر انجمن javad_rajabloo آواتار ها
    تاریخ عضویت
    May 2013
    محل سکونت
    گنبد کاووس
    سن
    11
    نوشته ها
    71
    تشکر ها
    21
    تشکر شده 30 بار در 18 ارسال.

    پاسخ : ایجاد و چیدن دکمه ها بصورت داینامیک

    برای ساختش مشکل ندارم
    برای چینشش مشکل دارم
    البته برای تعداد کم موردی نیست اما تعدادکه زیاد باشه ...

  5. #4
    مدیر انجمن meyti آواتار ها
    تاریخ عضویت
    August 2013
    نوشته ها
    143
    تشکر ها
    134
    تشکر شده 78 بار در 55 ارسال.

    پاسخ : ایجاد و چیدن دکمه ها بصورت داینامیک

    با سلام
    امکانش هست یه توضیحی بدین که این برنامه به چه کاری میاد ؟ و هدف از این کار چیه ؟
    برنامه ای مثل رستوران ها میخاین بسازین که هر دکمه یه غذا یا یه سفارش به فاکتور اضافه کنه ؟ ؟
    یا برنامه شلوغتریه ؟

  6. #5
    مدیر انجمن javad_rajabloo آواتار ها
    تاریخ عضویت
    May 2013
    محل سکونت
    گنبد کاووس
    سن
    11
    نوشته ها
    71
    تشکر ها
    21
    تشکر شده 30 بار در 18 ارسال.

    پاسخ : ایجاد و چیدن دکمه ها بصورت داینامیک

    مثالی که زدین درسته
    ولی برنامه شلوغ تره و تعداد رکوردها امکان داره به 100 تا هم برسه !
    اونوقت سازماندهی 100 تادکمه مشکله که از چه ستون و سطری شروع بشه و کجا تموم بشه
    شاید نیاز باشه در صفحات بیشتر ارائه بشه
    سایز مانیتور کاربر معلوم نیست ...
    ویرایش توسط javad_rajabloo : 06 / December / 2014 در ساعت 01:45 PM

  7. کاربر مقابل از javad_rajabloo عزیز به خاطر این پست مفید تشکر کرده است:

    beny (09 / March / 2015)

  8. #6
    مدیر انجمن yanin آواتار ها
    تاریخ عضویت
    June 2013
    محل سکونت
    تهران
    سن
    11
    نوشته ها
    144
    تشکر ها
    13
    تشکر شده 53 بار در 34 ارسال.

    پاسخ : ایجاد و چیدن دکمه ها بصورت داینامیک

    اگر فقط منظورتون چیدمان هست که نباید کار مشکلی باشه با استفاده از دو حلقه که یکی کنترل کننده Left و دومی کنترل کننده Button Top باشه به سادگی میتونید هرجور Button ها رو بچینید
    مثلا تو این مثالی که میزنم تو یک فورم 1000 * 1000 ما 100 Button رو به صورت جدولی میسازیم البته این مثال خیلی ساده و فقط برای نشان دادن چیدمان است
    ولی شما میتونید سایز مانیتور یا Resolution صفحه رو بدست بیارید و با تعریف شرط هایی مشخص کنید اگه از حد فضای Button ها بیشتر بود با استفاده از PageControl یه Tab دیگه برای صفحه دوم بسازید
    کد:
     Var BtnTemp : TButton ;
     i,j : integer ;
     begin
      for I := 0 to 10 do
       Begin
        for j := 0 to 10 do
         Begin
          BtnTemp := TButton.Create(nil);
          BtnTemp.Name := 'Btn'+IntToStr(i)+IntToStr(j);
          BtnTemp.Left := i*100 ;
          BtnTemp.Top := j*100 ;
          BtnTemp.Caption := IntToStr(i)+'   '+IntToStr(j);
          BtnTemp.Parent := Form6 ;
          BtnTemp.OnClick := TempClick;
         End;
       End;
     end;
    حالا اگه بخواهید چیدمان همین Button هارو دوباره تغییر بدید میتونید با این روال این کار رو انجام دهید
    کد:
    procedure TForm6.Button2Click(Sender: TObject); Var
     BtnTemp : TButton ;
     i,j : integer ;
     begin
      for I := 0 to 10 do
       Begin
        for j := 0 to 10 do
         Begin
          with (FindChildControl('Btn'+IntToStr(i)+IntToStr(j)) As TButton) do
           begin
            Name := 'Btn'+IntToStr(i)+IntToStr(j);
            Left := i*50 ;
            Top := j*50 ;
            Caption := IntToStr(i)+'   '+IntToStr(j);
            Parent := Form6 ;
            OnClick := TempClick;
           end;
         End;
       End;
     end;
    البته با این تابع هم میتونید رزولیشن صفحه رو بدست آورید

    کد:
    procedure TForm6.Button3Click(Sender: TObject);var
    DC: THandle;
    Bits: integer;
    HRes: integer;
    VRes: integer;
    begin
    DC := GetDC(Handle);
    Bits := GetDeviceCaps(DC, BITSPIXEL);
    HRes := GetDeviceCaps(DC, HORZRES);
    VRes := GetDeviceCaps(DC, VERTRES);
    Edit1.Text := Format('%d bit, %d x %d', [Bits, HRes, VRes]);
    end;
    ویرایش توسط yanin : 06 / December / 2014 در ساعت 03:40 PM

  9. 4 کاربر مقابل از yanin عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (07 / December / 2014),beny (09 / March / 2015),b_e_shamlu (22 / February / 2015),javad_rajabloo (06 / December / 2014)

  10. #7
    کاربر سایت mahmood آواتار ها
    تاریخ عضویت
    November 2014
    نوشته ها
    107
    تشکر ها
    4
    تشکر شده 60 بار در 40 ارسال.

    پاسخ : ایجاد و چیدن دکمه ها بصورت داینامیک

    شاید هم برای راحتی بخوای 1000 تا کلید داشته باشی - یا آرایه تعریف کن که مثلا 0تا هزار از جنس tbotton . میخوای مثال بگم؟

  11. کاربر مقابل از mahmood عزیز به خاطر این پست مفید تشکر کرده است:

    beny (09 / March / 2015)

  12. #8
    مدیر انجمن javad_rajabloo آواتار ها
    تاریخ عضویت
    May 2013
    محل سکونت
    گنبد کاووس
    سن
    11
    نوشته ها
    71
    تشکر ها
    21
    تشکر شده 30 بار در 18 ارسال.

    پاسخ : ایجاد و چیدن دکمه ها بصورت داینامیک

    این عکس رو ببینید
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
    یه نرم افزار می خوام این شکلی طراحی کنم
    حالا که دکمه ها ایجاد شد چطوری بگیم هر دکمه چیکار کنه؟

  13. کاربر مقابل از javad_rajabloo عزیز به خاطر این پست مفید تشکر کرده است:

    beny (09 / March / 2015)

  14. #9
    مدیر انجمن yanin آواتار ها
    تاریخ عضویت
    June 2013
    محل سکونت
    تهران
    سن
    11
    نوشته ها
    144
    تشکر ها
    13
    تشکر شده 53 بار در 34 ارسال.

    پاسخ : ایجاد و چیدن دکمه ها بصورت داینامیک

    البته تو مثال قبل یک اشاره کوچیک کردم مثل
    BtnTemp.OnClick := TempClick;

    ولی خب الان یکم توضیح بیشتر میدم شاید بتونم کمکی کرده باشم

    اگر زمان تعریف Button ها اسم گذاری اونها بر روی اصولی باشه به سادگی میشه اونها رو با یه شرط کوچیک کنترل کرد
    یه نگاه به این کد بندازید
    کد:
    unit Unit1;
    
    interface
    
    
    uses
      Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
      Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
    
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        Procedure ClickAllBtn(Sender : Tobject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    
    var
      Form1: TForm1;
    
    
    implementation
    
    
    {$R *.dfm}
    
    
    procedure TForm1.Button1Click(Sender: TObject);
     Var
      i : integer ;
      BtnTemp : TButton ;
     begin
      for i := 1 to 3 do
       Begin
        BtnTemp := TButton.Create(nil);
        BtnTemp.Name := 'Btn'+IntToStr(i);
        BtnTemp.Caption := IntToStr(i) ;
        BtnTemp.Left := i*100 ;
        BtnTemp.Parent := Form1 ;
        BtnTemp.OnClick := ClickAllBtn;
       End;
     end;
    
    
    procedure TForm1.ClickAllBtn(Sender: Tobject);
     begin
      if (Sender As TButton).Name = 'Btn1' then
       Begin
        ShowMessage('Hellow');
       End;
      if (Sender As TButton).Name = 'Btn2' then
       Begin
        ShowMessage('Bye');
       End;
      if (Sender As TButton).Name = 'Btn3' then
       Begin
        ShowMessage('Yes');
       End;
     end;
    
    
    end.

    تو این یونیت من دو تا Procedure تعریف کردم یکی برای ساخت 3 button و یکی هم برای کنترل رویداد onclick سه button
    در پروسیجر Button1Click من با یک حلقه 3 Button ساختم و نام اونها رو به ترتیب Btn1 و Btn2 و Btn3 و در آخر رویداد OnClick همه اونها رو برار با پروسیجر ClickAllBtn گذاشتم
    بعد در پروسیجر ClickAllBtn با استفاده از خاصیت Name و یک شرط برسسی میکنم که کدوم Button کلیک شده و در ادامه به سادگی برای هر Button یک Showmessage مربوط به خودش رو قرار دادم

    البته شما میتونید به جای استفاده از Name در شرط از Caption یا Tag و یا حتی از مختصات Button ها استفاده کنید مثل Top و Left
    ولی به نظر من یکی از بهترین انتخاب ها استفاده از Tag و Case هست و من چون میخواستم موضوع رو براتون شفاف تر کنم از Name استفاده کردم
    ویرایش توسط yanin : 18 / February / 2015 در ساعت 10:29 PM

  15. 3 کاربر مقابل از yanin عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (20 / February / 2015),beny (09 / March / 2015),javad_rajabloo (19 / February / 2015)

  16. #10
    مدیر انجمن javad_rajabloo آواتار ها
    تاریخ عضویت
    May 2013
    محل سکونت
    گنبد کاووس
    سن
    11
    نوشته ها
    71
    تشکر ها
    21
    تشکر شده 30 بار در 18 ارسال.

    پاسخ : ایجاد و چیدن دکمه ها بصورت داینامیک

    ممنونم از راهنماییهاتون
    خیلی عالی بود

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

  17. کاربر مقابل از javad_rajabloo عزیز به خاطر این پست مفید تشکر کرده است:

    beny (09 / March / 2015)

  18. #11
    مدیر انجمن yanin آواتار ها
    تاریخ عضویت
    June 2013
    محل سکونت
    تهران
    سن
    11
    نوشته ها
    144
    تشکر ها
    13
    تشکر شده 53 بار در 34 ارسال.

    پاسخ : ایجاد و چیدن دکمه ها بصورت داینامیک

    در ابتدا یک سوال دارم آیا این تعداد نامعلوم ماکزیموم داره؟

  19. #12
    کاربر سایت zonline آواتار ها
    تاریخ عضویت
    February 2014
    محل سکونت
    مشهد
    نوشته ها
    1
    تشکر ها
    0
    تشکر شده 1 بار در 1 ارسال .

    پاسخ : ایجاد و چیدن دکمه ها بصورت داینامیک

    از فالو پنل استفاده کنید خودش کامپوننت ها رو میچینه براتون و نیازی به کد نویسی برای چیدن کامپوننت ها ندارید

  20. کاربر مقابل از zonline عزیز به خاطر این پست مفید تشکر کرده است:

    beny (09 / March / 2015)

  21. #13
    مدیر انجمن javad_rajabloo آواتار ها
    تاریخ عضویت
    May 2013
    محل سکونت
    گنبد کاووس
    سن
    11
    نوشته ها
    71
    تشکر ها
    21
    تشکر شده 30 بار در 18 ارسال.

    پاسخ : ایجاد و چیدن دکمه ها بصورت داینامیک

    نقل قول نوشته اصلی توسط zonline نمایش پست ها
    از فالو پنل استفاده کنید خودش کامپوننت ها رو میچینه براتون و نیازی به کد نویسی برای چیدن کامپوننت ها ندارید
    ممنونم

    اما من سرچ کردم این کامپوننت رو پیدا نکردم.
    اگه کم حجمه ، همینجا برای استفاده همه آپلود بفرمایید.
    اگه نیست لینک دانلودش رو بذارید ممنون میشم

  22. کاربر مقابل از javad_rajabloo عزیز به خاطر این پست مفید تشکر کرده است:

    beny (09 / March / 2015)

  23. #14
    کاربر سایت mahmood آواتار ها
    تاریخ عضویت
    November 2014
    نوشته ها
    107
    تشکر ها
    4
    تشکر شده 60 بار در 40 ارسال.

    پاسخ : ایجاد و چیدن دکمه ها بصورت داینامیک

    سلام
    چند مرحله انجام بدید
    1- اول بسازید
    2- به دکمه ها مثلا روتین onclick بدید
    توی روتین OnClick میشه فهمید کدوم کلید فشرده شده
    لینک زیر رو ببینید
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

موضوعات مشابه

  1. پاسخ: 0
    آخرين نوشته: 23 / August / 2014, 11:07 PM
  2. شكل فرم برنامه تان را به صورت قلب در آوريد
    توسط ahmadi613 در انجمن سورس دونی
    پاسخ: 0
    آخرين نوشته: 22 / September / 2013, 02:15 AM

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

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