Limpar texto dos edits criando em tempo de execução.....

Delphi

18/07/2008

Estou criando alguns edits, dessa maneira e um ComboBox na frente deles, ai então fica uma linha de edit com o primeiro de codigo, o segundo para o nome e o combobox na frente, esse combobox que eu fiz é para que quando o usuário não querer o nome daquela linha ele clicar no combobox da linha do nome que ele quer que apague, mas não estou conseguindo fazer isso, os coidfo estão abaixo ai!

procedure TFrmFechaTurmaTeorica.FormCreate(Sender: TObject);
var
  SP, A, T : Integer;
  CodAlu, NomAlu : TEdit;
  Check : TCheckBox;
begin

  with DtmIza.QryIza do
    begin
      close;
      sql.clear;
      sql.add(´select * from Configuracao´);
      open;
    end;

  Alunos := DtmIza.QryIza.FieldByName(´TOT_ALU_TEORICAS´).AsInteger;

 // Criando total de alunos
   for CAC := 1 to Alunos do // criando colunas
      begin
        CodAlu := TEdit.Create(Self);
        with CodAlu do
          begin
            Name       := ´CodAlu´+ IntToStr(CAC);
            Tag        := cac;
            Left       := 0;
            Height     := 20;
            Width      := 55;
            AutoSize   := false;
            Font.Size  := 8;
            Text       := ´´;
            top        := -19+(CAC*20);
            Font.Style := [fsbold];
           // Parent     := Grade.Parent; Para fixar no Panel do JEDI
           Parent     := Grade;
          // OnExit     := ConsultaAlunos;
         //   OnExit  := ConsultaAlunosCodigo;
          end;
      end;

 // Criando total de alunos
   for CA := 1 to Alunos do // criando colunas
      begin
        NomAlu := TEdit.Create(Self);
        with NomAlu do
          begin
            Name       := ´NomAlu´+ IntToStr(CA);
            Tag        := ca;
            Left       := 56;
            Height     := 20;
            Width      := 250;
            AutoSize   := false;
            Font.Size  := 8;
            Text       := ´´;
            top        := -19+(CA*20);
            Font.Style := [fsbold];
            //Parent     := Grade.Parent;  Para fixar no Panel do JEDI
            Parent     := Grade;
          end;
    end;

 // Criando total de alunos
   for Tck := 1 to Alunos do // criando colunas
      begin
        Check := TCheckBox.Create(Self);
        with Check do
          begin
            Name       := ´Check´ + IntToStr(Tck);
            Left       := 308;
            Height     := 20;
            Width      := 50;
            AutoSize   := false;
            Font.Size  := 8;
            Caption    := ´Limpa´;
            top        := -19+(Tck*20);
            tag        := Tck;
            Parent     := Grade;
            OnClick    := LimpaCampos;
          end;
      end;

   AluPermitido.Caption := IntToStr(Alunos);

   Conta := 1;
   TotalAlunos := 0;
end;


Pois criado ele fica assim

(CodAlu1)(NomAlu1)(TckAlu1)
(CodAlu2)(NomAlu2)(TckAlu2)
(CodAlu3)(NomAlu3)(TckAlu3)
(CodAlu4)(NomAlu4)(TckAlu4)
(CodAlu5)(NomAlu5)(TckAlu5)...etc

então como eu faço para que quando eu clico por exemplo no (TckAlu3), só apaga o texto dos edits dessa linha no caso o CodAlu3 e NomAlu3...

????


Robinhocne

Robinhocne

Curtidas 0

Respostas

Marco Salles

Marco Salles

18/07/2008

olha , meio complicado entender isto :

Estou criando alguns edits, dessa maneira e um ComboBox na frente deles, ai então fica uma linha de edit com o primeiro de codigo, o segundo para o nome e o combobox na frente, esse combobox que eu fiz é para que quando o usuário não querer o nome daquela linha ele clicar no combobox da linha do nome que ele quer que apague, mas não estou conseguindo fazer isso, os coidfo estão abaixo ai!


mas isto da para entender .. ps: Pelo menos para mim

então como eu faço para que quando eu clico por exemplo no (TckAlu3), só apaga o texto dos edits dessa linha no caso o CodAlu3 e NomAlu3...


então achao que voce deve pelo menos [b:f1509c7a6f]saber o nome dos edit criados
em rumTime[/b:f1509c7a6f]

ai voce pode fazer tipo isto

TEdit(findComponent(´NomedoEditEmRumTime´).text:=´´;

ps.. dar um nome a um edit criado em rumTime vai depender de sua logica para criação do mesmo .. Inclusive atribuir um valor de tag especifico , para que voce possa ter mais liberdade no seu codigo

espero ter sido util


GOSTEI 0
Robinhocne

Robinhocne

18/07/2008

não consegui compreender cara...!


GOSTEI 0
Marco Salles

Marco Salles

18/07/2008

veja algo + ou -

 private
    { Private declarations }
    i:integer;
    procedure GerarEdit(Aowner:Tcomponent);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }


procedure TForm1.GerarEdit(Aowner: Tcomponent);
var
meuedit:Tedit;
nome:String;
begin
meuedit:=Tedit.Create(Aowner);
meuEdit.Parent:=(Aowner as TWincontrol);
repeat
inc(i);
nome:=´edit´+inttostr(i);
until findComponent(nome) = nil ;
meuedit.Name:=nome;
meuedit.Top:=25*i;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
 GerarEdit(self);
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
//No edit 2 coloque qual o edit que voce quer alterar
//exemplo 2 para o edit 2 ; 3 para o edit 3
TEdit(findcomponent(´edit´+edit1.text)).Text:=´´;
end;


isto foi possivel pq definimos os nomes dos edit
[b:ea60b1fefc]meuedit.Name:=nome;[/b:ea60b1fefc]


GOSTEI 0
Robinhocne

Robinhocne

18/07/2008

consegui ficou dessa maneira

procedure TFrmFechaTurmaTeorica.LimpaCampos(Sender: TObject);
var
  numAluno, i: Smallint;
begin
  i  := Length(TJvTransparentButton(Sender).Name);
  for i := Length(TJvTransparentButton(Sender).Name) downto 1 do
    if not (Ord(TJvTransparentButton(Sender).Name[i]) in [48..57]) then
    begin
      numAluno := StrToInt(Copy(TJvTransparentButton(Sender).Name, i + 1, Length(TJvTransparentButton(Sender).Name) - i + 2));

      break;
    end;
  TEdit(FindComponent(´CodAlu´ + IntToStr(numAluno))).Clear;
  TEdit(FindComponent(´NomAlu´ + IntToStr(numAluno))).Clear;
  TEdit(FindComponent(´CodAlu´ + IntToStr(numAluno))).SetFocus;
  Conta := NumAluno;
end;



GOSTEI 0
Marco Salles

Marco Salles

18/07/2008

então achao que voce deve pelo menos saber o nome dos edit criados em rumTime


consegui ficou dessa maneira ...


procedure TFrmFechaTurmaTeorica.LimpaCampos(Sender: TObject); var numAluno, i: Smallint; begin .............................. TEdit([b:6145560d2b]FindComponent[/b:6145560d2b](´CodAlu´ + IntToStr(numAluno))).Clear; TEdit([b:6145560d2b]FindComponent[/b:6145560d2b](´NomAlu´ + IntToStr(numAluno))).Clear; TEdit([b:6145560d2b]FindComponent[/b:6145560d2b](´CodAlu´ + IntToStr(numAluno))).SetFocus; Conta := NumAluno; end;


A politica dos nomes depende da sua logica de criação dos mesmo
mas no mais é isto ai....


GOSTEI 0
Robinhocne

Robinhocne

18/07/2008

sim sei mas esse começo que eu não sabei como fazer !

procedure TFrmFechaTurmaTeorica.LimpaCampos(Sender: TObject); 
var 
  numAluno, i: Smallint; 
begin 
  i  := Length(TJvTransparentButton(Sender).Name); 
  for i := Length(TJvTransparentButton(Sender).Name) downto 1 do 
    if not (Ord(TJvTransparentButton(Sender).Name[i]) in [48..57]) then 
    begin 
      numAluno := StrToInt(Copy(TJvTransparentButton(Sender).Name, i + 1, Length(TJvTransparentButton(Sender).Name) - i + 2)); 

      break; 
    end;



GOSTEI 0
Marco Salles

Marco Salles

18/07/2008

então como eu faço para que quando eu clico por exemplo no (TckAlu3), só apaga o texto dos edits dessa linha no caso o CodAlu3 e NomAlu3... ????


de acordo com as suas especificações faça isto que dá certo :

private { Private declarations } procedure LimpaCampos(sender:TObject);


procedure TForm1.LimpaCampos(sender: TObject);
var
 umTag:integer;
begin
 umTag:=TCheckBox(sender).Tag;
 TEdit(FindComponent(´NomAlu´+inttostr(umTag))).Text:=´´;
 TEdit(FindComponent(´CodAlu´+inttostr(umTag))).Text:=´´;
end;



GOSTEI 0
Robinhocne

Robinhocne

18/07/2008

assim fica mais facil, valeu


GOSTEI 0
POSTAR