ارجو المساعدة كيف اجعل ال listview من اليمين الى اليسار
كيف اجعل listview من اليمن الى اليسار
نرجو من الأخ الكريم التفضل بمشاهدة مشاركة السيد عروة في هذا المجال فله باع طويل في هذا النوع وسوف اقتبسه عنه
على كل حال راج الملف المرفق
ولكن على فرض أنك استطعت تغيير الاتجاه فإنك ستفقد بالمقابل العديد من الميزات المهمة الأساسية لهذا العنصر
مثل فقد القوائم وعدم القدرة على قراءة صور الأيقونات وبعض الأحداث بسبب التغير index لترتيب هذه العناصر
حكمت سراج الدين
procedure MirrorControl(AControl: TWinControl; ARightToLeft: Boolean);
var
OldLong: Longword;
begin
OldLong := GetWindowLong(AControl.Handle, GWL_EXSTYLE);
if ARightToLeft then
begin
AControl.BiDiMode := bdLeftToRight;
SetWindowLong(AControl.Handle, GWL_EXSTYLE, OldLong or $00400000);
end
else
SetWindowLong(AControl.Handle, GWL_EXSTYLE, OldLong and not $00400000);
AControl.Repaint;
end;
حكمت سراج الدين
السلام عليكم...
بعد إذن الأخ hikmat و استكمالاً لإجابته....
الكود التالي عبارة عن إجراء بصيغتين (Overloaded) نحتاج كليهما لتغيير اتجاه الـ ListView
procedure ChangeControlLayout(Control: TWinControl; ArabicLayout: Boolean); overload;
var
OldLong: LongWord;
begin
OldLong := GetWindowLong(Control.Handle, GWL_EXSTYLE);
if ArabicLayout then begin
Control.BiDiMode := bdLeftToRight;
SetWindowLong(Control.Handle, GWL_EXSTYLE, OldLong or WS_EX_LAYOUTRTL);
end
else
SetWindowLong(Control.Handle, GWL_EXSTYLE, OldLong and not WS_EX_LAYOUTRTL);
Control.Repaint;
end;
procedure ChangeControlLayout(ControlHandle: LongWord; ArabicLayout: Boolean); overload;
var
OldLong: LongWord;
begin
OldLong := GetWindowLong(ControlHandle, GWL_EXSTYLE);
if ArabicLayout then
SetWindowLong(ControlHandle, GWL_EXSTYLE, OldLong or WS_EX_LAYOUTRTL)
else
SetWindowLong(ControlHandle, GWL_EXSTYLE, OldLong and not WS_EX_LAYOUTRTL);
UpdateWindow(ControlHandle);
end;نستعمل الصيغة الأولى لتغيير اتجاه الـ ListView ككل، لكن تبقى مشكلة أن رؤوس الأعمدة تظل من اليسار إلى اليمين، و لهذا نستدعي الإجراء الثاني بعد الأول:
ChangeControlLayout(ListView1, True); ChangeControlLayout(FindWindowEx(ListView1.Handle, 0, nil, nil), True);
و مع ذلك تبقى العقبات التي ذكرها أخونا hikmat مثل فقدان القوائم و استكمال النص المبتور و غيرها. و لكن ربما لا تهمك تلك الأمور.
نرجو الاستفادة و السلام.
وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ
صدق الله العظيم
على الرحب والسعة
شكرا على استكمال الإجابة
حكمت سراج الدين