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

18/07/2008

1

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...

????


Responder

Posts

18/07/2008

Marco Salles

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


Responder

18/07/2008

Robinhocne

não consegui compreender cara...!


Responder

18/07/2008

Marco Salles

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]


Responder

21/07/2008

Robinhocne

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;



Responder

21/07/2008

Marco Salles

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....


Responder

21/07/2008

Robinhocne

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;



Responder

22/07/2008

Marco Salles

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;



Responder

23/07/2008

Robinhocne

assim fica mais facil, valeu


Responder