الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤالين أرجو الإجابة عنهما لو تكرمتم ==========>>>

مغلق
بدأه رمضان في 14 فبراير 2001 · 9 رد · 1,030 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدى سؤالين أرجو أن أجد الاجابة عليهما

السؤال الاول

[C] فى فيجول بيسك يمكن عمل مصفوفة من الادوات يتم التعامل معها من خلال Index فكيف يمكن عمل ذلك من خلال دلفى ?

وذلك أثناء التصميم وأثناء التشغيل إن أمكن :o [/C]

السؤال الثانى

كيفية إنشاء قواعد البيانات أثناء التشغيل :o

بمعنى أنه لدى برنامج يطلب من المستخدم عدد الحقول فى الجدول

ثم بعد ذلك يدخل فى حلقة تكرارية طولها العدد الذى أدخلة

المستخدم فى الخطوة السابق ليطلب نوع الحقل وإسمة وبقية البيانات

ثم يقوم البرنامج بإنشاء قاعدة البيانات بالمواصفات السابقة :)

[note]أرجو سرعة الإجابة ومن لا يعرف يضيف إسمة إلى الموضوع

حتى نعرف عدد الجهله أمثالى:o:o:o[/note]

#2

اخي رمضان بالنسبة للسوال الاول انا ما اعرفه، اضفني لقائمتك

اما الثاني هل تريد البرنامج بالفيجول بيسك ام بالدلفي

ادا كان بالفيجول فابعدني من القائمة اما ادا كان بالدلفي فلا تظفني للقائمة انا لا اريد ان اعرفه :)

لا يتعلم العلم كل مستحي او مستكبر

#3

رغم أنه هناك سبعة أشخاص قرأوا هذا الموضوع إلا أنه لم يوجد من لديه

الشجاعة الكافية للإعتراف بعدم المعرفة سوى الاخ طارق

على العموم سامحهم الله فمن قال لا أعلم فقد أفتى

أخ طارق السؤال الاول والثانى من خلال دلفى ولذلك وضعتهم فى هذا القسم

أما من خلال فيجول بيسك فأنا أعرف الإجابة

ياإخوانى عدم المعرفة ليس جريمة وأول خطوات المعرفة أن نعترف

أننا لا نعرف

#4

السلام

ftp://ftp.cdrom.com/.1/delphi/ftp/docs/ldelphi.zip

جرب الملف هذه يمكن تلقاه

http://www.inner-smile.com/delphit.htm

وانا متاكد اني لقيت مثال فى الموقع اعلاه من زمان

مثال عن مصفوفة ادوات

والكود التالي حاولت فيها بس ما جربتها لاني بقيت بدون جهاز هذه الايام :

type myc_arry = array[0..10] of tcontrol

var myar : myc_arry

--------------------------------

myar[0]:=tcontro.create;

myrc[0].onclick:=myonlcikcproc;

----------------------------

procedure myonclicproc(sender : tobject)

begin

(sender as tcontrol).caption:='some thing';

end;

معذرة اذا كان الكود لا يعمل كما قلت انا الحين بدون جهاز حاسوب

اتمني من الاخ السائل ان يجرب :)

وبالنسبة للسؤال الثاني فلاادري ( اكره قواعد البيانات :) )

والله اعلي واعلم

#5

لأفترض أنك تريد عشرة أزرار (مثل أزرار الأرقام في الآلة الحاسبة)، وتريد ربط الأزرار العشرة بإجراء واحد دون برمجة العشرة كلها، فقم بما يلي:

ضع عشرة أزرار على النموذج ثم غير خاصية Caption العائدة لها بالترتيب : من 0 حتى 9

انقر نقراً مزدوجاً على الزر الأول وليكن اسمه Button1 وضمن إجراء الحدث Click اكتب كما يلي:

procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := (Sender AS TButton).Caption
end;

بعد ذلك علّم الأزرار التسعة الباقية مع بعضها البعض ومن ثم انتقل لمفتش الأغراض وانتقل للحدث OnClick وبدلاً من إنشاء إجراء حدث فارغ قم بفتح اللائحة المنسدلة واختيار الإجراء الذي كتبته سابقاً وعندها ستربط الأزرار جميعاً بإجراء واحد ويتم تمييز مستدعي الإجراء عن طريق الكائن Sender

أرجو أن أكون قد أجبتك

#6

إخوانى الكرام الذين أعترفوا بجهلهم مثلى وطارق

