Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Leer un edit (https://www.clubdelphi.com/foros/showthread.php?t=54373)

JoseFco 17-03-2008 02:00:00

Leer un edit
 
Hola amigos.

Tengo una idea y me hace falta una ayudadita.
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
Shape1.Brush.Color := clYELLOW;
end;

Me explico: Tengo este boton y el shape. Esto solo es para poder entender el procedimiento y me pueda ser mas facil de entender.
Ahora bien yo quiero que en el procedure del botton1 on Click antes de dar color al shape, primero lea un edit donde estara un numero 4,5,6 etc. Y dependiendo de ese numero entonces determine que color le daria al shape.
Lo que quiero aprender es como el procedure del boton primero lea el edit antes de determinar una funcion.
Por ejemplo si el numero en el edit es "3" o "4" que el color sea "rojo" mientras que si es "5" o "6" el color sea "amarillo" y si el numero es "7,8,9,10,11, o 12" el color sea verde.
La idea con este codigo es aprender como puedo direcionar el procedimiento de un boton a travez de un edit.

Un Saludo.

egostar 17-03-2008 04:14:03

Hola

Suponiendo que ya validaste que no hay errores de conversion en el edit1. ;)

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  case strtoint(edit1.text) of 
     3,4: Shape1.Brush.Color := clRed;
     5,6: Shape1.Brush.Color := clYellow;
     7,8,9,10,11,12: Shape1.Brush.Color := clGreen;
     else Shape1.Brush.Color := clWhite; //En caso de que sea otro numero
  end;
end;

Salud OS

Caral 17-03-2008 04:52:59

Hola
Bueno estaba haciendo algo parecido a Egostar pero me puse a esperimentar y me tope con un asunto en cuanto al TColor.
Mis disculpas a JoseFco por meterme en su pregunta.
Como pasar un string a TColor?.
Código Delphi [-]
const
 Col : array[1..4] of string = ('clRed','clYellow','clGreen','clBlue');

procedure TForm1.Button1Click(Sender: TObject);
var
   i : Integer;
begin
   for i := 1 to 4 do
  if edit1.Text = IntToStr(i) then
  edit2.Text:= (''+Col[i]);
 // aqui es donde no me sale, pues por supuesto no reconoce el array en el Color.
  Shape1.Brush.Color := (''+Col[i]);
end;
Lo trate de hacer directamente con un array de TColor, pero estoy en las mismas.
Me explicais?., tal vez a JoseFco le interesa tambien:)
Saludos

Delphius 17-03-2008 05:15:32

Buenas.

Amigo Caral, si la memoria no me falla, existe una función que dice algo así: StrToColor o StringToColor... no recuerdo bien, pero recuerdo haberla visto;).
Me encantaría probar pero no dispongo de Delphi en esta PC, mi equipo está en service hasta el martes o miercoles:(

Considero que el problema de ingresar un número en un edit y asociarlo a un color para shape es una alternativa un tanto rebuscada.
Espero que no te hayas sentido ofendido JoseFco.
Si los números son fijos y no se necesita agregar más, podríamos emplear un ComboBox con el nombre del color y dejar al usuario que elija el más adecuado.

Considero que es un buen control, con esto en mente y basandome en el codigo de caral se puede tener algo como:

Código Delphi [-]
const
ARRAY_COLOR: array [0..MAX_COLOR - 1] of TColor  = (...);

De modo que podemos asociar al índice del combo con cada color. Por ejemplo en el OnChange();

Código Delphi [-]
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  Shae1.Brush.Color := ARRAY_COLOR[ComboBox1.ItemIndex];
end;

La idea está, habría que pulirla pero creo se entiende.

Saludos,

egostar 17-03-2008 05:16:16

Cita:

Empezado por Caral (Mensaje 273686)
Hola
Bueno estaba haciendo algo parecido a Egostar pero me puse a esperimentar y me tope con un asunto en cuanto al TColor.
Mis disculpas a JoseFco por meterme en su pregunta.
Como pasar un string a TColor?.

Lo trate de hacer directamente con un array de TColor, pero estoy en las mismas.
Me explicais?., tal vez a JoseFco le interesa tambien:)
Saludos

Y porque no de una vez como un arreglo de TColor en lugar de String

Código Delphi [-]
const
 Col : array[1..4] of TColor = (clRed,clYellow,clGreen,clBlue);

procedure TForm1.Button1Click(Sender: TObject);
var
   i : Integer;
begin
   for i := 1 to 4 do
       if edit1.Text = IntToStr(i) then
         Shape1.Brush.Color := Col[i];
end;

Salud OS

Caral 17-03-2008 05:29:48

Hola
Podéis creer que lo hice varias veces y me dio errores, bueno, algo estaba mal hecho eso seguro.
Gracias amigo, me parecia que con un array era mas interesante así que lo intente.:):D
Esto de los arrays me tiene malo, algún día aprenderé.:D
Saludos

JoseFco 17-03-2008 22:46:45

