PDA

View Full Version : چطوری log fileبسازیم ؟



neda azadi
چهارشنبه 15 فروردین 1386, 18:15 عصر
یک برنامه دارم که در تمام فرم ها حدودا 300 تا دکوه داره . من می خوام یک روتین بنویسم که یک حالت log file داشته باشه . یعنی هر بار که یکی از این دکمه ها کلیک شد تاریخ و زمان و فرم اصلی دکمه در یک فایل text ذخیره بشه . ولی به دلیل زیاد بودن تعداد دکمه ها و اینکه نباید کد onclick دکمه ها را تغییر بدهم به دنبال راهی برای استفاده از رویداد ها و notify event در دلفی برای مشکلم می گردم . امیدوارم شما دوستان بتونید کمک کنید ....

ghabil
چهارشنبه 15 فروردین 1386, 22:46 عصر
یک دونه کامپونت ApplicationEvents بزار روی صفحه بعد توی OnMessageش یک چیزی مثل این بنویس (البته حالا این کد فقط کلیک چپ شدن رو امتحان میکنه مثلا تو میتونی چک کنی که روی Buttom کلیک چپ شده باشه یا شاید Enter رده شده باشه یا Space زده باشه ولی فکر کنم تو این مثال هرچی لازم داری باشه)"



if Msg.message = WM_LBUTTONDOWN then
ShowMessage( FindControl(Msg.hwnd).Name);

neda azadi
شنبه 18 فروردین 1386, 21:35 عصر
یک دونه کامپونت ApplicationEvents بزار روی صفحه بعد توی OnMessageش یک چیزی مثل این بنویس (البته حالا این کد فقط کلیک چپ شدن رو امتحان میکنه مثلا تو میتونی چک کنی که روی Buttom کلیک چپ شده باشه یا شاید Enter رده شده باشه یا Space زده باشه ولی فکر کنم تو این مثال هرچی لازم داری باشه)"



if Msg.message = WM_LBUTTONDOWN then
ShowMessage( FindControl(Msg.hwnd).Name);



یعنی شما میگید اگر این کامپوننت رو بگذارم روی صفحه هر دکمه ای که کلیک چپ شد روش onmessage صدا زده میشه ؟!
این کامپوننت رو از کجا باید بیارم ؟

ghabil
یک شنبه 19 فروردین 1386, 01:13 صبح
آره خب عجیبه ؟
تب Additional تو دلفی...

Delphi_OnLine999
یک شنبه 19 فروردین 1386, 02:56 صبح
این هم کاملتر
بعد از قرار دادن TApplicationEvents این کد را قرار بده. توجه کن که فقط با کلیک چپ بر روی فقط button تابع فراخوانی می شود.



procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
var Class_Name,Contol_Name:pchar;
Buffer_Size:integer;
begin
Buffer_Size:=50;
if Msg.message = WM_LBUTTONDOWN then
begin
try
GetMem(Class_Name,Buffer_Size);
GetClassName(Msg.hwnd,Class_Name,255);
if StrIComp(Class_Name,'Tbutton')=0 then
begin
GetMem(Contol_Name,Buffer_Size);
SendMessage(Msg.hwnd,WM_GETTEXT, Buffer_Size, integer(pansichar(Contol_Name)));
{ Dar In Ja Esme Tavabe Khode Ra Gharar bedahid }
self.Caption:=format('Clicked %s In Your Form',[Contol_Name]);
Handled:=true;
end;
finally
FreeMem(Class_Name);
end;
end;
end;