أو الذين خافوا من الإعتراف طرحت هذا السؤال فى منتدى ملتقى

المبرمجين العرب وهذا ماحصلت عليه

[box-l]لدى سؤالين أرجو أن أجد الاجابة عليهما

السؤال الاول

فى فيجول بيسك يمكن عمل مصفوفة من الادوات يتم التعامل معها من خلال Index فكيف يمكن عمل ذلك من خلال دلفى ?

وذلك أثناء التصميم وأثناء التشغيل إن أمكن

السؤال الثانى

كيفية إنشاء قواعد البيانات أثناء التشغيل

بمعنى أنه لدى برنامج يطلب من المستخدم عدد الحقول فى الجدول

ثم بعد ذلك يدخل فى حلقة تكرارية طولها العدد الذى أدخلة

المستخدم فى الخطوة السابق ليطلب نوع الحقل وإسمة وبقية البيانات

ثم يقوم البرنامج بإنشاء قاعدة البيانات بالمواصفات السابقة

أرجو سرعة الإجابة ومن لا يعرف يضيف إسمة إلى الموضوع

حتى نعرف عدد الجهله أمثالى

__________________

من يملك العملة يملك الوجهين

والفقير بين بين ( صلاح عبد الصبور )

=================

الراجى عفو الرحمن

أبوعمر

معتز

عضو كتبت في 17 February 2001 02:32 PM

--------------------------------------------------------------------------------

بالنسبة لمصفوفة الأدوات، فهي تختلف فكرتها قليلاً في الدلفي، حيث يمكنك إستخدام الـ Tag

مثلاً يمكنك إنزال خمس أزرار ووضع أرقام تسلسلية في هذه الخاصية (Tag) لكل زر

لإجراء أي عملية على هذه الأزرار يمكنك إستخدام مثل هذا المثال:

--------------------------------------------------------------------------------

for i:= 0 to Form1.ControlsCount - 1 do if Form1.Controls is TButton then ShowMessage((Form1.Controls as TButton).Caption + ' Tag = ' + IntToStr((Form1.Controls as TButton).Tag));

--------------------------------------------------------------------------------

بالنسبة لسؤالك الثاني، هذا مثال لإنشاء جدول برادوكس أثناء التشغيل:

--------------------------------------------------------------------------------

procedure CreatePhoneTable;var NewTable: TTable;begin NewTable := TTable.Create(nil); // Create table object with NewTable do begin TableName := 'C:DataPhone.db'; TableType := ttDefault; // Paradox FieldDefs.Clear; (*** Create fields ***) FieldDefs.Add('ID', ftAutoInc, 0, False); FieldDefs.Add('Name', ftString, 30, True); FieldDefs.Add('Number', ftString, 15, True); FieldDefs.Add('Address', ftString, 40, False); FieldDefs.Add('Notes', ftMemo, 200, False); (*** Create primary key ***) IndexDefs.Clear; IndexDefs.Add('', 'ID', [ixPrimary, ixUnique]); (*** Create Secondary index ***) IndexDefs.Add('NameIndex', 'Name', [ixCaseInsensitive]); (*** Create physical table ***) CreateTable; (*** Free NewTable object ***) Free; end ; // With NewTableend ;

--------------------------------------------------------------------------------

معتز عبدالعظيم

رمضان

عضو جديد كتبت في 17 February 2001 03:25 PM

--------------------------------------------------------------------------------

أخى معتز سلام الله عيكم ورحمة الله وبركاته

أشكرك من أعماقى على سرعة ردك وأدعو الله أن يزيدك من علمه وينفعنا بك وبعلمك اللهم آمين

بالنسبة لإجابة السؤال الاول

فأنت تعلم أنه من خلال فيجول بيسك يمكن وضع مثلا Label وليكن إسمة Label1 وتغيير الخاصية Index إلى صفر

هذا أثناء التصميم وأثناء التشغيل يتم تحميل أى عدد من أدوات العناوين كالاتى

--------------------------------------------------------------------------------

Dim IFor I=1 to 10 'or any numberLoad Label1(I)Next I

--------------------------------------------------------------------------------

وعند الرغبة فى إزالة هذه الادوات نكتب الكود الاتى

--------------------------------------------------------------------------------

Dim IFor I=1 to 10 'or any numberUnLoad Label1(I)Next I

--------------------------------------------------------------------------------

ولاشك هذه الطريقة تزيد من سرعة البرنامج كثيرا

فكيف يمكن عمل مثل هذه الطريقة فى دلفى

أى عمل مصفوفة الادوات أثناء التشغييييييييل

السؤال الثانى أرجو طريق إضافة البيانات إلى الجدول السابق بالكود أى أن المستخدم لايتحكم فى إضافة البيانات أعلم إنى طماع ولكنى أعلم أنك

وكل الاعضاء فى منتهى الكرم

============================

الراجى عفو الرحمن

أبوعمر

أبو يوسف

عضو كتبت في 18 February 2001 11:36 AM

--------------------------------------------------------------------------------

أخي الكريم أبو عمر

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

كيفية عمل مصفوفة من الأدوات أثناء التنفيذ :

أولا قم بتعريف متغير عام من نوع TList وذلك لحفظ الأدوات فيه :

MyList:=TList.Create

ثم بعد ذلك أضف ما تشاء من الأدوات فيه

For i:= 0 to 2 do

MyList.Add(TLabel.Create(nil));

وإذا أردت الوصول إليها:

For i:= 0 To 2 DO

Begin

TLabel(MyList.Items).Left:=10+i;

TLabel(MyList.Items).Top:=10+i;

TLabel(MyList.Items).Caption:='Your Caption';

TLabel(MyList.Items).parent:=Form1;

TLabel(MyList.Items).visible:=True;

End;

وفي النهاية لإزالتها :

For i:= 0 to MyList.Count -1 do

TLabel(MYList.Items).Free;

MyList.Clear;

MyList.Free;

أخوك

أبو يوسف

معتز

عضو كتبت في 19 February 2001 09:32 AM

--------------------------------------------------------------------------------

السلام عليكم الأخ رمضان

بالنسبة لإضافة البيانات أثناء التنفيذ فهذه بسيطة، عند إضافة أي سجل اتبع هذه الخطوات:

--------------------------------------------------------------------------------

Table1.Append; Table1.FieldByName('Name').AsString:= 'Ramadan'; Table1.FieldByName('Address').AsString:= 'Arabic country'; Table1.FieldByName('Age').AsInteger:= 25; Table1.Post;

--------------------------------------------------------------------------------

معتز

؟؟

عضو جديد كتبت في 19 February 2001 10:42 AM

--------------------------------------------------------------------------------

بسم الله الرحمن الرحيم

الأخ الكريم /رمضان

بالنسبة لسؤالك الأول فإني أحيلك إلى هذا الموضوع، وأضيف هنا مثالاً آخر يقابل المثال الذي كتبته بلغة Visual Basic ويقوم بإنشاء مصفوفة أدوات أثناء التشغيل:

--------------------------------------------------------------------------------

Var Labels : Array [1..10] Of TLabel; : For i := 1 To 10 Do Begin Labels := TLabel.Create(Form1); Form1.InsertControl(Labels); End; :

--------------------------------------------------------------------------------

أما إنشاء مصفوفة أدوات أثناء التصميم فلا توجد طريقة على حد علمي إلا أن تقوم بتعريف مكون جديد يحتوي مصفوفة أدوات على غرار TToolBar، وراجع جوابي للأخ معتز فيما يلي للضرورة.

بالنسبة للسؤال الثاني فالمطلوب ممكن باستخدام SQL حيث توفر هذه اللغة تعليمات إنشاء جداول حسب الطلب وفي ظني أن هذا خير من استخدامك لمكتبات نظام قاعدة البيانات الذي تستخدمه واستدعائها من داخل برنامجك.

الأخ الفاضل / معتز

استخدام الخاصية Tag مفيد في اتجاه واحد، بمعنى أنه يمكنك من التعرف على الأداة وتمييزها عن طريق هذه الخاصية، لكنك لن تستطيع استدعاء الأداة وتطبيق شيء من التعليمات عليها باستخدام Tag.

لكن مكتبة VCL تقدم لنا بديلاً قوياً يمكننا من التعامل مع جميع الأدوات الموجودة في container معين ويتمثل في الخاصيتين:

Components

ComponentCount

فالخاصية الأول عبارة عن مصفوفة تضم جميع الأدوات الأبناء له، أما الثانية فتعكس لنا القيمة المعبرة عن عدد هذه الأدوات.

والله أعلم

؟؟

عضو جديد كتبت في 19 February 2001 10:44 AM

--------------------------------------------------------------------------------

بسم الله الرحمن الرحيم

الأخ الكريم /رمضان

