Delphi - Obtener Propiedad Name

 
Vista:

Obtener Propiedad Name

Publicado por Lety  (3 intervenciones) el 15/09/2009 01:10:38
Hola

Estoy buscando alguna función o alguna forma de obtener la propiedad Name de un componenete, ya use GetClassName pero me da el nombre de la clase y el GetWindowTex, pero tampoco es lo que necesito, estoy programando en Dhelphi 7.Si alguien me puede ayudar. Obtengo:

Handle del objeto, nombre de la clase del objeto , Texto del objeto. NECESITO EL NAME DEL OBJETO (Ejem. Button1)

Lety
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:Obtener Propiedad Name

Publicado por E.T. (1244 intervenciones) el 15/09/2009 17:15:30
Que procedimiento o que proceso empleas para obtener el nombre? y sobre que compoenete deseas obtenerlo, alguno en específico o varios tipos?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener Propiedad Name

Publicado por Lety  (3 intervenciones) el 18/09/2009 01:43:41
Necesito ontener el name de todos los objeto s o componenetes de Delfhi, pues no puedo obtener de algunos como del label pero necesito mas que nada la propiedad name por ejemplo si es (button, que me diga button1) los componenetes que mas o menos he probado es Treeview, Panel, Button, Edit, ListBox, ComboBox, CheckListBox, RichEdit, Memo....etc. pero quisiera poder obtenerlo de cualquiera de estos o de otros.

yo obtengo esto:
Handle: Classname: Caption
454665: Button: Suma

necesito esto:
Handle: Classname: Name:Caption
454665: Button: Button1: Suma

Este es el codigo que uso:

procedure TExtraerMenu.BtnExtraCajaClick(Sender: TObject);
var
hndVent, hndTester, hndObjeto: HWnd;
nom_prog: string;
Cont, Coordx,Coordy: integer;
rect: Trect;
Cur : TPoint;
existe: boolean;
Caption: Array [0..255] of char;
Texto: Array [0..255] of char;
begin
hndTester:= FindWindow(nil,PChar('Droide-Extraer Menú'));
nom_prog:= string(edit1.Text);
hndVent:= FindWindow(nil,PChar(nom_prog if hndVent>0 then
begin
SetForegroundWindow(hndVent);
GetWindowRect(hndVent,rect);

for CoordX:= rect.TopLeft.X to rect.BottomRight.X do //for cood x
begin
for CoordY:= rect.TopLeft.Y to rect.BottomRight.Y do //for coord y
begin
Cur.X:= CoordX;
Cur.Y:= CoordY;
existe:=false;
hndObjeto:= windowfrompoint(Cur);
GetClassname(hndObjeto, Caption, 256
GetWindowText(hndObjeto,Texto, 256
// Ciclo para llenar el ListBox1
for Cont:= 0 to Extraermenu.ListBox1.Count-1 do
if Extraermenu.ListBox1.Items.Strings[Cont]= TRIM(IntToStr(hndObjeto)':'+CAPTION+ '-' + Texto) then existe:= true;
if (existe=false) then
begin
ExtraerMenu.listbox1.Items.Add(TRIM(IntToStr(hndObjeto)+':'+CAPTION+ '-' + Texto));
end;
end;
end;
end; // if
SetForegroundWindow(hndTester);
end;
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:Obtener Propiedad Name

Publicado por E.T. (1244 intervenciones) el 18/09/2009 18:38:47
Bueno, investigando un poco, pude hacer que tu codigo ponga el nombre de algunos de los componentes que encuentra, pero solo del programa que ejecuta la búsqueda, de programas externos, encuentra los componentes, pero no los identifica como controles en delphi

var
hndVent, hndTester, hndObjeto: HWnd;
nom_prog: string;
Cont, Coordx,Coordy: integer;
rect2: Trect;
Cur : TPoint;
existe: boolean;
info : cardinal;
control:TWinControl;
nombre:string;
Caption:Array [0..255] of char;
Texto:Array [0..255] of char;
begin
ListBox1.Clear;
hndTester:= FindWindow(nil,PChar('Droide-Extraer Menú'));
nom_prog:= string(edit1.Text);
hndVent:= FindWindow(nil,PChar(nom_prog));
if hndVent>0 then begin
SetForegroundWindow(hndVent);//(hndVent);
GetWindowRect(hndVent,rect2);

for CoordX:= rect2.Left to rect2.Right do begin //for cood x
for CoordY:= rect2.Top to rect2.Bottom do begin //for coord y begin
Cur.X:= CoordX;
Cur.Y:= CoordY;
existe:=false;

hndObjeto:= windowfrompoint(Cur);
//control:=FindControl(hndObjeto);
control:=FindVCLWindow(cur);
//nombre := ;
nombre:='Nombre de control:';
if control <> nil then
nombre:='Nombre de control:'+(control.Name);
if hndObjeto > 0 then begin
info:=GetWindowTask(hndObjeto);
GetClassname(hndObjeto, (Caption), 256);
GetWindowText(hndObjeto,(Texto), 256);

// Ciclo para llenar el ListBox1
for Cont:= 0 to ListBox1.Count-1 do
if ListBox1.Items.Strings[Cont]= TRIM(IntToStr(hndObjeto)+':'+CAPTION+ '-' + Texto+'-'+nombre) then existe:= true;
if (existe=false) then begin
//showmessage(inttostr(hndVent)+' '+IntToStr(info));
listbox1.Items.Add(TRIM(IntToStr(hndObjeto)+':'+CAPTION+ '-' + Texto+'-'+nombre));
Form1.Refresh;
end;
end;
end;
end;
end; // if
SetForegroundWindow(hndTester);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar