المشاركات : 37
المواضيع 15
:
: 0
الإنتساب : Nov 2013
سلام عليكم
لدي مشكلة في ListView عندما اضع الكود هذا
كود :
if item.Caption=slistview2.Items[slistview2.Items.Count-1].Caption then begin
sender.Canvas.Font.Color:=form3.Shape1.Brush.Color;
في حدث AdvancedCustomDrawItem يختفي التحديد المفعل الخاص بالسكين
انا استخدم مكونات AlphaControl
ماهوا الحل بحيث الثيم يضل فعال داخل ليست فيو مع عمل هذا الكود
المشاركات : 632
المواضيع 66
:
: 6
الإنتساب : Jul 2010
السبب يكمن في الحدث :
NewAdvancedCustomDrawItem في ال Unit : sListView.pas
PHP كود :
procedure TsCustomListView.NewAdvancedCustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage; var DefaultDraw: Boolean);
ان تمعنت ستجد أن الأسطر الأولى هي مفتاح الباب
PHP كود :
if Assigned(FOldAdvancedCustomDrawItem) then
begin
FOldAdvancedCustomDrawItem(Sender, Item, State, Stage, DefaultDraw);
Exit;
لاحظ أن Alpha تتأكد أولا أن الحدث
OnAdvancedCustomDrawItem غير مقتنص ..
بمعنى ان قمت باستخدام الحدث لأي شيئ لن يتم اكمال الحدث NewAdvancedCustomDrawItem و ستم الخروج فورا .. ما يعني عدم عمل skin لل ListView .
لحل المشكلة أمامك حلان :
الحل الأول أن تقوم بالتعديل على ال unit sListView و تقوم بحذف شرط التحقق من الحدث .
الحل الثاني اعادة رسم ال Items كاملة في الحدث OnAdvancedCustomDrawItem .
Open Your Source .. Open Your Mind
المشاركات : 37
المواضيع 15
:
: 0
الإنتساب : Nov 2013
اشكرك ياغالي على مساعدتك ممكن توضيح اكتر
الحل الأول أن تقوم بالتعديل على ال unit sListView و تقوم بحذف شرط التحقق من الحدث .
كيف يمكني حذف شرط التحقق من الحذف
دون خسارة عمل الكود