مساؤكم سكر ...
طيب باختصار انا واجهتني المشكلة التالية :
حين استخدام listview مع الكمبوننت WinXp من شركة TMS (هذا الكمبوننت يجعل الازرار والافتتات تظهر كما في اكس بي حين استخدام برنامجك على ال اكس بي)
المهم المشكلة كانت انه يستحيل ان تضع اليست فيو وال اوين اكس بي مع بعضعم .. حيظهر خطا في الكيرنل 32
وهذه المشكلة موجودة في جميع الاصدارات ما عدا الاصدار السابع
وحل المشكلة هو كالتالي
بتروح على ملف ال
ComCtrls.pas
والى حتلاقيه طبعا تحت السورس هون
SourceVcl
و بتغير الاصطر التالية
procedure TCustomListView.UpdateColumn(AnIndex: Integer);
const IAlignment: array[Boolean, TAlignment] of LongInt =
((LVCFMT_LEFT, LVCFMT_RIGHT, LVCFMT_CENTER),
(LVCFMT_RIGHT, LVCFMT_LEFT, LVCFMT_CENTER));
var
Column: TLVColumn;
AAlignment: TAlignment;
begin
if HandleAllocated then
with Column, Columns.Items[AnIndex] do
begin
mask := LVCF_TEXT or LVCF_FMT or LVCF_IMAGE;
iImage := FImageIndex;
pszText := PChar(Caption);
AAlignment := Alignment;
if Index <> 0 then
fmt := IAlignment[UseRightToLeftAlignment, AAlignment]
else fmt := LVCFMT_LEFT;
// start patch
{if FImageIndex <> -1 then
fmt := fmt or LVCFMT_IMAGE or LVCFMT_COL_HAS_IMAGES;}
if FImageIndex <> -1 then
fmt := fmt or LVCFMT_IMAGE or LVCFMT_COL_HAS_IMAGES
else
mask := mask and not (LVCF_IMAGE);
// end patch
if WidthType > ColumnTextWidth then
begin
mask := mask or LVCF_WIDTH;
cx := FWidth;
ListView_SetColumn(Handle, Columns[AnIndex].FOrderTag, Column);
end
else begin
ListView_SetColumn(Handle, Columns[AnIndex].FOrderTag, Column);
if ViewStyle = vsList then
ListView_SetColumnWidth(Handle, -1, WidthType)
else if (ViewStyle = vsReport) and not OwnerData then
ListView_SetColumnWidth(Handle, Columns[AnIndex].FOrderTag, WidthType);
end;
end;
end;اي انك بتدور على السطر الي
procedure TCustomListView.UpdateColumn(AnIndex: Integer);
الى السطر
ListView_SetColumnWidth(Handle, Columns[AnIndex].FOrderTag, WidthType);
بملفك القديم وبتستبدلهم بالكود الكتبتلك ياه بالاعلى ..
وبس هيك بتكون انتهت العملية ..
ااااااه بس لا تنسا ترجع تعمل كومبايل لهذا الكمبوننت ..
وهيك بتكون انحلت المشكلة ..
بالعموم انا ارفقت مع المقال النسخة الجديدة اي المعدلة من ملف
ComCtrls.pas
لو انتا بتستخدم دلفي 6 بس حط النسخة المرفقة مكان القديمة الي عندك واعمل كومبايل ... ولو انتا بتستخدم قبل دلفي ستة فعليك بالطريقة الي فوق
ااااااااه
بالمناسبة نسيت خبركون هاي الفهلوية مش مفهومية مني ولا بالفطرة عرفت انو في غلط وصلحتو ..
لا انا وجهتني المشكلة وعييت على اني حلها .. بعديم رحت راسلت شركة ال TMS
ةخبرتهم .. وهني طلعو شباب محترمين خمس دقايق وردولي الجواب فيه الحل هذا .. وهني الي خبروني انو هاي المشكلة موجودة بما قبل السبعة كمان .. مشكورين والله
سلامات يا شباب ..
تحياتي الحارة