delphi4arab منتديات دلفي للعرب

نسخة كاملة : انشآء Forms عند الضغط على زرButton ؟
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله

اخوآني الكرام, اعمل على تجربة لإنشآء فورمات(عدة فورمات) لكن لم افلح,
اليونيت 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

بارك الله لكم
السلام عليكم

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

مجرد رأي .... بالتوفيق أخي AL-MOB4RM3G .
هنا الخلل
كود :
frm[i] :=[color=Red] T[/color]Form2.Create(application
);
الأخ TF6M اظن فهمت سؤآلي خطأ والله اعلم,
اقصد عندي نموزج من فروم, وعند الضغط على بوتون, يتم انشآء فورم 1, وعند الضغط مرة اخرى يتم انشآؤ فورم 2,, وهكذا, يعني فورم 1 و 2 لهم نفس المكونات و الى آخره,

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

بارك الله لكم,
هنا الخلل الأخر
كود :
SetLength(frm, i[color=Red]+1[/color]);
جميل اخي o15s19, بارك الله لك,
اشكرك كثيرا, :bye1:
السلام عليكم ورحمة الله
لم افهم الغرض من تعريف 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. 
إقتباس :لم افهم الغرض من تعريف array ! هل لغرض اعطاء رقم تسلسلي في الكابشن للفرم المنشأة فقط ام هناك سبب آخر ؟
نعم, هذا واحد من الأسباب, :laugh: + حتى اتمكن من الوصول الى الفورم الذي اود الوصول اليه بستخدام رقم الفورم, من ال Application main
وعليكم السلام ورحمة الله
إذا الغرض الاستفادة من رقم تسلسلي للنماذج، يمكن الاستفادة من خدمة MDI
بضبط خاصية FormStyle للنموذج الأول على fsMDIForm وللنموذج الثاني (الابن) على fsMDIChild، بقراءة:
PHP كود :
Application.MainForm.MDIChildCount 
بالتوفيق.
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
ما هو هدف البرنامج ؟