Como saber se existe registro em TValueListEditor?

29/03/2006

Olá Pessoal.

Antes de iniciar, quero dizer a todos que este componente não tem items.count não, portanto, um [b:734d2770ae]for i ...[/b:734d2770ae] não tem como fazer :(

Eu queria saber se existe algum dado dentro deste componente, se não existir, quero desabilitar o botão1, caso contrário quero habilitar o botão1
------------------

Bom, para inserir um dado eu fiz assim:

procedure ...
begin
__ValueListEditor1.InsertRow(´texto da primeira coluna´,´texto da segunda coluna´,True);
end;

Aguardo a ajuda de vocês, estou precisando muito dessa ajuda!

Falowww


Onjahyr

Respostas

29/03/2006

Vinicius2k

Colega,

Dois exemplos de como ´encontrar´ chaves e valores de chaves no TValueListEditor:
{ ... }
var
  Linha: Integer;
begin
  if ValueListEditor1.FindRow(´SuaChave1´, Linha) then
    ShowMessage(´A chave "SuaChave" está presente na linha ´ + IntToStr(Linha))
  else
    ShowMessage(´A chave "SuaChave" não existe.´);
end;

{ ... }
var
  Valor: string;
begin
  Valor := ValueListEditor1.Values[´SuaChave´&93;;
  if Valor <> ´´ then
    ShowMessage(´O valor de "SuaChave" é ´ + Valor)
  else
    ShowMessage(´"SuaChave" não possui valor.´)
end;


T+


Responder Citar

30/03/2006

Rilder

Olá Vinícius,

Desta maneira que você colocou realmente funciona, porém, o programador tem que informar o nome de uma das chaves. Se você não sabe qual a chave que se encontra lá?

POR EXEMPLO:

Segundo o companheiro que colocou a dúvida, ele quer saber se existe um registro lá! para depois habilitar ou não um determinado botão.

Digamos que o componente em questão não tem nenhum dado, com um botão eu incluo um registro conforme o código que ele citou que insere. Aí, ele tem outro botão que apaga os dados de dentro, e quando não encontrar nenhum registro lá dentro ele deseja desabilitar este botão, então, como saber se ainda tem registro dentro????

Essa também é minha dúvida!

Obrigado.


Responder Citar

30/03/2006

Vinicius2k

Creio que interpretei de forma equivocada a questão...

Se a necessidade é apenas saber se existe ou não algum dado, bastaria ler a propriedade [b:a897e99f7d]RowCount[/b:a897e99f7d] (subtraindo 1 se as colunas possuirem título).


Responder Citar

31/03/2006

Onjahyr

Não funciona, já fiz isso também!
Parece que este componente fica com um registro nulo, toda vez quando faço o laço [b:4be045dc6e]for[/b:4be045dc6e], ele diz que existe um registro lá, mas não tem nada!
Se tem 3 registros, ele diz que tem 3, se 2, tem 2, se 1, tem 1, se 0, diz que tem 1. Sempre tem um!!!!!!

Existe outra função?

Eu tô colocando assim:

Alias, já fiz de várias formas e não surtiu efeito:

[b:4be045dc6e]procedure[/b:4be045dc6e] Tfrm_CreateUser.Button1Click(Sender: TObject);
[b:4be045dc6e]var[/b:4be045dc6e]
__i : integer;
[b:4be045dc6e]begin
__for[/b:4be045dc6e] i := ValueListEditor1.RowCount -1 [b:4be045dc6e]downto[/b:4be045dc6e] 0 [b:4be045dc6e]do
____begin
______if[/b:4be045dc6e] i <= 0 [b:4be045dc6e]then[/b:4be045dc6e]
________ShowMessage(IntToStr(i))
_______[b:4be045dc6e]else[/b:4be045dc6e]
________ShowMessage(´Oi´);
____[b:4be045dc6e]end;
end;[/b:4be045dc6e]

coloquei:

[b:4be045dc6e]for[/b:4be045dc6e] i := 0 [b:4be045dc6e]to[/b:4be045dc6e] ValueListEditor1.RowCount -1 [b:4be045dc6e]do[/b:4be045dc6e]

...

Aguardo.... Agradecido pela colaboração.


Responder Citar

31/03/2006

Vinicius2k

Colega,

Como eu disse, se a as colunas contiverem títulos, sempre haverá uma linha: a linha do título.
Para ter a contagem correta, precisa-se subtrair 1.


Responder Citar

31/03/2006

Onjahyr

É Verdade Vinícius, vi depois! mas resolvi dessa forma também:

[b:031e2ac4e1]procedure[/b:031e2ac4e1] Tfrm_CreateUser.Button1Click(Sender: TObject);
[b:031e2ac4e1]var[/b:031e2ac4e1]
__i : integer;
__S,S2 : [b:031e2ac4e1]String;
begin
__for[/b:031e2ac4e1] i:= 1 [b:031e2ac4e1]to[/b:031e2ac4e1] Pred(ValueListEditor1.RowCount) [b:031e2ac4e1]do
___begin[/b:031e2ac4e1]
_____S2:= ValueListEditor1.Keys[i];
_____S := ValueListEditor1.Values[S2];
_____[b:031e2ac4e1]if[/b:031e2ac4e1] S = ´´ [b:031e2ac4e1]then[/b:031e2ac4e1]
______btRemover1.Enabled:=False; // Visto que não pode haver valores null
___[b:031e2ac4e1]end;
end;[/b:031e2ac4e1]


Responder Citar

31/03/2006

Onjahyr

Vinícius, agradeço pela ajuda. Abriu a cabeça para pensar melhor.

Falowww


Robson


Responder Citar