delphi4arab منتديات دلفي للعرب
كيف اجعل الثيم فعال داخل ليست فيو ListView - نسخة قابلة للطباعة

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



كيف اجعل الثيم فعال داخل ليست فيو ListView - Sonic - 02-02-2014

سلام عليكم

لدي مشكلة في ListView عندما اضع الكود هذا

كود :
if item.Caption=slistview2.Items[slistview2.Items.Count-1].Caption then begin sender.Canvas.Font.Color:=form3.Shape1.Brush.Color;

في حدث AdvancedCustomDrawItem يختفي التحديد المفعل الخاص بالسكين

انا استخدم مكونات AlphaControl

ماهوا الحل بحيث الثيم يضل فعال داخل ليست فيو مع عمل هذا الكود


كيف اجعل الثيم فعال داخل ليست فيو ListView - SMP3 - 02-02-2014

السبب يكمن في الحدث : NewAdvancedCustomDrawItem في ال Unit : sListView.pas
PHP كود :
procedure TsCustomListView.NewAdvancedCustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage; var DefaultDraw: Boolean); 
ان تمعنت ستجد أن الأسطر الأولى هي مفتاح الباب Smile
PHP كود :
if Assigned(FOldAdvancedCustomDrawItem) then
 begin
    FOldAdvancedCustomDrawItem
(Sender, Item, State, Stage, DefaultDraw);
    Exit; 
لاحظ أن Alpha تتأكد أولا أن الحدث OnAdvancedCustomDrawItem غير مقتنص ..
بمعنى ان قمت باستخدام الحدث لأي شيئ لن يتم اكمال الحدث NewAdvancedCustomDrawItem و ستم الخروج فورا .. ما يعني عدم عمل skin لل ListView .

لحل المشكلة أمامك حلان :
الحل الأول أن تقوم بالتعديل على ال unit sListView و تقوم بحذف شرط التحقق من الحدث .
الحل الثاني اعادة رسم ال Items كاملة في الحدث OnAdvancedCustomDrawItem .


كيف اجعل الثيم فعال داخل ليست فيو ListView - Sonic - 03-02-2014

اشكرك ياغالي على مساعدتك ممكن توضيح اكتر

الحل الأول أن تقوم بالتعديل على ال unit sListView و تقوم بحذف شرط التحقق من الحدث .

كيف يمكني حذف شرط التحقق من الحذف

دون خسارة عمل الكود