delphi4arab منتديات دلفي للعرب
كيف اظهر memo في DBGrid - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف اظهر memo في DBGrid (/showthread.php?tid=9497)



كيف اظهر memo في DBGrid - Med-01 - 06-06-2018

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


لدي قاعدة بينات بها حقل من نوع memo عندما اعرض البينات في dbgrid جميع الحقول تظهر ماعدى حقل Memo بيناته لا تظهر كل حقل يبقى مكتوب فيه
memo

صورة من dbgrid

[صورة: emXpjdp.png]


جزاكم الله خيرا



RE: كيف اظهر memo في DBGrid - Delphi4Us - 06-06-2018

PHP كود :
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);
var
 
Left: Integer;
 
Text : string;
begin
  if 
(Field.DataType = ftMemo) or
 
    (Field.DataType = ftFmtMemo) then
  begin
    Text 
:= Field.AsString;

 
   case Field.Alignment of
      taLeftJustify
:
 
       Left := Rect.Left + 2;
 
     taRightJustify:
 
       Left := Rect.Right - TDBGrid(Sender).Canvas.TextWidth(Text) - 3;
 
   else // center
 
     Left := Rect.Left + (Rect.Right - Rect.Left) shr 1 - (TDBGrid(Sender).Canvas.TextWidth(Text) shr 1);
 
   end;
 
   TDBGrid(Sender).Canvas.TextRect(Rect, Left, Rect.Top + 2, Text);
 
   
  end
;
end; 



RE: كيف اظهر memo في DBGrid - Med-01 - 06-06-2018

اهلا Delphi4Us الكود لم يظهر اي خطا كما انه لم يشتغل لم تعرض memo في dbgrid
عموما انا اخطا انا استخدم DBMemo وليس memo هل لهذا السبب لم يعمل !!!

وشكرا وجزاك الله خيراااا


RE: كيف اظهر memo في DBGrid - Delphi4Us - 06-06-2018

كيف لم يعمل ، هل وضعته بالحدث المناسب له وربطته بالاداة DBgrid
انا لم اجرب شيئا وانما بحتث لك عن المعلومة فقط ، مثال أخر
PHP كود :
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const 
 
                Rect: TRect; Field: TField; State: 
 
                TGridDrawState);

var
 
 P: array [0..50] of char; {array size is number of   
                             characters needed
}
 
 bs: TBlobStream;          {from the memo field}
 
 hStr: String;

begin
  if Field is TMemoField then
  begin
    with 
(Sender as TDBGrid).Canvas do
 
   begin   {Table1Notes is the TMemoField}
 
     bs := TBlobStream.Create(Table1Notes, bmRead);
 
     FillChar(P,SizeOf(P),#0); {terminate the null string}
 
     bs.Read(P, 50); {read 50 chars from memo into blobStream}
 
     bs.Free;
 
     hStr := StrPas(P);
 
     while Pos(#13, hStr)  0 do  {remove carriage returns and}
 
       hStr[Pos(#13, hStr)] := ' '; 
 
     while Pos(#10, hStr)  0 do  {line feeds}
 
       S[Pos(#10, hStr)] := ' ';

 
     FillRect(Rect);  {clear the cell}
 
     TextOut(Rect.Left, Rect.Top, hStr);  {fill cell with memo 
                                            data
}
 
   end;
 
 end;
end; 



RE: كيف اظهر memo في DBGrid - Med-01 - 06-06-2018

بانسة للكود الاول قمت بوضعه في الحدث المناسب ل dbgrid ماذا تقصد بربطه مع dbgrid ! كيف اربطه

[صورة: 9R8ULws.png]
النتيجة

[صورة: Dt62M32.png]
-----------------
الكود الثاني يعطي خطا Undecided

[صورة: bsoKNwA.png]

شكرا وجزاك الله خيراا على محاولة المساعدة


RE: كيف اظهر memo في DBGrid - Ben.Ja - 06-06-2018

السلام عليكم, اضف الحقول, ثم إختر الحقل المراد اظهاره, في الغالب يكون من نوع "Text" في SQL لذا يظهر هكذا, ثم من خلال خاصية Display Value, غير dvClass الى dvClip لاظهار نقاط آخر النص أو dvfull لاظهار القيمة كلها
[صورة: GkY7HHy.png][صورة: mIBGkpx.png][صورة: 1JIXqww.png]


RE: كيف اظهر memo في DBGrid - Med-01 - 06-06-2018

انا اتعامل مع ACCESS وهذه الخاصية غير موجودة
شكرا وجزاك الله خيراا
[صورة: HYgig7r.png]


RE: كيف اظهر memo في DBGrid - Ben.Ja - 06-06-2018

انقر على الحدث OnGetText الخاص بالحقل, ثم أكتب:

PHP كود :
Text:= Sender.AsWideString; 


[صورة: pAci4bH.png]
سيبدو هكذا:
PHP كود :
procedure TForm1.ADOTable1infoGetText(Sender: TField; var Text: string;
 
 DisplayText: Boolean);
begin
Text
:= Sender.AsWideString;
end; 



RE: كيف اظهر memo في DBGrid - Delphi4Us - 07-06-2018

راجع هذا المثال سيفيدك
[صورة: 6d2fea3aa7acace.jpg]
http://delphi4arab.net/forum/showthread.php?tid=9502


RE: كيف اظهر memo في DBGrid - Med-01 - 07-06-2018

تم بواسطة Ben.Ja و Delphi4Us جزاك الله خيراا في ميزان حسناتكم

Ben.Ja حركة حلوة
Delphi4Us اضافتك رائعة