المشاركات : 219
المواضيع 24
:
: 16
الإنتساب : May 2009
السلام عليكم
@محمد نسمان
(لكن الميزة الأساسية ( في Parameters) هي السرعة Performace بشكل كبير)
معلومة جديدة بالنسبة لي. بالرغم أنها أساسية. شكرا جزيلا لك.
المشاركات : 2,293
المواضيع 157
:
: 81
الإنتساب : Dec 2008
السلام عليكم
أعتقد بخصوص المكونات الأصلية أن الأمر معها ليس سيء لهذه الدرجة طالما السورس متوفر والتعديل ممكن
مثال بسيط حول أمر مزعج بخصوص النمط TDBEdit عند ربطه مع حقل يحمل عملة نقدية...
باختصار... تداركت الأمر بالتعديل في أصل النمط بشيء مثل:
PHP كود :
TDBEdit = class(DBCtrls.TDBEdit)
private
procedure CMEnter(var Message: TCMEnter); message CM_ENTER;
end;
...
procedure TDBEdit.CMEnter(var Message: TCMEnter);
begin
inherited;
if (Trim(Self.Text) <> '') and (not Self.ReadOnly) then
Self.Text := FormatFloat('#.##', StrToCurrency(Self.Text));
Self.SelectAll;
end;
وقس على ذلك بقية المكونات
...
المشاركات : 28
المواضيع 7
:
: 0
الإنتساب : Nov 2008
السلام عليكم ورحمةالله وبركاته
اتمنى ان لايكون النقاش قد انتهى , لان الموضوع مهم لمن يريد ان يقدم برنامجا قويا ومتماسكا .
كما قال الاخ خالد الشقروني عندما يكون البرنامج بسيط يمكن استخدام مكونات الربط . اما اذا كان المشروع ضخم هل يحبذ استخدام هذه المكونات DBEDIT,وغيرها
في هذه الصورة هل استخدام مكونات الربط محبذ . لااعتقد .لان المشاكل ستظهر بالجملة والبطء في البرنامج. فقررت استخدام EDIT ,COMBOBOX,وSTORED PROCEDURES, كي تحل المشاكل
وكي يكون البرنامج معتمد على SQL
PHP كود :
procedure TForm3.btn11Click(Sender: TObject);
var
proctrans:TADOStoredProc;
d2:TDate;
begin
Form3.ColumnGrid1.FocusCell(1,1) ;
img6.Visible:=false;
img2.Visible:=false;
image2.Visible:=false;
d2:= EncodeDate(YearOf(DateTimePicker1.date),MonthOf(DateTimePicker1.date),DayOf(DateTimePicker1.date));
if edt1.Text ='' then
begin
IF Trim(edt2.Text) ='' THEN BEGIN img6.Visible:=true;EXIT; END;
IF Trim(edt3.Text) ='' THEN BEGIN img2.Visible:=true;EXIT; END;
IF Trim(edt5.Text) ='' THEN BEGIN image2.Visible:=true;EXIT; END;
//IF Trim(edt28.Text) ='' THEN BEGIN img3.Visible:=true;EXIT; END;
try
DM.ADOConnection1.BeginTrans;
proctrans :=TADOStoredProc.Create(nil);
proctrans.Connection:=DM.ADOConnection1 ;
proctrans.ProcedureName :='addfact';
proctrans.Parameters.Refresh;
proctrans.Parameters.ParamByName('@id_artical').Value := edt22.text;
proctrans.Parameters.ParamByName('@artical').Value := edt2.text;
proctrans.Parameters.ParamByName('@id_mos').Value := edt26.text;
proctrans.Parameters.ParamByName('@id_dealer').Value := edt23.text;
proctrans.Parameters.ParamByName('@dealer').Value := edt3.text;
proctrans.Parameters.ParamByName('@id_c_t').Value := edt24.text;
proctrans.Parameters.ParamByName('@com_tra').Value := edt4.text;
proctrans.Parameters.ParamByName('@date_it').Value := d2;
proctrans.Parameters.ParamByName('@set_hold').Value := edt16.Text;
proctrans.Parameters.ParamByName('@id_card').Value := ColumnGrid1.Columns[1].Rows[1];
///////////////////////////////////////////////////
if DM.Qryselectkind.Fields.FieldByName('id').Value =1 then
begin
proctrans.Parameters.ParamByName('@quant').Value := ColumnGrid1.Columns[2].Rows[1];
proctrans.Parameters.ParamByName('@quant2').Value := '0';
end;
////////////////////////
if DM.Qryselectkind.Fields.FieldByName('id').Value =2 then
begin
proctrans.Parameters.ParamByName('@quant').Value := '0';
proctrans.Parameters.ParamByName('@quant2').Value := ColumnGrid1.Columns[2].Rows[1];
end;
//////////////////////////
if DM.Qryselectkind.Fields.FieldByName('id').Value =3 then
begin
proctrans.Parameters.ParamByName('@quant').Value := '0';
proctrans.Parameters.ParamByName('@quant2').Value := ColumnGrid1.Columns[2].Rows[1];
end;
/////////////////////////
if DM.Qryselectkind.Fields.FieldByName('id').Value =4 then
begin
proctrans.Parameters.ParamByName('@quant').Value := ColumnGrid1.Columns[2].Rows[1];
proctrans.Parameters.ParamByName('@quant2').Value := '0';
end;
////////////////////////////
if DM.Qryselectkind.Fields.FieldByName('id').Value =5 then
begin
proctrans.Parameters.ParamByName('@quant').Value := ColumnGrid1.Columns[2].Rows[1];
proctrans.Parameters.ParamByName('@quant2').Value := '0';
end;
////////////////////////
if DM.Qryselectkind.Fields.FieldByName('id').Value =6 then
begin
proctrans.Parameters.ParamByName('@quant').Value := '0';
proctrans.Parameters.ParamByName('@quant2').Value := ColumnGrid1.Columns[2].Rows[1];
end;
proctrans.Parameters.ParamByName('@solaf').Value := ColumnGrid1.Columns[3].Rows[1];
proctrans.Parameters.ParamByName('@sal').Value := edt10.Text;
proctrans.Parameters.ParamByName('@sal_d').Value := edt11.Text;
proctrans.Parameters.ParamByName('@sum_sal').Value := ColumnGrid1.Columns[5].Rows[1];
proctrans.Parameters.ParamByName('@tagr').Value := edt13.Text;
proctrans.Parameters.ParamByName('@taq_tah').Value := edt14.Text;
proctrans.Parameters.ParamByName('@tag_mor').Value := edt15.Text;
proctrans.Parameters.ParamByName('@sal1').Value := Form3.ColumnGrid1.Columns[6].Rows[1];
proctrans.Parameters.ParamByName('@taq_tah2').Value := edt18.Text;
proctrans.Parameters.ParamByName('@taq_mor2').Value := edt19.Text;
proctrans.Parameters.ParamByName('@sum_s').Value := edt20.Text;
proctrans.Parameters.ParamByName('@sum_ala').Value := edt21.Text;
proctrans.Parameters.ParamByName('@id_iteam').Value := edt25.Text;
proctrans.Parameters.ParamByName('@iteam').Value := edt5.Text;
proctrans.Parameters.ParamByName('@drivern').Value := edt27.Text;
proctrans.Parameters.ParamByName('@Tel1').Value := 'NO';
proctrans.Parameters.ParamByName('@id_kind').Value := EDT32.text;
proctrans.Parameters.ParamByName('@kind_H').Value := cbb1.text;
proctrans.Parameters.ParamByName('@id_chahen').Value :=edt34.text;
proctrans.Parameters.ParamByName('@card_driver').Value := 'NO';
proctrans.Parameters.ParamByName('@id_numcar').Value := edt35.Text;
proctrans.Parameters.ParamByName('@number_car').value := edt7.Text;
proctrans.Parameters.ParamByName('@id_store').Value := EDT33.text;
proctrans.Parameters.ParamByName('@name_store').Value := cbb2.text;
proctrans.Parameters.ParamByName('@tabriz').Value :=ColumnGrid1.Columns[4].Rows[1];
proctrans.Parameters.ParamByName('@chahen').Value := cbb3.text;
proctrans.Parameters.ParamByName('@id_dele2').Value := EDT30.text;
proctrans.Parameters.ParamByName('@name_dele2').Value := edt28.text;
proctrans.Parameters.ParamByName('@notec_add').Value :=ColumnGrid1.Columns[7].Rows[1];
proctrans.Prepared:=True;
try
proctrans.ExecProc;
finally
proctrans.Free;
end;
if dm.ADOConnection1.InTransaction then begin dm.ADOConnection1.CommitTrans;
if chk4.Checked=false then
begin
edt2.Clear;
edt22.Clear;
end;
if chk6.Checked=false then
begin
edt3.Clear;
edt23.Clear;
end;
if chk3.Checked=false then
begin
edt28.Clear;
edt30.Clear;
edt10.Clear;
ColumnGrid1.Columns[5].Rows[1]:='';
ColumnGrid1.Columns[6].Rows[1]:='';
end;
if chk2.Checked=false then
begin
edt5.Clear;
edt13.Clear;
edt25.Clear;
end;
begin
edt1.Clear;
ColumnGrid1.Columns[7].Rows[1]:='';
edt7.Clear;
edt4.Clear;
edt27.Clear;
// edt28.Clear;
ColumnGrid1.Columns[1].Rows[1]:='';
ColumnGrid1.Columns[2].Rows[1]:='';
ColumnGrid1.Columns[3].Rows[1]:='';
ColumnGrid1.Columns[4].Rows[1]:='';
edt11.Clear;
edt14.Clear;
edt15.Clear;
edt16.Clear;
edt18.Clear;
edt19.Clear;
end;
begin
if EDT2.Enabled =False then
begin
if EDT5.Enabled =False then
begin
if EDT3.Enabled =False then
begin
if edt28.Enabled =false then
begin
edt7.SetFocus;
end else begin
edt28.SetFocus;
end;
end else begin
EDT3.SetFocus;
end;
end else begin
EDT5.SetFocus;
end;
end else begin
EDT2.SetFocus;
end;
end;
end;
sumsto;
// pb1.Position:=100;
except
on E:exception do begin
if DM.ADOConnection1.InTransaction then
DM.ADOConnection1.RollbackTrans;
MsgText := 'حدث خطأ أثناء محاولة حفظ البيانات'
+ #13#10 + E.Message;
ShowMessage(MsgText);
// pb1.Visible:=False;
end;
end;
end else begin
case
Application.MessageBox('هذه الوثيقة بحاجة الى تعديل , هل تريد التعديل',
'تنبيه', MB_YESNO + MB_ICONQUESTION) of
IDYES:
begin
btn7.Click;
end;
IDNO:
begin
end;
end;
end;
// pb1.Visible:=False;
end;
Untitled.rar (الحجم : 68.38 ك ب / التحميلات : 8)
2.rar (الحجم : 72.84 ك ب / التحميلات : 12)
المشاركات : 20
المواضيع 3
:
: 0
الإنتساب : Jun 2011
لا تنس اخي الكريم ان البارادوكس يدعم اكثر من 3 مليار تسجيلة وهو محمي بشكل افضل من الاكسيس
اذن فلا تخلط علينا الامور