combobox در دلفي

sara_she

Member
سلام
من با كامپوننت هاي دلفي اشنايي چنداني ندارم
مي خوام محتواي يك combobox رو چك كنم .براي مثال اگه كاربر "سرويس" رو انتخاب كرد كد 1 و اگه "خدمات" رو انتخاب كرد كئ 2 رو در بانك بريزم . اگه كد چك كردن combobox در دلفي رو برم بذارين ممنون مي شم

يه سوال ديگه مي خواستم بدونم براي اضافه كردن يه مجموعه سوال كه جلوي هركدومشون يك checkbox براي تيك زدن داريم بايد از چه كامپوننتي استفاده كنيم. اضافه كردن سوالات در كد نويسي انجام مي شه نه در design‌ برنامه
 

MnavidM

Active Member
سلام
من با كامپوننت هاي دلفي اشنايي چنداني ندارم
مي خوام محتواي يك combobox رو چك كنم .براي مثال اگه كاربر "سرويس" رو انتخاب كرد كد 1 و اگه "خدمات" رو انتخاب كرد كئ 2 رو در بانك بريزم . اگه كد چك كردن combobox در دلفي رو برم بذارين ممنون مي شم

يه سوال ديگه مي خواستم بدونم براي اضافه كردن يه مجموعه سوال كه جلوي هركدومشون يك checkbox براي تيك زدن داريم بايد از چه كامپوننتي استفاده كنيم. اضافه كردن سوالات در كد نويسي انجام مي شه نه در design‌ برنامه
برای سوال اول :

کد:
  if ComboBox1.Text='khadamat' then
  begin
    x:=1;
  end
  else if ComboBox1.Text='poshtibani' then
  begin
    x:=2;
  end;

سوال دوم : برای دومی کارت سخت میشه ، اضافه کردن شی جدید به فرم زیاد سخت نیست ، اما کنترل اون بعد از ایجاد یه مقدار برنامه ریزی می خواد.

اینم یه مثال :

کد:
var mych:TCheckBox;
begin
  mych:=TCheckBox.Create(Form1);
  with mych do
  begin
    Left:=50;
    Top:=10;
    Width:=100;
    Height:=17;
    Caption:='Ye Text';
    Visible:=true;
    Parent:=Form1;
  end;
end;
 

sara_she

Member
در مورد سوال دوم فكر مي كنم منظور منو درست متوجه نشديد

من يه فرم دارم كه مي خوام تو اون سطح دسترسي كاربران رو تعريف كنم. تو برنامه يك سري منو دارم و هر منو هم شامل زير منو و عمليات و دستورات مختلف
دو panel در نظر بگيريد كه تو يكي از اونا اسم منو ها ليست شده و جلوي هر اسم يك Checkbox هر كدوم كه تيك بخوره در panel‌كناري زير مجموعه اين منو و دستورات تعريف شده در اون ليست مي شوند كه جلوي هر كدوم از اين ها checkbox‌ داريم . حالا هر كدوم از checkbox ها كه تيك بخوره . در نهايت نشون دهنده اينه كه كاربر مربوطه اجازه دسترسي و كار با اين زير منو يا دستور رو داره

اميدوارم منظورمو درست گفته باشم .حالا شما پيشنهاد مي ديد كه چه كامپوننتهايي درون اين panel‌ ها بذارم . يا به طور كلي اجزاي اين فرم رو برام بگين

يه عكس نمونه براتون آپلود مي كنم
http://rapidshare.com/files/50512676/dastresi.JPG.html
 

MnavidM

Active Member
خوب همه چی معلومه ، شما برای چه قسمتی کامپوننت می خواید ؟

این کارهایی که شما گفتید با همون Groupbox و checkbox راه میفته .

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

نوید.
 

sara_she

Member
سلام

من با كامپونن تهاي دلفي آشنايي چنداني ندارم و نمي دونم دقيقا براي چه كاري بايد از listbox يا Combobox و ...استفاده كنم

اگه يه توضيح در مورد groupbox كه پيشنهاد دادين بدين واينكه چه طور كار مي كنه يا اينكه فرقش با listbox‌چيه ممنون مي شم
 

