delphi4arab منتديات دلفي للعرب
انشآء Forms عند الضغط على زرButton ؟ - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : انشآء Forms عند الضغط على زرButton ؟ (/showthread.php?tid=1587)



انشآء Forms عند الضغط على زرButton ؟ - AL-MOB4RM3G - 29-01-2010

السلام عليكم ورحمة الله

اخوآني الكرام, اعمل على تجربة لإنشآء فورمات(عدة فورمات) لكن لم افلح,
اليونيت 1 و اليونيت 2 في الأسفل,
PHP كود :
unit Unit1;

interface

uses
  Windows
, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  
Dialogs, StdCtrls, Unit2;

type
  TForm1 
= class(TForm)
    
Button1: TButton;
    
procedure FormCreate(Sender: TObject);
    
procedure Button1Click(Sender: TObject);
  private
    { Private 
declarations }
    
I : integer;
  public
    { Public 
declarations }
  
end;

var
  
Form1: TForm1;
  
Frm: array of TForm2;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
SetLength
(frm, i);
frm[i] := Form2.Create(application);
frm[i].Show;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
i 
:= 0;
end;

end. 
PHP كود :
unit Unit2;

interface

uses
  Windows
, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  
Dialogs, StdCtrls;

type
  TForm2 
= class(TForm)
    
Button1: TButton;
    
Button2: TButton;
    
Edit1: TEdit;
    
ListBox1: TListBox;
    
ListBox2: TListBox;
  private
    { Private 
declarations }
  public
    { Public 
declarations }
    
Form2: TForm2;
  
end;

var
  
Form2: TForm2;

implementation

{$R *.dfm}

end. 

هناك رسآلة خلل,
Access Violation at adress 004AA981 ... Read of Adress 000000000 (شئ من هذا)
هناك شئ ناقص, لكن لم اتمكن من معرفة ماذا, الخلل يحدث عند الضغط على Button1

بارك الله لكم


انشآء Forms عند الضغط على زرButton ؟ - TF6M - 29-01-2010

السلام عليكم

1- ممكن لم أفهم سؤالك بالضبط ؟؟
2- يمكن إقتراح بسيط ؟؟ لما لا تعمل dLL يحتوى على العديد
من الـ Forms لتسهيل الإستدعاء + تنظيم و فعالية أكثر ؟؟ أو ملف Ressource ?? .

مجرد رأي .... بالتوفيق أخي AL-MOB4RM3G .


انشآء Forms عند الضغط على زرButton ؟ - o15s19 - 30-01-2010

هنا الخلل
كود :
frm[i] :=[color=Red] T[/color]Form2.Create(application
);


انشآء Forms عند الضغط على زرButton ؟ - AL-MOB4RM3G - 30-01-2010

الأخ TF6M اظن فهمت سؤآلي خطأ والله اعلم,
اقصد عندي نموزج من فروم, وعند الضغط على بوتون, يتم انشآء فورم 1, وعند الضغط مرة اخرى يتم انشآؤ فورم 2,, وهكذا, يعني فورم 1 و 2 لهم نفس المكونات و الى آخره,

الأخ o15s19 جربت ذلك ولكنني لم افلح,
التجربة في المرفقات,

بارك الله لكم,


انشآء Forms عند الضغط على زرButton ؟ - o15s19 - 30-01-2010

هنا الخلل الأخر
كود :
SetLength(frm, i[color=Red]+1[/color]);



انشآء Forms عند الضغط على زرButton ؟ - AL-MOB4RM3G - 30-01-2010

جميل اخي o15s19, بارك الله لك,
اشكرك كثيرا, :bye1:


انشآء Forms عند الضغط على زرButton ؟ - STRELiTZIA - 30-01-2010

السلام عليكم ورحمة الله
لم افهم الغرض من تعريف array ! هل لغرض اعطاء رقم تسلسلي في الكابشن للفرم المنشأة فقط ام هناك سبب آخر ؟

طريقة اخرى ابسط :
PHP كود :
var
  
Form1: TForm1;
  
i : integer = 0;

implementation
uses Unit2
;

{
$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
  var 
Frm: TForm2;
begin
  i 
:= i + 1;
  
frm := TForm2.Create(Self);
  
frm.Caption := 'Form : ' + IntToStr(i) + ' created';
  
frm.Show;
end;

end. 



انشآء Forms عند الضغط على زرButton ؟ - AL-MOB4RM3G - 30-01-2010

إقتباس :لم افهم الغرض من تعريف array ! هل لغرض اعطاء رقم تسلسلي في الكابشن للفرم المنشأة فقط ام هناك سبب آخر ؟
نعم, هذا واحد من الأسباب, :laugh: + حتى اتمكن من الوصول الى الفورم الذي اود الوصول اليه بستخدام رقم الفورم, من ال Application main


انشآء Forms عند الضغط على زرButton ؟ - kachwahed - 30-01-2010

وعليكم السلام ورحمة الله
إذا الغرض الاستفادة من رقم تسلسلي للنماذج، يمكن الاستفادة من خدمة MDI
بضبط خاصية FormStyle للنموذج الأول على fsMDIForm وللنموذج الثاني (الابن) على fsMDIChild، بقراءة:
PHP كود :
Application.MainForm.MDIChildCount 
بالتوفيق.



انشآء Forms عند الضغط على زرButton ؟ - محمد س - 31-01-2010

AL-MOB4RM3G كتب :نعم, هذا واحد من الأسباب, :laugh: + حتى اتمكن من الوصول الى الفورم الذي اود الوصول اليه بستخدام رقم الفورم, من ال Application main

كود :
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Unit2; type TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } I : integer; public { Public declarations } end; var Form1: TForm1; Frm: array of TForm2; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin inc(i); SetLength(frm, i); frm[i] :=T Form2.Create(application); frm[i].Show; caption:='nbr de form crée'+inttostr(i); end; procedure TForm1.FormCreate(Sender: TObject); begin i := 0; end; end.
لكن من الافضل استعمال TList عوض array حتى يمكنك من استعمال أدوات و الدوال(Méthode) لTList إضافة و حذف فورم عند creat و destroy
ما هو هدف البرنامج ؟