delphi4arab منتديات دلفي للعرب
كيف يمكن تحويل بيان في listbox الى listbox اخري باستخدام DRAG AND DROP - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف يمكن تحويل بيان في listbox الى listbox اخري باستخدام DRAG AND DROP (/showthread.php?tid=589)



كيف يمكن تحويل بيان في listbox الى listbox اخري باستخدام DRAG AND DROP - WALID KREMA - 17-02-2009

كيف يمكن تحويل بيان في listbox الى listbox اخري باستخدام DRAG AND DROP وباستخدام DELPHI 6
ولكم الشكر


كيف يمكن تحويل بيان في listbox الى listbox اخري باستخدام DRAG AND DROP - kachwahed - 18-02-2009

هذا مثال صغير حول طريقة استعمال خاصية السحب والافلات (Drag & Drop)، ضع في مشروع جديد مكونين TListBox واكتب في الحدث OnDragOver والحدث OnDragDrop لكلا المكونين ما يلي:

PHP كود :
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
  
State: TDragState; var Accept: Boolean);
begin
  Accept 
:= Sender is TListBox;
end;

procedure TForm1.ListBox2DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  
iTemp: Integer;
  
ptTemp: TPoint;
  
szTemp: string;
begin
  
{ change the x,y coordinates into a TPoint record }
  
ptTemp.x := x;
  
ptTemp.y := y;

  { Use 
a while loop instead of a for loop due to items possible being removed
   from listboxes this prevents an out of bounds exception 
}
  
iTemp := 0;
   while 
iTemp <= TListBox(Source).Items.Count-1 do
  
begin
    
{ look for the selected items as these are the ones we wish to move }
    if 
TListBox(Source).selected[iTemp] then
    begin
      
{ use a with as to make code easier to read }
      
with Sender as TListBox do
      
begin
      
{ need to use a temporary variable as when the item is deleted the
        indexing will change 
}
        
szTemp := TListBox(Source).Items[iTemp];

        { 
delete the item that is being dragged  }
        
TListBox(Source).Items.Delete(iTemp);

      { 
insert the item into the correct position in the listbox that it
       was dropped on 
}
        
Items.Insert(itemAtPos(ptTemp, True), szTemp);
      
end;
    
end;
    
Inc(iTemp);
  
end;
end; 
ولا تنسى أن تضبط الخاصية DragMode على dmAutomatic لكلا المكونين، أو أكتب مباشرة هذا الكود في الحدث OnCreate للنموذج الرئيسي:
PHP كود :
procedure TForm1.FormCreate(Sender: TObject);
begin
  ListBox1
.DragMode := dmAutomatic;
  
ListBox2.DragMode := dmAutomatic;
end; 
ملاحظة: للكتابة في حدث معين لعدة مكونات دفعة واحدة، قم بتحديد (Select) مجموعة من المكونات وانقر مرتين في الحدث الذي تريد.
والسلام عليكم.


كيف يمكن تحويل بيان في listbox الى listbox اخري باستخدام DRAG AND DROP - AL-MOB4RM3G - 18-02-2009

بارك الله فيك اخي الكريم kachwahed
في الحقيقة ما شاء الله عليك...

امّا بخصوص الملاحظة
PHP كود :
ملاحظة: للكتابة في حدث معين لعدة مكونات دفعة واحدة، قم بتحديد (Select) مجموعة من المكونات وانقر مرتين في الحدث الذي تريد.
والسلام عليكم. 

فهذا شئ جديد بنسة لي...
فشكرا لك كثيرا...


كيف يمكن تحويل بيان في listbox الى listbox اخري باستخدام DRAG AND DROP - WALID KREMA - 19-02-2009

بارك الله فيك اخي الكريم وجزاك الله كل خير