MnavidM

Active Member
Groupbox ابزاری هست که شما یک سری از کامپوننت ها رو در اون قرار می دید ، یعنی یه چیزی مثل sub-form .

یعنی کنترل جابجایی (و چند مورد از خصوصیات دیگر) کامپوننت ها با هم.

اما لیست باکس ، یه لیسته ، واسه نشون دادن نوشته ها و گاهی هم عکس به صورت پشت سر هم.
 

sara_she

Member
سلام
ممنونم از كمك هاتون

يه سوال در مورد groupbox

طبق گفته شما مي تونم بهش كامپوننت اضافه كنم . يعني مشكل اضافه كردن checkbox رو حل مي كنه

ولي مشكل ديگه اينه كه تعداد چك باكس ها و در نتيجه متني كه جلوي اونا نوشته مي شه مشخص نيست و اضافه كردن بايد در كد انجام بشه نه در طراحي

اين كار براي groupbox امكان داره؟ اگه داره يه نمونه برام بذارين البته اگه براتون زحمتي نيست
 

MnavidM

Active Member
سلام
ممنونم از كمك هاتون

يه سوال در مورد groupbox

طبق گفته شما مي تونم بهش كامپوننت اضافه كنم . يعني مشكل اضافه كردن checkbox رو حل مي كنه

ولي مشكل ديگه اينه كه تعداد چك باكس ها و در نتيجه متني كه جلوي اونا نوشته مي شه مشخص نيست و اضافه كردن بايد در كد انجام بشه نه در طراحي

اين كار براي groupbox امكان داره؟ اگه داره يه نمونه برام بذارين البته اگه براتون زحمتي نيست
در اولین پستم در این تاپیک یک نمونه کد برای این کار گذاشتم.

اون کد می تونه یک checkbox ایجاد کنه.

groupbox هم که گفتم مثل یک subform هست یعنی همون طور که می تونید روی فرم کامپوننت اضافه کنید روی اون هم می تونید.

چرا یک بار خودتون امتحان نمی کنید ؟

--
پ.ن : برای تشکر می تونید از دکمه تشکر در پایین هر پست استفاده کنید.

موفق باشی.
 

sara_she

Member
سلام

يه مشكل پيش اومده، من طبق راهنمايي هاي شما كدي به صورت زير نوشتم :

کد:
Case combobox1.Text of
            'TEXT1':dm1.IBTable6o_group.Value:=1;
            'TEXT2':dm1.IBTable6o_group.Value:=2;
            'TEXT3':dm1.IBTable6o_group.Value:=3;
           end;

ولي خطايي به شكل زير دريافت مي كنم:

[Error] garner.pas(60): E2001 Ordinal type required

[Error] garner.pas(61): E2010 Incompatible types: 'Integer' and 'string'​

به نظر شما مشكل از كجاست؟
 

farhad110

Member
خطايي به شكل زير دريافت مي كنم:

[Error] garner.pas(60): E2001 Ordinal type required

[Error] garner.pas(61): E2010 Incompatible types: 'Integer' and 'string'​

به نظر شما مشكل از كجاست؟

سلام
این خطا یعنی شما میخوای یه عدد صحیح رو به صورت رشته در بانک ذخیره کنی. برای حل شدن باید قبل از اعداد inttostr قرار بدی یا عدد رو داخل '' قرار بدی.
 

MnavidM

Active Member
بله همون طور که فرهاد جان هم گفتند ، شما نیاز به تبدیل عدد به رشته دارید که با دستور inttostr انجام پذیره.

کد:
'TEXT1':dm1.IBTable6o_group.Value:=inttostr(1);
 

sara_she

Member
سلام به دوستان
‏ ‏
من متوجه نشدم چرا بايد عدد رو به صورت رشته در بيارم
در كدي كه من نوشتم:‏

‏[‏LEFT]
کد:
case  combobox.text  of
‏            '‏text1':  dm1.IBTable6o_group.Value:=1‎‏;‏
‏            '‏text2':  dm1.IBTable6o_group.Value:=2‎‏;‏
‏            '‏text3':  dm1.IBTable6o_group.Value:=3‎‏;‏
‏           ‏end;
[/LEFT‏]‏

رشته ها ربطي به اعداد ندارند . در واقع رشته ها (‏text1,text2‎‏,...) با ‏case‏ چك مي شوند كه ‏combobox.textاست ‏

ولي اعداد در فيلد جدول به نام ‏o_groupريخته مي شوند كه از نوع ‏integer‏ است. چيزي كه مهم است ‏متغيرهاي دو طرف =: هستند كه هر دو از نوع ‏integer‏ هستند‏

علاوه بر اين اگر از اين خطا كه نامتناسب بودن ‏stringو ‏integer‏ را نشان مي دهد . خطاي اول در هر ‏صورت باقيست كه مي گويد نوع ‏caseنوشته شده ‏ordinalنيست و اين خطا از خط اول نوشتن ‏caseاست
 

farhad110

Member
سلام
[Error] garner.pas(61): E2010 Incompatible types: 'Integer' and 'string'
این یعنی انتساب مقدار "رشته ای" به "صحیح" امکان پذیر نیست. به این توجه نکرده بودم و حالت عکس رو در نظر گرفته بودم. sara_she عزیز با توجه به error بالا فیلد شما integer هست (اول integer اومده بعد string).
این خطا واقعا عجیبه ولی مطلبی که وجود داره اینه که کامپایلر دلفی بیخودی پیغام نمیده.
خطایی که در برنامه شما بوجود اومده مربوط به خط 60 و 61 از فایل garner.pas هست، شما دقیقا این دو خط رو اینجا بذار. البته من با بانک IB کار نکردم و نمیدونم نحوه مقدار دهی شما چقدر درسته، اما بذار تا شاید دوستان کمک کنند.
پیروز باشید
 
آخرین ویرایش:

sara_she

Member
سلام
من دقيقا همون دو خطي رو كه خطا مي گرفت گذاشتم با اين تفاوت كه رشته ها به جاي text1و text2‌و ... فارسي هستند

نمي دونم مشكل از كجاست اگه از errorدوم بگذريم . بازم نمي دونم چرا از خود case ايراد مي گيره.
 

farhad110

Member
سلام
باز هم مثل اینکه حق باشماست! من با combobox تست کردم (بدون جدول) و با همین خطا روبرو میشم.
کد:
case ComboBox1.Text of
  'text1':edit1.Text:='1';
  'text2':edit1.Text:='2';
  'text3':edit1.Text:='3';
end;
جالبه چون قبلا به همچین چیزی هم نیاز پیدا نکرده بودم، اما وقتی از combobox.itemindex استفاده میکنم مشکلی پیش نمیاد:
کد:
case ComboBox1.ItemIndex of
  0:edit1.Text:='1';
  1:edit1.Text:='2';
  2:edit1.Text:='3';
end;
پس شما هم از itemindex استفاده کن (مقدار دهی itemindex از 0 شروع میشه، یعنی اگر اولین مورد انتخاب شه، عدد 0 رو برمیگردونه)
موفق باشی
 

sara_she

Member
تست كردم. با روش پيشنهادي شما درست جواب مي ده

حالا يه سوال در مورد combobox

وقتي كه برنامه اجرا مي شه قسمت combobox ،text رو خالي نشون مي ده يعني اولين گزينه اونو از index شماره 1 در نظر مي گيره

بايد چه كاري انجام بديم كه با اجراي برنامه اولين گزينه combobox به صورت پيش فرض در حالت انتخاب باشه؟
 

farhad110

Member
تست كردم. با روش پيشنهادي شما درست جواب مي ده

حالا يه سوال در مورد combobox

وقتي كه برنامه اجرا مي شه قسمت combobox ،text رو خالي نشون مي ده يعني اولين گزينه اونو از index شماره 1 در نظر مي گيره

بايد چه كاري انجام بديم كه با اجراي برنامه اولين گزينه combobox به صورت پيش فرض در حالت انتخاب باشه؟

کد زیر رو در رویداد OnShow فرم قرار بده:
کد:
Combobox1.itemindex:=0;
 

جدیدترین ارسال ها

بالا