Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Trasladar registros de un TDBGrid a labels (https://www.clubdelphi.com/foros/showthread.php?t=87639)

skara 03-02-2015 04:34:23

Cargar registros de una BD a los Labels
 
Buenas compañeros, estoy desarrollando una aplicación y no he logrado realizar esta programación: tengo una BD con una tabla que se llama variables, la cual cuenta con 2 columnas, una se llama nombres y la segunda se llama valores, lo que deseo realizar es crear en tiempo de ejecución tantos Labels como registros haya en la BD, me explico, por ejemplo tengo en esta tabla 3 registros cuyos nombres son: registroa, registros y registrosb, lo que quiero que el programa haga es que me cargue estos nombres y me cree en este caso (ejemplo) 3 Labels con cada uno de estos nombres.
Muchisimas gracias si me pueden colaborar

ecfisa 03-02-2015 07:24:38

Hola skara.

Sinceramente veo poco práctica esa forma de mostrar los registros, ya que si existiesen muchos, la muestra se saldría de pantalla. Hay controles de datos que realizan esa taréa sin dificultad.

Pero bueno... te pongo un ejemplo de como podes hacer lo que solicitas:
Código Delphi [-]
...
implementation 

uses Contnrs;

var
  List: TObjectList;

procedure TForm1.FormCreate(Sender: TObject);
begin
   List:= TObjectList.Create;
end;

procedure CreateLabels(aForm: TForm; aDataSet: TDataSet);
var
  lb: TLabel;
  i: Integer;
begin
  aDataSet.First;
  i:= 0;
  while not aDataSet.Eof do
  begin
    lb:= TLabel.Create(nil);
    List.Add(lb);
    lb.Left:= 10;
    lb.Top := i;
    lb.Name:= 'rtLabel'+IntToStr(List.Count);
    lb.Caption:= Format('%s: %s', [lb.Name, aDataSet.Fields[0].AsString]);
    lb.Parent:= aForm;
    Inc(i, 20);
    aDataSet.Next;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  CreateLabels(Form1, tuDataSet);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  List.Free;
end;

Saludos :)

skara 03-02-2015 22:56:47

Muchisimas Gracias, voy a intentarlo

skara 03-02-2015 23:44:16

Trasladar registros de un TDBGrid a labels
 
Buenas tardes compañeros, tengo una duda, tengo un TDBGrid en el cual estoy listando cada uno de los nombres de los registros que tengo en una BD, lo que quiero realizar es darle al usuario la posibilidad de seleccionar 10 registros de ese listado y que los registros (Nombres) que el usuario haya seleccionado sean cargado a 10 Labels
Muchisimas gracias

Casimiro Notevi 04-02-2015 00:13:44

No crees hilos nuevos para el mismo tema. Si no has entendido algo, continua aquí.

Como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, gracias por tu colaboración :)

ecfisa 04-02-2015 10:37:58

Hola skara.
Cita:

Empezado por skara (Mensaje 488413)
Buenas tardes compañeros, tengo una duda, tengo un TDBGrid en el cual estoy listando cada uno de los nombres de los registros que tengo en una BD, lo que quiero realizar es darle al usuario la posibilidad de seleccionar 10 registros de ese listado y que los registros (Nombres) que el usuario haya seleccionado sean cargado a 10 Labels
Muchisimas gracias

Mostrar hasta diez valores de campos seleccionados a los labels:
Código Delphi [-]
...
implementation  

var
  la: array[0..9] of TLabel;

procedure TForm1.FormCreate(Sender: TObject);
begin
  with DBGrid1 do
  begin
    DataSource.DataSet.Open;
    Options:= Options + [dgMultiSelect];
  end;
  la[0]:= Label1; la[1]:= Label2;
  la[2]:= Label3; la[3]:= Label4;
  la[4]:= Label5; la[5]:= Label6;
  la[6]:= Label7; la[7]:= Label8;
  la[8]:= Label9; la[9]:= Label10;
end;

procedure TForm1.btnToLabelClick(Sender: TObject);
var
  i: Integer;
begin
  with DBGrid1 do
  begin
    if SelectedRows.Count in [1..10] then
    begin
      for i:= 0 to SelectedRows.Count - 1 do
      begin
        DataSource.DataSet.GotoBookmark(Pointer(SelectedRows[i]));
        la[i].Caption:= DataSource.DataSet.FieldByName('NOMBRE').AsString; // (*)
      end;
    end;
  end;
end;
(*) Para el ejemplo, el nombre del campo a pasar a los labels es NOMBRE.

Saludos :)


La franja horaria es GMT +2. Ahora son las 21:22:00.

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