Gracias egostar, Caral y Delphius.

El codigo de egostar esta trabajando bien.


Código Delphi [-]
 
procedure TForm1.Button1Click(Sender: TObject);
begin  case strtoint(edit1.text) of      
3,4: Shape1.Brush.Color := clRed;     
5,6: Shape1.Brush.Color := clYellow;     
7,8,9,10,11,12: Shape1.Brush.Color := clGreen;     
else Showmessage('Este programa no soporta ese valor');  
end;
end;

Los colores y el shape solo son para poder entender mejor la idea, que es a partir de una costante que se tendra que poner en un edit o en un ComboBox poder selecionar que mandare a algun lugar ( por ejemplo serial port).Que mi programita tome en cuenta que parametros estoy poniendo para el determinar un camino.;)
Creo que un combobox es mas elegante y de una vez solo pondre los valores que quiro tener, o que soportara mi programita.

Un Saludo y mil gracias por la ayuda.

JoseFco 18-03-2008 03:38:46

Hola amigos.

Googleando un poco encontre esto.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
 var dia:integer;
begin
  dia:=DayOfWeek(date);
case dia of
  1:Showmessage('Domingo');
  2:Showmessage('Lunes');
  3:Showmessage('Martes');
  4:Showmessage('Miércoles');
  5:Showmessage('Jueves');
  6:Showmessage('Viernes');
  7:Showmessage('Sábado');
  else
  Showmessage('Imposible');
  end;
end;

Esto me ayuda a entender algunas de las cosas que estoy estudiando.

Un Saludo.

JoseFco 19-03-2008 01:23:01

Hola amigos.

Le cambie algunas cosas a mi codigo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
case ComboBox1.ItemIndex of
3,4: Shape1.Brush.Color := clRed;
5,6: Shape1.Brush.Color := clYellow;
7,8,9,10,11,12: Shape1.Brush.Color :=clGreen;
else Showmessage('Este programa no soporta ese valor');
end;
end;

Copila bien (no da error) pero no funciona como esperaba. En el evento del boton solo hace Showmessage.
Algo anda mal aqui :confused: jajajajaja no se rian recuerden que son novato.;)
Me hace falta una ayudadita con esto.
PD: si seleciono el 3,4 o el 5 me da Showmessage. Si seleciono 6 o el 7 el shape se pone color rojo. Si seleciono 8 o 9 el shape se pone amarillo y si seleciono 10,11 o el 12 me da verde.

Un Saludo.

egostar 19-03-2008 02:11:10

Cita:

Empezado por JoseFco (Mensaje 274014)
Hola amigos.

Le cambie algunas cosas a mi codigo:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
case ComboBox1.ItemIndex of
3,4: Shape1.Brush.Color := clRed;
5,6: Shape1.Brush.Color := clYellow;
7,8,9,10,11,12: Shape1.Brush.Color :=clGreen;
else Showmessage('Este programa no soporta ese valor');
end;
end;

Copila bien (no da error) pero no funciona como esperaba. En el evento del boton solo hace Showmessage.
Algo anda mal aqui :confused: jajajajaja no se rian recuerden que son novato.;)
Me hace falta una ayudadita con esto.
PD: si seleciono el 3,4 o el 5 me da Showmessage. Si seleciono 6 o el 7 el shape se pone color rojo. Si seleciono 8 o 9 el shape se pone amarillo y si seleciono 10,11 o el 12 me da verde.

Un Saludo.

Pues si, es lógico que te pase eso ya que estas usando el ItemIndex el cual comienza en cero

ItemImdex -> Valor
0 -> 3
1 -> 4
2 -> 5
3 -> 6
4 -> 7

Etc,etc.

Salud OS

JoseFco 19-03-2008 02:20:30

Hola egostar.

Tienes mucha razon, ahora si me trabaja bien:). agregando el 0,1 y el 2 al combobox aunque no lo lea en mi rutina.
Pero me hace falta encontrar la forma de que esos tres numeros no salgan en el combobox, ya que no son una cosntante valida en mi programita.Solo a partir del 4 (4 mhz)

Alguna otra forma de trabajar el combobox?

Un saludo y gracias por la ayuda.

egostar 19-03-2008 02:33:02

Código Delphi [-]
var
  Form1: TForm1;
  Valor:Integer;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  case Valor of
    3,4: Shape1.Brush.Color := clRed;
    5,6: Shape1.Brush.Color := clYellow;
    7,8,9,10,11,12: Shape1.Brush.Color :=clGreen;
    else Showmessage('Este programa no soporta ese valor');
  end;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  Valor := StrtoInt(ComboBox1.Text);
end;

end.

Salud OS

Edito:

En el ComboBox solo pones los valores que quieras comparar

JoseFco 19-03-2008 02:41:45

Gracias carnal.
Cuando sea grande quiero ser asi como tu;).

jejejeje Un Saludo y problema resuelto.:)


La franja horaria es GMT +2. Ahora son las 10:52:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi