delphi4arab منتديات دلفي للعرب

نسخة كاملة : كيف اجعل الثيم فعال داخل ليست فيو ListView
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
سلام عليكم

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

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

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

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

ماهوا الحل بحيث الثيم يضل فعال داخل ليست فيو مع عمل هذا الكود
السبب يكمن في الحدث : 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 .
اشكرك ياغالي على مساعدتك ممكن توضيح اكتر

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

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

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