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

نام تاپیک: کدوم button کلیک شده

  1. #1

    کدوم button کلیک شده

    چطور میشه تشخیص دا که کدوم button در یک فرم کلیک شده ؟

  2. #2
    کاربر دائمی آواتار Hamid_PaK
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    1,125
    می شه بیشتر راهنمایی کنید ؟؟
    ولی بهر حال می تونید از اسم دکمه استفاده کنید !!!

  3. #3
    کاربر دائمی آواتار e-shahshahani
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    تهران
    پست
    229
    اگه برای چند تا دکمه یک رویداد کلیک مشترک درست کردید( مثلا با کپی پیست) باید از کد زیر کمک بگیرید:
    if (sender as tbutton).name then ...

  4. #4
    من میخوام برای چند تا دکمه مختلف از یک فرم استفاده کنم ، یعنی وقتی هر کدوم از دکمه ها رو (که در فرمهای مختلف قرار دارن ) کلیک می کنم ، مثلاً form2 نمایش داده بشه ‌، ولی بسته به اینکه کدوم یک از این دکمه ها کلیک شده در form2 یک عمل خاصی انجام بشه (یه جورایی شاید multi threading) .
    از کد بالا هم استفاده کردم ولی وقتی نام Button رو بهش معرفی می کنم error میده .

    کدی که من نوشتم اینه :
    if (sender as tbutton).name='form4.button1'  then


    و error ی که میده :

    invalid class typecast

  5. #5
    کاربر دائمی آواتار Delphi Skyline
    تاریخ عضویت
    دی 1383
    محل زندگی
    شیراز
    پست
    1,174
    آخه name که '' نداره باید بنویسی : if (sender as tbutton).name=form4.button1 then

  6. #6
    این رو هم امتحان کردم ولی باز همون error رو داد

  7. #7
    نه ببخشید
    اینطوری اصلاً syntax error می ده

    incompatoble types 'String' and 'Tbottuns

  8. #8
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379
    بهتره قبل از انجام Type Cast نوع Sender رو چک کنید، چون Event مربوطه ممکنه توسط کامپوننت های دیگری هم فراخوانی بشه.

    در مثال زیر واقعه TForm1.Button1Click توسط 3 دکمه روی فرم، و نیز یک CheckBox فراخوانی میشود:

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    if Sender is TButton then
    begin
    if (Sender as TButton).Name = 'Button1' then
    ShowMessage('You clicked Button1');

    if (Sender as TButton).Name = 'Button2' then
    ShowMessage('You clicked Button2');

    if (Sender as TButton).Name = 'Button3' then
    ShowMessage('You clicked Button3');
    end;

    if (Sender is TCheckBox)
    and ((Sender as TCheckBox).Name = 'CheckBox1') then
    ShowMessage('You Clicked CheckBox1');
    end;

    پروژه مثال ضمیمه شده است.
    فایل های ضمیمه فایل های ضمیمه

  9. #9
    فکر کنم من منظورم رو بد رسوندم .

    من یه فرم دارم که روش یه button هست . می خوام از این فرم برای چند تا کار استفاده کنم ، یعنی نمی خوام چند تا فرم مشابه بسازم ؛ فقط مشکل اینه که وقتی button روی فرم رو کلیک کردم ، بسته به اینکه این فرم توسط کدوم کامپوننت (که می تونه در فرمهای دیگه هم قرار داشته باشه) فعال شده ، یک عمل خاص انجام بشه .
    یعنی من این فرم رو با چند تا کامپوننت میتونم show می کنم ، حالا میخوام بعد از اینکه فرم نمایش داده شد و روی دکمه موجود در فرم کلیک شد ، تشخیص بدم که این فرم توسط کدوم کامپوننت صدا زده شده .

    امیدوارم تونسته باشم منظورم رو برسونم

  10. #10
    یک متغیر تعریف و انرا در هر قسمت مقدار قابل تشخیص بدهید

  11. #11
    چطور می تونم یک متغیر عمومی در دلفی تعریف کنم ، به طوری که هکه فرمها اون رو بشناسن ؟

  12. #12
    چرا لقمه رو می پیچونین؟
    Private
    برای شما است
    Protected
    برای شما و بچه های شما
    Public
    برای همه ! حتی همسایه ها

    منظور از شما آبجکت ها !!!!

  13. #13
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379
    فرم مورد نظر رو از حالت Auto Create خارج کن (در منوی Project -> Options).

    در قسمت Public تعریفات فرم یک متغیر اضافه کن، مثلا اینجوری:

    type
    TForm2 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    private
    { Private declarations }
    public
    Value : Integer;
    end;


    سپس در Event مربوطه به دکمه مورد نظر بر اساس مقدار Value تصمیم بگیر که چه کاری رو انجام بدی:

    procedure TForm2.Button1Click(Sender: TObject);
    begin
    case Value of
    1: ShowMessage('Action 1');
    2: ShowMessage('Action 2');
    3: ShowMessage('Action 3');
    else ShowMessage('Unknown Action ');
    end;
    end;

    در فرم هایی که قراره این فرم رو برای انجام کار مورد نظر فراخوانی کنند یونیت این فرم رو Use کن، سپس اون فرم رو اینطوری فراخوانی کن:
     
    procedure TForm1.Button1Click(Sender: TObject);
    var Form2 : TForm2;
    begin
    Form2 := TForm2.Create(Form1);
    Form2.Value := 1;
    Form2.ShowModal;
    end;



    مثال ضمیمه را برای نمونه عملی ببین. من در این نمونه همه فراخوانی ها رو از یک فرم انجام دادم، اما این فراخوانی ها میتونه از فرمهای مختلف صورت بگیره.

    موفق باشی.
    فایل های ضمیمه فایل های ضمیمه
    • نوع فایل: zip 13.zip‏ (2.5 کیلوبایت, 17 دیدار)
    آخرین ویرایش به وسیله مهدی کرامتی : جمعه 01 مهر 1384 در 12:02 عصر

  14. #14
    ببخشید من الان دلفی نسب ندارم ولی فکر می کنم کد زیر کار کنه:
    اول خاصیت owner مربوط به ساخت فرم ثانویه را نام کلید کلیک شده قرار بده
    child:=TForm2.Create(button1);
    سپس می تونی تو فرمی که می خواهی اظهارش کنی(form2) خاصیت
    Owner.Name;
    رو چک کنی که نام کدام کلید رادارد که با فرمان case می تونی به راحتی این کار را انجام بدی

  15. #15
    کاربر دائمی آواتار Ehsansh
    تاریخ عضویت
    بهمن 1384
    محل زندگی
    127.0.0.1
    سن
    39
    پست
    278
    نیازی به تعریف متغییر نیست.
    خاصیت TAG که در همه کامپونتهای هست به این منظور طراحی شده.
    میتونید از اون استفاده کنید.
    موفق باشید.

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

  1. Button چند وضعیتی ؟
    نوشته شده توسط habedijoo در بخش VB.NET
    پاسخ: 5
    آخرین پست: چهارشنبه 09 مرداد 1387, 10:31 صبح
  2. به دنبال فایلهای گرافیکی برای Button
    نوشته شده توسط ب- تات در بخش کامپوننت های سایر شرکت ها، و توسعه کامپوننت
    پاسخ: 1
    آخرین پست: شنبه 03 شهریور 1386, 14:33 عصر
  3. Button زیبا برای vb
    نوشته شده توسط ehsan_2000 در بخش برنامه نویسی در 6 VB
    پاسخ: 10
    آخرین پست: پنج شنبه 14 مهر 1384, 09:22 صبح
  4. button همیشه فعال
    نوشته شده توسط negar84 در بخش C#‎‎
    پاسخ: 2
    آخرین پست: شنبه 02 مهر 1384, 09:15 صبح
  5. رویداد Button.click برای button های ایجاد شده در زمان load
    نوشته شده توسط Masuod در بخش ASP.NET Web Forms
    پاسخ: 5
    آخرین پست: جمعه 06 خرداد 1384, 21:09 عصر

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

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