PDA

Ver la Versión Completa : Como saber en donde esta posicionado el foco


RedVenom
02-12-2008, 16:04:15
Mi duda es la siguiente tengo 142 dbradiogroup entonces yo necesito extraer en tiempo de ejecuion el nombre del dbradiogroup cuando el foco se posicione en alguno de ellos.
Espero se pueda hacer esto.

droguerman
02-12-2008, 16:12:12
Asignas a todos el mismo evento click y pones el siguiente código

function OnClick(sender: TObject);
var
oSeleccionado : TdbgRadiogroup;
begin
oSeleccionado := (sender as TdbgRadiogroup);
showMessage(oSeleccionado.name);
end;


saludos

Caro
02-12-2008, 16:17:17
Hola, le asigans el mismo evento a todos tus DBRadioGroups y haces lo siguiente.


procedure TFExportar.DBRadioGroup1Click(Sender: TObject);
begin
showMessage(TDBRadioGroup(Sender).Name);
end;


Saluditos

RedVenom
02-12-2008, 16:23:07
Disculpa mi ignorancia :confused: soy nuevo en esto :) y pues no entendi muy bien donde lo voy a implementar en la funcion onclick del dbradiogroup o donde??

Caro
02-12-2008, 16:28:37
Disculpa mi ignorancia :confused: soy nuevo en esto :) y pues no entendi muy bien donde lo voy a implementar en la funcion onclick del dbradiogroup o donde??

Talvez sea mejor que lo hagas en el evento OnEnter de tu DBRadioGroup, pero no te olvides asignar el mismo evento a todos tus DBRadioGroups.

Saluditos

RedVenom
02-12-2008, 16:33:35
Ok lo agrego en el evento onenter, bueno ahora la cuestion es que ese nombre yo lo necesito para darle el dato a un evento onkeydown de la form porque yo en ese evento asigno unas letras y luego que asigne la letra deseo que cambie el foco al siguiente dbradiogoup por eso necesito extraer el nombre.

Caro
02-12-2008, 16:52:36
Ok lo agrego en el evento onenter, bueno ahora la cuestion es que ese nombre yo lo necesito para darle el dato a un evento onkeydown de la form porque yo en ese evento asigno unas letras y luego que asigne la letra deseo que cambie el foco al siguiente dbradiogoup por eso necesito extraer el nombre.

Pues, tendras que guardar en alguna variable el DbRadioGroup que ha recibido el foco.


RadioGroupFoco : TRadioGroup;
....................
....................
procedure TForm1.RadioGroup1Enter(Sender: TObject);
begin
RadioGroupFoco := TRadioGroup(Sender);
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
//Si presiona la A nos muestra el nombre del ultimo radioGroup que tenía el foco
if key=65 then
if Assigned(RadioGroupFoco) then
showmessage(RadioGroupFoco.Name);
end;


Saluditos

RedVenom
02-12-2008, 17:41:18
ya voy profgresando creo, ahi va en lo que estoy trabado ahora, bueno en una variable X tengo guardado el nombre del componente que tiene el foco digamos que se llama dbradigroup1 ahora quiero pasar el foco al componente dbradiogroup2 entonces lo que yo pense es extraer del nombre que tengo grabado en la X el la ultima parte que son los numeros, ya que tengo el numero sumarle 1 y luego volver a crear la palabra dbradiogroup2 claro con el nuevo numero y despues decirle pasa el foco al nuevo nombre que cree algo asi:

S:=trim(x);
P:=copy(S,13,Length(s));
Y:=(strtoint(p))+1;
H.Name:='DBradiogroup'+(inttostr(Y));
H.setfocus;

pero pues no se puede esta forma, alguna orientacion por favor

maeyanes
02-12-2008, 18:34:19
Hola...

Claro que no se puede de esa forma, en tu código lo único que estás haciendo es cambiar el nombre del componente en tiempo de ejecución.

En dado caso tendrías que hacer algo como:


RadioGroup := FindComponent('DBRadioGroup' + IntToStr(Y)) as TDBRadioGroup;
RadioGroup.SetFocus


De esta forma matas dos pájaros de un tiro, mandas el foco a otro DBRadioGroup y tienes una referencia a este mismo.



Saludos...

RedVenom
02-12-2008, 19:19:14
Voy a postear mi codigo fuente pues para que me corrijan pues no cambia el foco se queda en el mismo lugar.
unit UnitEnlace;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DBCtrls, DB, ADODB, Mask, OleServer, ExcelXP;

type
TFormaEnlace = class(TForm)
enlace: TADOTable;
DBRadioGroup1: TDBRadioGroup;
DBRadioGroup2: TDBRadioGroup;
DBRadioGroup3: TDBRadioGroup;
DBRadioGroup4: TDBRadioGroup;
DBRadioGroup5: TDBRadioGroup;
DBRadioGroup6: TDBRadioGroup;
DBRadioGroup7: TDBRadioGroup;
DBRadioGroup8: TDBRadioGroup;
DBRadioGroup9: TDBRadioGroup;
DBRadioGroup10: TDBRadioGroup;
DBRadioGroup11: TDBRadioGroup;
DBRadioGroup12: TDBRadioGroup;
DBRadioGroup13: TDBRadioGroup;
DBRadioGroup14: TDBRadioGroup;
DBRadioGroup15: TDBRadioGroup;
DBRadioGroup16: TDBRadioGroup;
DBRadioGroup17: TDBRadioGroup;
DBRadioGroup18: TDBRadioGroup;
DBRadioGroup19: TDBRadioGroup;
DBRadioGroup20: TDBRadioGroup;
DBRadioGroup21: TDBRadioGroup;
DBRadioGroup22: TDBRadioGroup;
DBRadioGroup23: TDBRadioGroup;
DBRadioGroup24: TDBRadioGroup;
DBRadioGroup25: TDBRadioGroup;
DBRadioGroup26: TDBRadioGroup;
DBRadioGroup27: TDBRadioGroup;
DBRadioGroup28: TDBRadioGroup;
DBRadioGroup29: TDBRadioGroup;
DBRadioGroup30: TDBRadioGroup;
DBRadioGroup31: TDBRadioGroup;
DBRadioGroup32: TDBRadioGroup;
DBRadioGroup33: TDBRadioGroup;
DBRadioGroup34: TDBRadioGroup;
DBRadioGroup35: TDBRadioGroup;
DBRadioGroup36: TDBRadioGroup;
DBRadioGroup37: TDBRadioGroup;
DBRadioGroup38: TDBRadioGroup;
DBRadioGroup39: TDBRadioGroup;
DBRadioGroup40: TDBRadioGroup;
DBRadioGroup41: TDBRadioGroup;
DBRadioGroup42: TDBRadioGroup;
DBRadioGroup43: TDBRadioGroup;
DBRadioGroup44: TDBRadioGroup;
DBRadioGroup45: TDBRadioGroup;
DBRadioGroup46: TDBRadioGroup;
DBRadioGroup47: TDBRadioGroup;
DBRadioGroup48: TDBRadioGroup;
DBRadioGroup49: TDBRadioGroup;
DBRadioGroup50: TDBRadioGroup;
DBRadioGroup51: TDBRadioGroup;
DBRadioGroup52: TDBRadioGroup;
DBRadioGroup53: TDBRadioGroup;
DBRadioGroup54: TDBRadioGroup;
DBRadioGroup55: TDBRadioGroup;
DBRadioGroup56: TDBRadioGroup;
DBRadioGroup57: TDBRadioGroup;
DBRadioGroup58: TDBRadioGroup;
DBRadioGroup59: TDBRadioGroup;
DBRadioGroup60: TDBRadioGroup;
DBRadioGroup61: TDBRadioGroup;
DBRadioGroup62: TDBRadioGroup;
DBRadioGroup63: TDBRadioGroup;
DBRadioGroup64: TDBRadioGroup;
DBRadioGroup65: TDBRadioGroup;
DBRadioGroup66: TDBRadioGroup;
DBRadioGroup67: TDBRadioGroup;
DBRadioGroup68: TDBRadioGroup;
DBRadioGroup69: TDBRadioGroup;
DBRadioGroup70: TDBRadioGroup;
DBRadioGroup71: TDBRadioGroup;
DBRadioGroup72: TDBRadioGroup;
DBRadioGroup73: TDBRadioGroup;
DBRadioGroup74: TDBRadioGroup;
DBRadioGroup75: TDBRadioGroup;
DBRadioGroup76: TDBRadioGroup;
DBRadioGroup77: TDBRadioGroup;
DBRadioGroup78: TDBRadioGroup;
DBRadioGroup79: TDBRadioGroup;
DBRadioGroup80: TDBRadioGroup;
DBRadioGroup81: TDBRadioGroup;
DBRadioGroup82: TDBRadioGroup;
DBRadioGroup83: TDBRadioGroup;
DBRadioGroup84: TDBRadioGroup;
DBRadioGroup85: TDBRadioGroup;
DBRadioGroup86: TDBRadioGroup;
DBRadioGroup87: TDBRadioGroup;
DBRadioGroup88: TDBRadioGroup;
DBRadioGroup89: TDBRadioGroup;
DBRadioGroup90: TDBRadioGroup;
DBRadioGroup91: TDBRadioGroup;
DBRadioGroup92: TDBRadioGroup;
DBRadioGroup93: TDBRadioGroup;
DBRadioGroup94: TDBRadioGroup;
DBRadioGroup95: TDBRadioGroup;
DBRadioGroup96: TDBRadioGroup;
DBRadioGroup97: TDBRadioGroup;
DBRadioGroup98: TDBRadioGroup;
DBRadioGroup99: TDBRadioGroup;
DBRadioGroup100: TDBRadioGroup;
DBRadioGroup101: TDBRadioGroup;
DBRadioGroup102: TDBRadioGroup;
DBRadioGroup103: TDBRadioGroup;
DBRadioGroup104: TDBRadioGroup;
DBRadioGroup105: TDBRadioGroup;
DBRadioGroup106: TDBRadioGroup;
DBRadioGroup107: TDBRadioGroup;
DBRadioGroup108: TDBRadioGroup;
DBRadioGroup109: TDBRadioGroup;
DBRadioGroup110: TDBRadioGroup;
DBRadioGroup111: TDBRadioGroup;
DBRadioGroup112: TDBRadioGroup;
DBRadioGroup113: TDBRadioGroup;
DBRadioGroup114: TDBRadioGroup;
DBRadioGroup115: TDBRadioGroup;
DBRadioGroup116: TDBRadioGroup;
DBRadioGroup117: TDBRadioGroup;
DBRadioGroup118: TDBRadioGroup;
DBRadioGroup119: TDBRadioGroup;
DBRadioGroup120: TDBRadioGroup;
DBRadioGroup121: TDBRadioGroup;
DBRadioGroup122: TDBRadioGroup;
DBRadioGroup123: TDBRadioGroup;
DBRadioGroup124: TDBRadioGroup;
DBRadioGroup125: TDBRadioGroup;
DBRadioGroup126: TDBRadioGroup;
DBRadioGroup127: TDBRadioGroup;
DBRadioGroup128: TDBRadioGroup;
DBRadioGroup129: TDBRadioGroup;
DBRadioGroup130: TDBRadioGroup;
DBRadioGroup131: TDBRadioGroup;
DBRadioGroup132: TDBRadioGroup;
DBRadioGroup133: TDBRadioGroup;
DBRadioGroup134: TDBRadioGroup;
DBRadioGroup135: TDBRadioGroup;
DBRadioGroup136: TDBRadioGroup;
DBRadioGroup137: TDBRadioGroup;
DBRadioGroup138: TDBRadioGroup;
DBRadioGroup139: TDBRadioGroup;
DBRadioGroup140: TDBRadioGroup;
DBRadioGroup141: TDBRadioGroup;
DBRadioGroup142: TDBRadioGroup;
DataSource1: TDataSource;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
DBEdit5: TDBEdit;
DBEdit6: TDBEdit;
DBEdit7: TDBEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DBRadioGroup1Enter(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
FormaEnlace: TFormaEnlace;
X:STRING;
H:TDBRadioGroup;

implementation

{$R *.dfm}

procedure TFormaEnlace.Button1Click(Sender: TObject);
var n:real; i:integer;
begin

n:=0;
FOR i:=7 to 148 do
begin
n:= enlace.fields[i].asfloat + n;
end;
enlace.Fields[149].AsFloat:=n;
enlace.Post;
ENLACE.APPEND;
end;

procedure TFormaEnlace.FormCreate(Sender: TObject);
begin
ENLACE.Active:=TRUE;
ENLACE.APPEND;
end;

procedure TFormaEnlace.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
Y:integer;
S,P:String;
begin
if key=ord('A') then
begin
DBradiogroup1.itemindex:=0;
S:=trim(x);
P:=copy(S,13,Length(s));
Y:=(strtoint(p))+1;
H := FindComponent('DBRadioGroup' + IntToStr(Y)) as TDBRadioGroup;
showmessage(h.Name);
H.SetFocus;
end;
if key=ord('B') then
begin
DBradiogroup1.itemindex:=1;
end;
if key=ord('C') then
begin
DBradiogroup1.itemindex:=2;
end;
if key=ord('D') then
begin
DBradiogroup1.itemindex:=3;
end;
end;

procedure TFormaEnlace.DBRadioGroup1Enter(Sender: TObject);
begin
X:=TDBRadioGroup(Sender).Name;
end;

end.

Que estoy haciendo mal???
:confused: