Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como saber en donde esta posicionado el foco (https://www.clubdelphi.com/foros/showthread.php?t=62045)

RedVenom 02-12-2008 16:04:15

Como saber en donde esta posicionado el foco
 
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
Código Delphi [-]
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.

Código Delphi [-]
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

Cita:

Empezado por RedVenom (Mensaje 329122)
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

Cita:

Empezado por RedVenom (Mensaje 329132)
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.

Código Delphi [-]
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:

Código Delphi [-]
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:

Código Delphi [-]
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.
Código Delphi [-]
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:


La franja horaria es GMT +2. Ahora son las 02:16:51.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi