Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sergio Gomes_90739

Listbox

Recommended Posts

Tenho um listbox que vai do numero 1 ao 100 e vai ficar visível no formulário para que os usuários possam selecionar.
Ao selecionar o numero no listbox por exemplo 1, é preciso aparecer no edit1 um valor que representa o numero 1

Tipo assim:

Numero 1 do listbox vale 200
Numero 2 do listbox vale 210
Numero 3 do listbox vale 220

Assim por diante até o numero 100, cada numero é representado por um valor, e esse valor precisa aparecer no edit1

Encontrei esse código na net, mais o que esta aparecendo no edit1 é o numero selecionado no listbox, quando eu preciso que apareça seu representante.

 

procedure TForm1.ListBox1Click(Sender: TObject);
begin
edit1.Text := ListBox1.Items.Strings[Listbox1.ItemIndex];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sérgio, realmente este código que postou só captura o valor inserido no listbox e joga para um edit.... mas não entendi qual é a regra que quer implantar no seu programa... você quer clicar no listbox e pegar um valor de onde para jogar no seu edit? Pelo que estou entendendo, seu listbox mostraria uma relação numérica de 1 a 100, mas não fica claro de onde sai o valor que vai pro edit... explica melhor isso que te dou uma força.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cada item (numero) do listbox representa um valor.

 

Achei um codigo na net que atendeu minhas necessidades, veja:

 

if ComboBox1.Items.Strings[ComboBox1.ItemIndex]= '1' then
edit1.text:=('200');

 

 

Assim preenchi do numero ao 100 e já funciocou.

 

Pra finalizar só me restou um problema. Quando o arquivo está executando, o usuario pode com o mouse crescer o form, queria travar essa opção, para que ficasse no tamanho padrão sem da chances do usuario arastar suas laterias e fazer crescer o form.



Tudo resolvido e aplicação pronta, Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sérgio, apesar deste if funcionar, ele não é uma das melhores práticas de programação, considerando a quantidade de itens que vai ter no seu combobox... uma boa alternativa seria o uso de um array de 100 posições com os valores correspondentes a cada item do seu listbox, pois ai você só precisaria pegar o itemindex do listbox e buscar o valor do array correspondente, ficando mais enxuto o seu código... quanto ao seu form, mude a propriedade BorderStyle de bsSizeable para bsSingle que já não irá permitir mais ao usuário alterar o tamanho do seu form (a não ser que use o maximizar do form, que pode ser desabilitado também na propriedade BorderIcons do form).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só pra complementar, tomando por base que tenha um combobox de 5 itens.... poderia fazer seu código desta forma para facilitar sua vida na programação e manutenção do seu programa, evitando milhões de if's para fazer este de-para de valores a partir da seleção do combobox.

 

 

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    Edit1: TEdit;
    procedure ComboBox1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

const Valores : array[0..4] of integer = ( 10, 100, 200, 300, 400 );

{$R *.dfm}

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
   Edit1.Text := IntToStr(Valores[ComboBox1.ItemIndex]);
end;

end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.