-
برنامه هاي چند فرمي
من داده اي را در فرم يك و دو تعريف كردم.اين داده در رويداد Onclickچند دكمه در فرم2 مقدارهاي متفاوت مي گيرد.و در فرم 1 در عبارت Case Of اين داده مورد بررسي قرار دادم.اما در اجرا هر كدام از رويدادهايي كه در فرم 2 هم كه اتفاق بيافتد فقط مقدار رويداد اول به آن داده داده مي شود.
چه كار كنم كه بر حسب رويدادي كه اتفاق مي افتد به آن داده مقدار داده شود؟
-
به انجمن ما خوش اومدی
روند کاریتو توضیح میدی ؟
یعنی میگی این Case Of رو برای چی نوشتی تا شاید بتونم کمکی کنم؟
-
procedure TForm6.Label2Click(Sender: TObject);
begin
case form11.newgame of
nomaze: form12.Show;
box: form13.show;
tunnel: form14.show;
spiral: form15.show;
blockade: form16.show;
twisted: form17.show
اين كد رو در برچسب2 فرم 6 نوشتم.
-
برنامه چند فرمي
.procedure TForm11.Label2Click(Sender: TObject);
begin
form11.Hide;
form18.show;
newgame:=nomaze;
end;
procedure TForm11.Label3Click(Sender: TObject);
begin
form11.Hide;
form19.show;
newgame:=box;
end;
procedure TForm11.Label4Click(Sender: TObject);
begin
form11.hide;
form21.show;
newgame:=tunnel;
end;
اين كد هم در فرم11 برنامه ام نوشتم.
-
public
newgame:(nomaze,box,tunnel,spiral,blockade,twistwd );
اين هم در بخش عمومي
حالا هر وقت روي هر كدام از برچسب هاي فرم11 كه كليك كنم و بعد بر روي برچسب2 فروم 6 كليك كنم فقط دستور مربوط به مقدار اولين رويداد فرم 11 اجرا مي شود
در صورتي كه من مي خوام روي هر رويدادي كه كليك مي كنم دستور مربوط به همان مقار رويداد اجرا شود
من بايد چطور اين كد رو تغيير بدم تا درست اجرا شه؟
-
اینجوری همه چیز به نظرم خوب میاد.
اگه میتونی Source برنامت رو لینک بده تا دانلود کنم و اصلاحات رو روش انجام بدم و بعدش بگم مشکلت کجا بوده.
خوبه ؟
-
Form6
کد:
unit Unit6;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm6 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Label1Click(Sender: TObject);
procedure Label3Click(Sender: TObject);
procedure Label2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
public
newgame:(nomaze,box,tunnel,spiral,blockade,twisted);
end;
var
Form6: TForm6;
implementation
uses Unit7, Unit10, Unit13, Unit14, Unit15, Unit16, Unit17, Unit11, Unit12,
Unit18;
{$R *.dfm}
procedure TForm6.FormCreate(Sender: TObject);
begin
end;
procedure TForm6.Label1Click(Sender: TObject);
begin
form6.hide;
form7.show;
end;
procedure TForm6.Label2Click(Sender: TObject);
begin
case newgame of
nomaze: form12.Show;
box: form13.show;
tunnel: form14.show;
spiral: form15.show;
blockade: form16.show;
twisted: form17.show;
else
showmessage('select mazes');
end;
end;
procedure TForm6.Label3Click(Sender: TObject);
begin
form6.Hide;
form10.show;
end;
end.
-
Form11
کد:
کد:
unit Unit11;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm11 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
procedure Label1Click(Sender: TObject);
procedure Label2Click(Sender: TObject);
procedure Label3Click(Sender: TObject);
procedure Label4Click(Sender: TObject);
procedure Label5Click(Sender: TObject);
procedure Label6Click(Sender: TObject);
procedure Label7Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
public
newgame:(nomaze,box,tunnel,spiral,blockade,twisted);
end;
var
Form11: TForm11;
implementation
uses Unit7, Unit12, Unit19, Unit13, Unit18, Unit21, Unit20, Unit22, Unit23;
{$R *.dfm}
procedure TForm11.FormCreate(Sender: TObject);
begin
end;
procedure TForm11.Label1Click(Sender: TObject);
begin
form11.Hide;
form7.show;
end;
procedure TForm11.Label2Click(Sender: TObject);
begin
form11.Hide;
form18.show;
newgame:=nomaze;
end;
procedure TForm11.Label3Click(Sender: TObject);
begin
form11.Hide;
form19.show;
newgame:=box;
end;
procedure TForm11.Label4Click(Sender: TObject);
begin
form11.hide;
form20.show;
newgame:=tunnel;
end;
procedure TForm11.Label5Click(Sender: TObject);
begin
form11.hide;
form21.show;
newgame:=spiral;
end;
procedure TForm11.Label6Click(Sender: TObject);
begin
form11.Hide;
form22.show;
newgame:=blockade;
end;
procedure TForm11.Label7Click(Sender: TObject);
begin
form11.Hide;
form23.show;
newgame:=twisted;
end;
end.
-
Form7
کد:
unit Unit7;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm7 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Label3Click(Sender: TObject);
procedure Label1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form7: TForm7;
implementation
uses unit6, Unit11;
{$R *.dfm}
procedure TForm7.FormCreate(Sender: TObject);
begin
end;
procedure TForm7.Label1Click(Sender: TObject);
begin
form7.Hide;
form11.Show;
end;
procedure TForm7.Label3Click(Sender: TObject);
begin
form7.Hide;
form6.show;
end;
end.
-
Form10
کد:
unit Unit10;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm10 = class(TForm)
Label1: TLabel;
procedure Label1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form10: TForm10;
implementation
uses Unit6;
{$R *.dfm}
procedure TForm10.FormCreate(Sender: TObject);
begin
end;
procedure TForm10.Label1Click(Sender: TObject);
begin
form10.Hide;
form6.show;
end;
end.
-
Form18
کد:
unit Unit18;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm18 = class(TForm)
Label1: TLabel;
procedure Label1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form18: TForm18;
implementation
uses Unit11;
{$R *.dfm}
procedure TForm18.FormCreate(Sender: TObject);
begin
end;
procedure TForm18.Label1Click(Sender: TObject);
begin
form18.Hide;
form11.show;
end;
end.
-
Form19
کد:
unit Unit19;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm19 = class(TForm)
Label1: TLabel;
procedure Label1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form19: TForm19;
implementation
uses Unit11;
{$R *.dfm}
procedure TForm19.FormCreate(Sender: TObject);
begin
end;
procedure TForm19.Label1Click(Sender: TObject);
begin
form19.Hide;
form11.show;
end;
end.
-
Form20
کد:
unit Unit20;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm20 = class(TForm)
Label1: TLabel;
procedure Label1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form20: TForm20;
implementation
uses Unit11;
{$R *.dfm}
procedure TForm20.FormCreate(Sender: TObject);
begin
end;
procedure TForm20.Label1Click(Sender: TObject);
begin
form20.Hide;
form11.show;
end;
end.
-
Form21
کد:
unit Unit21;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm21 = class(TForm)
Label1: TLabel;
procedure Label1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form21: TForm21;
implementation
uses Unit11;
{$R *.dfm}
procedure TForm21.FormCreate(Sender: TObject);
begin
end;
procedure TForm21.Label1Click(Sender: TObject);
begin
form21.Hide;
form11.show;
end;
end.
-
Form22
کد:
unit Unit22;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm22 = class(TForm)
Label1: TLabel;
procedure Label1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form22: TForm22;
implementation
uses Unit11;
{$R *.dfm}
procedure TForm22.FormCreate(Sender: TObject);
begin
end;
procedure TForm22.Label1Click(Sender: TObject);
begin
form22.Hide;
form11.show;
end;
enD.
-
Form23
کد:
unit Unit23;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm23 = class(TForm)
Label1: TLabel;
procedure Label1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form23: TForm23;
implementation
uses Unit11;
{$R *.dfm}
procedure TForm23.FormCreate(Sender: TObject);
begin
end;
procedure TForm23.Label1Click(Sender: TObject);
begin
form23.Hide;
form11.show;
end;
end.
-
بقيه فرمها
فرمهاي 12 13 14 15 16 17 هم ايجاد كردم.
-
سلام
siminsob عزیز جای شکرش باقیه که فرمهای 12 13 14 15 16 17 رو بی خیال شدی، اگر برنامه رو up میکردی راحت تر میشد کمک کرد.
چون همونطور که مرد مباح گفتن در ظاهر همه چیز خوب به نظر میاد.
-
بابا چه خبره...
خوب مشکل رو بگو... وقت نمیشه که بشینیم کل فرم ها رو ....
اما باید بگم هنوز پست هات رو نخوندم!
-
خوب دوست عزیز.
مشکل پیدا شد.
مشکل شما اینه که هر متغیر رو در سطح یک یونیت معرفی کردی و به صورت کامل و در سطح پروژه از اون استفاده نمیکنی.
برای مثال شما در Form11 در بخش Public دوباره خط newgame:(nomaze,box,tunnel,spiral,blockade,twisted ) را نوشتید که به همین دلیل جواب نمیگیرید.
این خط رو پاک کنید و در بخشهایی که برای مثال نوشتی newgame=box کد رو به صورت زیر تغییر بده و این تغییر رو در تمامی تونیتهایی که این کارو کردی منتقل کن :
اینجوری یونیت شما در سطح کل پروژه تغییر میکنه و برنامه درست میشه.
ضمنا لطف کنید در صورتی که حجم کدها بالا هست دیگه این کار رو نکنین که توی اینجا همشو پست بدین
این هم سه دلیل داره :
1. حجم زیادس کد میزارین که خیلیا حتی خود من حاضر به خوندن همه اونا نیستند. چون خیلیاش به درد نمیخوره
2. تاپیک رو خیلی شلوغ میکنه
3. ممکن هست که در جایی نیاز به تغییراتی بر روی فرم هم باشد که اون اطلاعات در برنامه به این صورت نیامده.
بنابراین حتما دفعه بعدی لینک برنامه خودتون رو UpLoad کنید.
-
-
الان که جوابتون رو گرفتین ، لازم نیست دیگه آپ کنید.
ولی برای UpLoad از سایتهای دیگه استفاده کنید.
چند نمونه رو براتون در زیر مینویسم.
کد:
www.4share.com
www.persiangig.com
www.rapidshare.com
-
من چيزي كه گفتيد رو امتحان كردم
; اما از box اشكال مي گيره
-
به نظر من به جای اینکه از مقادیر پارامتری استفاده کنید ، بهتره یا از مقادیر کاراکتری و یا عددی استفاده کنید که اینجوری نشه.
یعنی اگه جنس NewGame رو از جنس Integer قرار بدی ، دیگه این مشکل پیش نمیاد.
اگه میخوای پارامتری کار کنی باید توید بخش Type اونارو معرفی کنی.
موفق باشی.
-
برنامه هاي چند فرمي
ميشه از نوع string معرفي كنم اخه ميخوام بايد متغير به انها نسبت بدم؟
-
سوال
همه ي متغييرها رو در بخش public از نوعstringمعرفي كردم.حالا از case newgame of اشكال مي گيره.
-
سوال
برنامه و موضوعشو توضيح بدم يا نه متوجه شديد؟
-
من دارم بازيsnake مي نويسم.
فرم6 سه تا كليد داره كه اولي وارد بازي مي شه دومي تنظيمات بازي هستش وسومي دسترالعمل بازيه.
وقتي رو كليد اول مي زني بر حسب مقداري كهnewgameتو فرم11 گرفته يكي از زمينه هاي بازي باز مي شه يعني فرم 12 يا13 يا14 15يا 16 يا 17.
وقتي كليد دوم رو مي زنيم فرم7 باز مي شه كه دو تا كليد داره اولي زمينه ي بازي و دوي سرعت بازي.
يه كليذ برگشت به فرم قبل هم داره
وقته كليذزمينه ي بازي رو مي زني فرم11 باز مي شه كه 6ت كليد داره ويه كليد برگشت به فرم قبل.روي هر كدوم از كليدها كه بزني يه فرم باز مي شه كه نشان بده اين زمينه انتخاب شد.يعني فرم 18 19 20 21 22 23
كليد سرعت هنوز فرم بعدي نداره
-
با سلام
دوست عزیز برو سایت همون صفحه اول درون باکس حالت زیپ شده برنامه ات رو بذار و upload کن تا راحت جوابتو بگیری.
-
برنامه Snake
وقتي رفتم به اون ادرسها برنامه ام رو Brows كردم بعدش چكار كنم؟
-
برنامه چند فرمي
مرد مباح مشكلم تا حدودي رفع شد از شما و بقيه دوستان بينهايت سپاسگزارم.
فقط يه مشكله كوچيك هست كه حتي وقتي كه من نميرم زمينه ي بازي رو انتخاب كنم و وارد بازي مي شم خودش اولين زمين بازي رو انتخاب مي كنه
چرا اينطوري مي شه ؟
در حقيقت خودم مي خواستم اينطوري بشه اما اين خودش شده .
مي خوام دليلشو بدونم تا ياد بگيرم.
-
سلام
در متغیرهای پارامتری در صورتی که متغیر رو مقدار دهی نکنی، به طور پیش فرض اولین مقدار به اون نسبت داده میشه.
-