بالنسبة لسؤالك الأول فإني أحيلك إلى هذا الموضوعكيف نتعامل مع بعض المسائل البرمجية ؟؟، وأضيف هنا مثالاً آخر يقابل المثال الذي كتبته بلغة Visual Basic ويقوم بإنشاء مصفوفة أدوات أثناء التشغيل:

--------------------------------------------------------------------------------

Var Labels : Array [1..10] Of TLabel; : For i := 1 To 10 Do Begin Labels := TLabel.Create(Form1); Form1.InsertControl(Labels); End; :

--------------------------------------------------------------------------------

أما إنشاء مصفوفة أدوات أثناء التصميم فلا توجد طريقة على حد علمي إلا أن تقوم بتعريف مكون جديد يحتوي مصفوفة أدوات على غرار TToolBar، وراجع جوابي للأخ معتز فيما يلي للضرورة.

بالنسبة للسؤال الثاني فالمطلوب ممكن باستخدام SQL حيث توفر هذه اللغة تعليمات إنشاء جداول حسب الطلب وفي ظني أن هذا خير من استخدامك لمكتبات نظام قاعدة البيانات الذي تستخدمه واستدعائها من داخل برنامجك.

الأخ الفاضل / معتز

استخدام الخاصية Tag مفيد في اتجاه واحد، بمعنى أنه يمكنك من التعرف على الأداة وتمييزها عن طريق هذه الخاصية، لكنك لن تستطيع استدعاء الأداة وتطبيق شيء من التعليمات عليها باستخدام Tag.

لكن مكتبة VCL تقدم لنا بديلاً قوياً يمكننا من التعامل مع جميع الأدوات الموجودة في container معين ويتمثل في الخاصيتين:

Components

ComponentCount

فالخاصية الأول عبارة عن مصفوفة تضم جميع الأدوات الأبناء له، أما الثانية فتعكس لنا القيمة المعبرة عن عدد هذه الأدوات.

والله أعلم

[/box-l]

#7
unit ulabels;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    labels:array[1..10] of TLabel;{ Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
var
 index:1..10;
begin
  for index:=1 to 10 do
   begin
    labels[index]:=Tlabel.create(form1);
    labels[index].parent:=form1;
    labels[index].width:=30;
    labels[index].Height:=30;
    labels[index].top:=30*index;
    labels[index].left:=10;
    labels[index].caption:='label '+IntTostr(index);
    labels[index].visible:=false;
   end;


end;

procedure TForm1.Button1Click(Sender: TObject);
var
 index:1..10;
begin
//   paintbox1.Canvas.pie(10,10,100,100,120,140,15,352);
  for index:=1 to 10 do   labels[index].show;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
 index:1..10;
begin
  for index:=1 to 10 do   labels[index].destroy;

end;

end.

[عدلت بواسطة محمد عبد الودود مرعشي ت:01-03-2001 س: 10:55 PM]

#8

ضمني إلى قائمتك

:):):)

#9

Table Creation Example

The following example shows how to create a table.

{ Don't overwrite an existing table }

if not Table1.Exists then begin

with Table1 do begin

{ The Table component must not be active }

Active := False;

{ First, describe the type of table and give }

{ it a name }

DatabaseName := 'DBDEMOS';

TableType := ttParadox;

TableName := 'CustInfo';

{ Next, describe the fields in the table }

with FieldDefs do begin

Clear;

with AddFieldDef do begin

Name := 'Field1';

DataType := ftInteger;

Required := True;

end ;

with AddFieldDef do begin

Name := 'Field2';

DataType := ftString;

Size := 30;

end ;

end ;

{ Next, describe any indexes }

with IndexDefs do begin

Clear;

{ The 1st index has no name because it is

{ a Paradox primary key }

with AddIndexDef do begin

Name := '';

Fields := 'Field1';

Options := [ixPrimary];

end ;

with AddIndexDef do begin

Name := 'Fld2Indx';

Fields := 'Field2';

Options := [ixCaseInsensitive];

end ;

end ;

{ Call the CreateTable method to create the table }

CreateTable;

end ;

end ;

#10

ممتاز ياشباب ...اقدر لكم جهودكم .....(f)

كنت من اصحاب القائمة السوداء :D:D..ولكن ..تنورت بعلمكم الذي

أنورته ...في المنتدى .........مشكورين;)

أخــــــــــوكم....:cool:

هذا الموضوع مغلق.

مواضيع مشابهة