PDA

View Full Version : باتن با خاصیت برجستگی متن



elena
شنبه 31 اردیبهشت 1390, 15:56 عصر
سلام.یه باتن میخوام وقتی موس رو روش نگه میدارم متن برجسته بشه.

یوسف زالی
شنبه 31 اردیبهشت 1390, 22:17 عصر
سلام.
این جا رو ببینید:
http://www.persianupload.com/1670529

در حقیقت یه کلاس مشتق کردم از دکمه و حساسش کردم.
دکمه خودم رو بهش فرستادم و اون رو تیدیل کردم به یک دکمه حساس با تمام رویداد ها و property هاش.
با ترکیبی از سریالایز و GetProp..

کافیه یونیت رو Use کرده و تو OnCreate فرم برای هر دکمه که میخواهید حساس بشه بنویسید:
MakeSense(Button1); // esme dokme shoma

یوسف زالی
یک شنبه 01 خرداد 1390, 12:22 عصر
دوست عزیز به جوابتون رسیدید ؟
اگر مشکلی داره بگین که ما هم بدونیم

Mask
یک شنبه 01 خرداد 1390, 12:37 عصر
در پک کامپوننت CnPack همچین باتنی هست.
در ضمن یه کامپوننت XPManifest بزار رو فرمت : باتن خاصیتش رو از دست میده.

یوسف زالی
یک شنبه 01 خرداد 1390, 14:26 عصر
جناب Gold من گذاشتم.از دست نداد فقط کمی کندتر شد.

Mask
یک شنبه 01 خرداد 1390, 15:42 عصر
من از دلفی7 و ویندوز xp استفده میکنم.
کلا خاصیت از دست رفت.

یوسف زالی
یک شنبه 01 خرداد 1390, 18:52 عصر
دلفی 7 با سون استفاده کردم و درست بود.
ممنون.تست می کنم.

Felony
دوشنبه 02 خرداد 1390, 07:56 صبح
سلام.
این جا رو ببینید:
http://www.persianupload.com/1670529

در حقیقت یه کلاس مشتق کردم از دکمه و حساسش کردم.
دکمه خودم رو بهش فرستادم و اون رو تیدیل کردم به یک دکمه حساس با تمام رویداد ها و property هاش.
با ترکیبی از سریالایز و GetProp..

کافیه یونیت رو Use کرده و تو OnCreate فرم برای هر دکمه که میخواهید حساس بشه بنویسید:
MakeSense(Button1); // esme dokme shoma
وقتی یک شئ رو از یک کلاس مشتق میکنید و بعد اون رو در کدتون Create میکنید وظیفه آزاد سازی اون به عهده شماست نه دلفی ؛ به StringStream و MemoryStream دقت کنید در کتابخانه ای که نوشتید 2 بار این اشیاء رو در توابع مختلف ساختید و هیچ اقدامی برای آزاد سازیشون انجام ندادید ، کد توابع Serialize و DeSerialize باید به صورت زیر اصلاح بشه :

function Serialize(Obj: TComponent): WideString;
var
StringStream: TStringStream;
MemoryStream: TMemoryStream;
begin
MemoryStream := TMemoryStream.Create;
StringStream := TStringStream.Create('');
try
MemoryStream.WriteComponent(Obj);
MemoryStream.Seek(0, 0);
ObjectBinaryToText(MemoryStream, StringStream);
result := StringStream.DataString;
finally
StringStream.Free;
MemoryStream.Free;
end;
end;

procedure DeSerialize(Obj: TComponent; data: WideString);
var
StringStream: TStringStream;
MemoryStream: TMemoryStream;
begin
MemoryStream := TMemoryStream.Create;
StringStream := TStringStream.Create(data);
try
ObjectTextToBinary(StringStream, MemoryStream);
MemoryStream.Seek(0, 0);
MemoryStream.ReadComponent(Obj);
finally
StringStream.Free;
MemoryStream.Free;
end;
end;