Ver Mensaje Individual
  #2  
Antiguo 22-06-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Es que no me queda del todo claro. Si te queres llevar la descripcion, porque estas dando de alta un nuevo registro?

Ademas no es sano que los form se entre conozcan entre si. Es mucho mejor hacer algo como esto:

Agrega esta propiedad en tu TfListadoPuestos:

Código Delphi [-]
type
  TfListadoPuestos = class(TForm)
  private
    FDescripcionPuesto: string;
  public
    function Execute: Boolean;
    property DescripcionPuesto: string read FDescripcionPuesto;
  end;

implementation

function TfListadoPuestos.Execute: Boolean;
begin
  if ShowModal = mrOk then
  begin
    Result := True;
    FDescripcionPuesto := // aca pones el valor del puesto seleccionado
  end
  else
    Result := False; 
end;

Y luego podes invocar a este form asi:

Código Delphi [-]
var
  FListadoPuestos: TfListadoPuestos;
begin
  FListadoPuestos := TfListadoPuestos.Create(Self)
  if FListadoPuestos.Execute then
    FListadoPuestos.DescripcionPuesto // valor que tienes que agregar al listbox
end;

--

Esto es ya mas consejo: Por que accedes a los valores de los campos como Variants?

TDataSet tiene una propiedad indizada y por defecto que devuelve el Variant del campo que pasas por indice. Pero he tenido malas experiencias con esta propiedad.

Te aconsejo usar DataSet.FieldByName('Campo').AsString/AsInteger, etc

A mi tambien me parece espantosamente larga la sintaxis, pero ya que llevas Delphi 2010, lo podes solucionar con una clase de extension:

Código Delphi [-]
interface

uses
  DB;

type
  TDataSetHelper = class helper for TDataSet
  private
    function GetFieldObject(Index: string): TField; inline;
  public
    property FieldObject[Index: string]: TField read GetFieldObject;
  end;

implementation

function TDataSetHelper.GetFieldObject(Index: string): TField;
begin
  Result := FieldByName(Index);
end;

Y ahora podrias escribir:

Código Delphi [-]
  DataSet['NombreCampo'].AsInteger;
Responder Con Cita