GARANTIR DESCONTO

Fórum sistema recebendo valor de form html #338017

18/02/2007

0

caros colegas, tenho que bolar 3 formulários...
o primeiro é uma pré-consulta, onde o usuário entra com algumas strings, que sao buscadas no banco de dados...

caso seja encontrado algo, vou para o segundo formulário, que seria um formulário de pré-relatório, que conterá uma lista com detalhes da busca efetuada no banco, e onde o usuário, escolherá(radiobutton) qual dos resultados dessa lista é o mais adequado a ele...

feito isso ele aperta no botão(´gerar relatório´) desse sengundo formulário, e ai sim, o relatório definitivo é gerado...

meu problema está no segundo formulário, andei pensando consideravelmente sobre, e nao surgiram idéias de qual componente utilizar para a visualização desse pré-relatório, uma vez que ele vai ser interativo, possuindo componentes do tipo radiobutton que conterão valores - como chaves primárias das tabelas consultadas - checkboxes e o que mais for preciso.

pensei em fazer isso em ASP, ou ASP.NET, porém desistí, pela dependencia do IIS e o framework(no caso do asp.net) instalado no servidor e de um driver ODBC instalado para o Firebird no caso do asp, sem contar que se eu nao fosse gerar os arquivos ASP em tempo de execussao e salva-los no servidor(o que daria uma certa mão de obra), qualquer um poderia simplesmente deletar os arquivos ASP/ASPX contidos no servidor.

bom em minha ignorância eterna, pensei em fazer esse pre-relatório em HTML, o que seria moleza, nao precisaria estar previamente salvo em disco, e nao teria dependencia com framework ou coisas do tipo... porém tenho uma duvida...

[b:d008e5ab8a]existe um meio do delphi receber os valores contidos num form html???[/b:d008e5ab8a]

obs: quando digo delphi receber os valores.... quero dizer o terceiro formulário do meu sistema receber os valores de um:
<form>

um forte abraço!


Mahdak

Mahdak

Responder

Posts

19/02/2007

Mahdak

pessoal , caso não existta uma forma do delphi pegar os valores provenientes de um form HTML, alguem teria uma sugestão de quais componentes eu poderia estar utilizando para fazer esse pre-relatório??

bom com ja dito, para esse pre-relatório seria feito um laço em um ClientDataSet para pegar todos os dados contidos nele e depois esses dados seriam inseridos no componente que nao sei qual poderia suprir essa necessidade. dentro desse componente, para cada registro teria um RadioButton que conteria o valor do ´ID´ pego no laço com o ClientDatSet

a tela ficaria parecida com isso:

[img:db3dded62e]http://www.colegioestadual.com.br/japa/imagens/preclass.jpg[/img:db3dded62e]


Responder

Gostei + 0

08/03/2007

Thiago Vidal

cara, muita gente pode achar essa solução muito complicada, mas com certeza é a mais elegante... eu te recomendaria criar uma classe que herde de TPanel, e desenhe os dados em tempo de execução, e criar varias instancias dessa classe dentro de um ScrollBox, e fazer tudo via código.

segue um exemplo:
primeiro, a descrição da Classe:
type
  TMyPanel = class(TPanel)
  private
    FCaracteristica: TLabel;
    FResiduo: TLabel;
    FAnexo: TLabel;
    FConstituinte: TLabel;
    FRadio: TRadioButton;
    FFonteGeradora: TLabel;
  public
    procedure AfterConstruction; override;
    property Anexo: TLabel read FAnexo;
    property FonteGeradora: TLabel read FFonteGeradora;
    property Caracteristica: TLabel read FCaracteristica;
    property Residuo: TLabel read FResiduo;
    property Constituinte: TLabel read FConstituinte;
    property Radio: TRadioButton read FRadio;
  end;


em seguida, na seção implementation:
implementation

{$R *.dfm}

const
  VMargin = 4; // margem vertical
  HMargin = 6; // margem horizontal
  Linha = 20; // altura de cada linha, em pixels

function GetLabel(AParent: TWinControl; ALeft, ATop: Integer): TLabel;
begin
  Result := TLabel.Create(AParent);
  with Result do
  begin
    Parent := AParent;
    Left := ALeft;
    Top := ATop;
  end;
end;

function GetText(AParent: TWinControl; ALeft, ATop: Integer; ACaption: string): TLabel;
begin
  Result := GetLabel(AParent, ALeft, ATop);
  with Result do
  begin
    Font.Style := [fsBold];
    Caption := ACaption;
  end;
end;


o codigo para criar tudo em runtime:
procedure TMyPanel.AfterConstruction;
var
  lb: TLabel;
begin
  inherited;
  Width := 400;
  Height := Linha * 6;
  Caption := ´´;
  Color := clWhite;

  FRadio := TRadioButton.Create(Self);
  with FRadio do
  begin
    Parent := Self;
    SetBounds(HMargin, VMargin, 300, 16);
    Font.Style := [fsBold];
    Font.Color := clNavy;
  end;

  lb := GetText(Self, HMargin, Linha + VMargin, ´Anexo:´);
  FAnexo := GetLabel(Self, lb.Left + lb.Width + HMargin, lb.Top);

  lb := GetText(Self, HMargin, Linha * 2 + VMargin, ´Fonte geradora:´);
  FFonteGeradora := GetLabel(Self, lb.Left, Linha * 3);

  lb := GetText(Self, 200, Linha * 2 + VMargin, ´Característica de periculosidade:´);
  FCaracteristica := GetLabel(Self, lb.Left, Linha * 3);

  lb := GetText(Self, HMargin, Linha * 4 + VMargin, ´Resíduo:´);
  FResiduo := GetLabel(Self, lb.Left, Linha * 5);

  // ... continua
end;


e o codigo no form para preencher os dados:
procedure TForm3.FormCreate(Sender: TObject);
begin
  with TMyPanel.Create(Self) do
  begin
    Parent := ScrollBox1;
    Align := alTop;

    Radio.Caption := ´F018´;
    Anexo.Caption := ´A - (Normativo) - Resíduos perigosos de fontes não específicas´;
    FonteGeradora.Caption := ´(fonte geradora)´;
    Caracteristica.Caption := ´Tóxico´;
    Residuo.Caption := ´Lodos originados no sistema...´;
  end;
end;


voce pode salvar todas as instancias em um TObjectList, e depois iterar pela lista, verificando a propriedade Radio.Checked de cada item.

se voce tivesse ideia de cada coisa que eu ja fiz criando componentes em RunTime... gerador de relatorios nunca mais, desenvolvi umas ferramentas magicas que fazem isso aqui.

um abraço, boa sorte!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar