PDA

View Full Version : می خوام تمام button های پنجره رو شناسایی کنم



Developer Programmer
شنبه 29 آذر 1382, 22:30 عصر
باسلام خدمت همه عزیزان و عرض خسته نباشید
من می خوام با یه کد API وقتی ماوس بر روی فرمی اشاره کرد تمام button های آن شناسایی بشند اگر hidden بودند visible بشند و اگر disable بودند enable بشند
کد من تا این حد تونست پیش بره ولی خوب کار نمی کنه


procedure TForm1.Timer1Timer(Sender: TObject);
begin
GetCursorPos(lpPoint);
winHandle:=WindowFromPoint(lpPoint);
edtHandle.Text:=IntToStr(winHandle) ;

if winHandle<>0 then { if found }
begin
GetClassName(winHandle,O,SizeOf(O)); edtClassName.Text:=StrPAS(O);
GetWindowText(winHandle,O,SizeOf(O)); edtCaption.Text:=StrPAS(O);
Child:=GetWindow(winHandle,GW_Child); {where is your child ? }

while Child<>0 do { Wow! no child ? }
begin
GetClassName(Child,C,SizeOf(C));
S:=StrPAS(C);
Temp1:=UpperCase(O); Temp2:=UpperCase(C);

if (Pos('BUTTON',Temp1)>0 ) Then
begin
EnableWindow(winHandle,True);
SendMessage(winHandle,WM_ShowWindow or WM_Activate or WM_Enable,0,0);
end;
if ( Pos('BUTTON',Temp2)>0 ) then
begin
EnableWindow(Child,True);
SendMessage(Child,WM_ShowWindow or WM_Activate or WM_Enable,0,0);
end;
Child := GetWindow(Child, GW_HWNDNEXT);
end; {while child<>0}
end; {if winHandle<>0}
end;

اینهم نوع متغیرهای بکار رفته


private
lpPoint:TPoint;
Child,winHandle:hwnd;
C:Array[0..127] of Char;
O:Array[0..127] of Char;
S:String;
Temp1:String;
Temp2:String;

winHandle هندل اون پنجره ای است که ماوس روشه
child هندل پچه
lpPoint مکان ماوس
c,o هم برای ذخیره نام کلاس پنجره بکار می ره
Temp1,Temp2 هم برای اونکه کلمه button رو به صورت BUTTON تبدیل کنم (برای اطمینان بیشتر)
:roll:

sql_qassem
یک شنبه 30 آذر 1382, 19:32 عصر
TComponent با استفاده از
--------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin

for i:=1 to Form1.ComponentCount;
begin
if Form1.Components[i].ClassType= TButton then
begin
if (Form1.Components[i] as TButton).Enabled then
begin
........
end;

if (Form1.Components[i] as TButton).Visible then
begin
.......
end;
end;
end;
end;

SQL
8)

دوشنبه 01 دی 1382, 09:26 صبح
اقای sql اینی که شما میگی فقط توی برنامه خودتون توی دلفی کار میکنه
ضمنن از تگ code هم استفاده میکردین بد نبید!

Developer Programmer
دوشنبه 01 دی 1382, 10:42 صبح
شامپو :mrgreen: جون قربنو دستت میشه زحمتش رو بکشی ؟