get set no DataModule para combobox delphi 7

Delphi

14/08/2012

Existe uma forma de como trazer o que esta definido num GET,SET dentro de um data module, para um combobox ou dbcombobox, em tempo de execução ? Por exemplo: Digamos que em base eu defina um campo Origem, como sendo: Revistas, Jornais, Televisão, Rádio, etc... co-relacionado com 01,02,03,04,etc..., no meu form coloco um dbcombobox, onde ao invés de preencher a propriedade Items, resolvo trazer estas descrições na hora da execução. espero que tenham entendido.
Carlos Cabral

Carlos Cabral

Curtidas 0

Respostas

Deivison Melo

Deivison Melo

14/08/2012

Se entendi o que está mencionando existe a possibilidade através do uso de Class Function.

Veja como utilizar abaixo:

http://www.weinrich.eti.br/artigos/segredos.htm


PS. No Delphi o modificador class function é a mesma coisa que o static do Java. Ou seja, não
preciso instanciar um objeto sempre que quiser efetuar o seu uso.
GOSTEI 0
Carlos Cabral

Carlos Cabral

14/08/2012

Veja isto:

Estas são as procedures que estão dentro do meu datamodule

No meu form tenho um TDBedit de name Origem, mas a propriedade Items, eu gostaria de poder trazer os Text que
estao lá no meu DM, de uma forma automatica.

EU nao entendi o exemplo e a referencia que voce me deu ? Me desculpe, como te disse ainda sou meio devagar no delphi
Mas estou postando pedaço do fonte, para tentar clarear mais minha mente. Obrigado


procedure TdmCtreceber.cdsCtrClienteORIGEMGetText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
if cdsCtrClienteORIGEM.AsInteger = 0 then Text := Não Selecionado;
if cdsCtrClienteORIGEM.AsInteger = 1 then Text := Indicação;
if cdsCtrClienteORIGEM.AsInteger = 2 then Text := Revista;
if cdsCtrClienteORIGEM.AsInteger = 3 then Text := Jornais;
if cdsCtrClienteORIGEM.AsInteger = 4 then Text := Tele-Marketing;
end;

procedure TdmCtreceber.cdsCtrClienteORIGEMSetText(Sender: TField; const Text: String);
begin
if Text = Não Selecionado then cdsCtrClienteORIGEM.AsInteger := 0;
if Text = Indicação then cdsCtrClienteORIGEM.AsInteger := 1;
if Text = Revista then cdsCtrClienteORIGEM.AsInteger := 2;
if Text = Jornais then cdsCtrClienteORIGEM.AsInteger := 3;
if Text = Tele-Marketing then cdsCtrClienteORIGEM.AsInteger := 4;
end;
GOSTEI 0
Deivison Melo

Deivison Melo

14/08/2012

Porquê não utiliza uma função?

Veja o exemplo abaixo, coloquei um edit e um button na tela e simplesmente:


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function ObterValor(Texto: TEdit):String;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

function TForm1.ObterValor(Texto: TEdit): String;
begin
Result:=Texto.Text;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(O valor do Edit é: +ObterValor(Edit1));
end;

end.
GOSTEI 0
William

William

14/08/2012

O método set pode ser modificado, vc pode usar:

Combobox.Items.IndexOf(Texto);


Esse método retorna o índice da opção selecionada no Combobox, ex.:

0 - Não Selecionada
1 - Indicação
2 - Revista


Esses índices (0,1,2) não ficam visíveis para o usuário, mas com o exemplo acima vc consegue capturar.
GOSTEI 0
POSTAR