Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Unir Formularios (https://www.clubdelphi.com/foros/showthread.php?t=68921)

agustin173 15-07-2010 02:04:50

Unir Formularios
 
Saludos a todos los del foro

Muchachos como puedo hacer que el formulario principal que es un MDI cuando lo minimize lo hagan todos los demas formularios,

Los demas formularios no son MDIHijos, son formularios normales 'stapontop'

como los puedo enlazar para que cuando minimize el mdi se minizen tambien los demas.

ecfisa 15-07-2010 03:23:52

Hola agustin.

Pienso que podrías hacer así:
Código:

procedure TForm1.MinimizarTodo;
var
  i: Integer;
begin
  with Application do
    for i:= 0 to ComponentCount -1 do
      if (Components[i] is TForm) then
        Minimize;
end;

O, en lugar de Minimize, también:
Código:

  SendMessage(TForm(Components[i]).Handle,WM_SYSCOMMAND,SC_MINIMIZE,0);
Saludos.

urrutia_206 15-07-2010 03:30:46

necesita ayuda
 
hola alguien de ustedes me puede ayudar en un programa que tengo que hacer en consol application? con ciclos?

ecfisa 15-07-2010 03:33:00

Hola urrutia y bienvenido.

Te aconsejo crear un nuevo hilo (o tema) con tu cuestión, así todos podrán verlo y contestarte.

¿ Podriás especificar un poco más ?

Saludos.

Neftali [Germán.Estévez] 15-07-2010 13:14:29

Cita:

Empezado por urrutia_206 (Mensaje 370435)
hola alguien de ustedes me puede ayudar en un programa que tengo que hacer en consol application? con ciclos?

Antes de nada, te recomiendo que leas la Guía de estilo.
Una vez la hayas leído, abre un nuevo hilo y plantea tu pregunta explicando con detalle el problema. No te olvides de asignar al hilo un mensaje coherente con lo que te pasa.

Un saludo.

agustin173 15-07-2010 13:21:22

unir formularios
 
ecfisa donde debo poner este codigo en que parte de la aplicacion, porque copie lo que me diste y lo pegue y no me funciona ose me da un error que no reconoce que declare Tform1.minizartodo"

no entiendo por favor aclare un poco.

agustin173 15-07-2010 14:26:29

unir formularios
 
ecfisa logre algo pero cuando doy un click en cualquier parte del formulario se minizatodo no me deja trabajar el codigo que puse fue el siguiente:



private
{ Private declarations }
Procedure MinimizarTodo(var Mensaje: TWMSysCommand); message WM_SYSCOMMAND;
public
{ Public declarations }
end;
var
FrmMenu: TFrmMenu;
implementation
// Para usar los Formularios.
uses Login, Entrada, Recepcion, Itebis;
{$R *.dfm}
procedure TFrmMenu.MinimizarTodo;
var
i: Integer;
begin
with Application do
for i:= 0 to ComponentCount -1 do
if (Components[i] is TForm) then
Minimize;
end;

dime que puedo hacer para que se minimize cuando presione el boton de minizar solamente.

cloayza 15-07-2010 16:28:52

Amigos hagamos uso de las etiquetas, nos simplifica la lectura de los codigos...

Código Delphi [-]
private
{ Private declarations }
Procedure MinimizarTodo(var Mensaje: TWMSysCommand); message WM_SYSCOMMAND;
public
{ Public declarations }
end;

var
FrmMenu: TFrmMenu;

implementation
// Para usar los Formularios.
uses Login, Entrada, Recepcion, Itebis;
{$R *.dfm}
procedure TFrmMenu.MinimizarTodo;
var
i: Integer;
begin
      with Application do
            for i:= 0 to ComponentCount -1 do
                if  (Components[i] is TForm) then
                    Minimize;
end;

Saludos cordiales

Caro 15-07-2010 16:36:05

Hola agustin173, como te dice cloayza utiliza las etiquetas [ delphi] [ /delphi] sin los espacios, para tu codigo.

Sobre tu pregunta, cuando minimizas el formulario principal se minimizan todos los formularios no importa si son MDI, Normal o StayOnTop. Ahora si quieres minimizar desde otro formulario que no sea el principal, puedes hacer esto:

Código Delphi [-]
 procedure MinimizarTodo(var Msg: TMessage); message WM_SYSCOMMAND;
 
 procedure TFormXXX.MinimizarTodo(var Msg: TMessage);
 begin
  if Msg.wParam = SC_MINIMIZE then
    ShowWindow(Application.Handle, SW_MINIMIZE)
  else
   Inherited;
end;

Saluditos

ecfisa 15-07-2010 20:17:45

Cita:

Empezado por agustin173 (Mensaje 370467)
ecfisa donde debo poner este codigo en que parte de la aplicacion, porque copie lo que me diste y lo pegue y no me funciona ose me da un error que no reconoce que declare Tform1.minizartodo"

no entiendo por favor aclare un poco.

Hola Agustin.

Perdón por tardar con la respuesta pero me fuí a dormir...:o

De todos modos hubiera sido la misma que te dio cloayza.
Y sí, Caro tiene razón. ( lo que demuestra que me tendría que haber ido a dormir antes... :) )


Saludos.

agustin173 16-07-2010 02:04:11

unir formularios
 
Muchas pero muchas gracias ahora si me funciona bien estoy muy agradecido con este foro porque aparte de enseñarme me ayudan sin condicion.

Gracias a mi hermano ecfisa, que siempre me ayuda.

gracias caro y cloayza.

Nota: deben explicarme que significa el uso de etiquetas no se que, es para no volver a comerter el error y que todos nos cumuniquemos mejor.

gracias amigos.

ecfisa 16-07-2010 06:08:48

Hola Agustín.

No te preocupes que a mí el tema de las etiquetas también me trajo mal un rato largo...:)

Mirá lo de las etiquetas es así:

Tenés que poner entre corchetes determinada palabra por ejemplo, si el código que vas a poner es de Delphi seria:
"["delphi"]"
Aca pones todo el código
que queres que
aparezca identado y resaltado
"["/delphi"]"

Nota: Las comillas no van, pero debo ponerlas por que si no no aparecería la estructura del funcionamiento
de las etiquetas sino esto:
Código Delphi [-]
   Aca pones todo el código
   que queres que
   aparezca identado y resaltado

De todos modos yo uso "code" por que "delphi" suele hacerme líos despues de la vista previa...

Las diferentes etiquetas que podés usar: delphi,code,sql, ... y su resultado lo podés ver en: http://www.clubdelphi.com/foros/showthread.php?t=10004
Para probar el resultado usá el botón Vista previa de mensaje.

Saludos.

agustin173 16-07-2010 12:43:54

unir formularios
 
ok entendi gracias ecfisa tratare en la proxima de aplicarlo.

Lepe 16-07-2010 20:18:48

ecfisa, hay unas etiquetas llamadas "noparse" para estos casos, escribe lo siguiente:

[noparse]
[delphi]

tu codigo aqui

[/delphi]

[/noparse]

Yo he tenido que añadir otras etiquetas noparse adicional para que puedas ver el mensaje

Són útiles también para evitar emoticones en cadenas sql o código delphi.

ecfisa 16-07-2010 20:42:33

Muchas gracias Lepe :)

Desconocía esa etiqueta


Saludos.

urrutia_206 17-07-2010 21:12:12

necesita ayuda
 
Cita:

Empezado por urrutia_206 (Mensaje 370435)
hola alguien de ustedes me puede ayudar en un programa que tengo que hacer en consol application? con ciclos?

Cita:

Empezado por ecfisa (Mensaje 370436)
Hola urrutia y bienvenido.

Te aconsejo crear un nuevo hilo (o tema) con tu cuestión, así todos podrán verlo y contestarte.

¿ Podriás especificar un poco más ?

Saludos.

me pueden ayudar a hacer este programa>?

Sen(x)= x – x elevado a Y
y

Deberá hacer un ciclo que resuelva la potencia.
Deberá hacer un ciclo que resuelva el factorial del mismo número.
El valor de x puede ser cualquier número (par o impar).
El valor de y debe ser un número impar(validar que no sea par).
El valor de la potencia es el mismo número del factorial.


por favor me pueden ayudar en este programa que me urge hacerlo y no tengo quien me ayude.

ecfisa 20-07-2010 05:59:52

Hola urutia.

Veo no llevas mucho tiempo en el foro, te aconsejo crear un
nuevo hilo con el tus inquietudes, si no es muy probable que queden sin respuesta ;).

Bueno a ver...

Primero funciones: Potencia y Factorial. (usando ciclos)
Código:

function Potencia(x: Single; y:Integer): Double;
begin
  Result:= 1;
  while y > 0 do
  begin
    Result := Result * x;
    Dec(y);
  end;
end;
 
function Factorial(Num: Integer): LongInt;
begin
  Result:= 1;
  while Num > 1 do
  begin
    Result:= Result * Num;
    Dec(Num);
  end;
end;

Para verificar si es número:
Código:

function EsNumero(Valor: string): Boolean;
var
  n,cd: Integer;
begin
  Val(Valor, n, cd);
  Result:= cd = 0;
end;

Por último verificar a la salida de los TEdit's:
Código:

procedure TForm1.EditXExit(Sender: TObject);
begin
  if not EsNumero(EditX.Text) then
  begin
    ShowMessage('Número inválido');
    EditX.SetFocus;
  end;
end;
 
procedure TForm1.EditYExit(Sender: TObject);
begin
  if not EsNumero(EditY.Text) then
  begin
    ShowMessage('Número inválido');
    EditY.SetFocus;
    Exit;
  end;
  if not Odd(StrToInt(EditY.Text) then
  begin
    ShowMessage('Ingrese un número impar');
    EditY.SetFocus;
  end;
end;

Ejemplo de llamada:
Código:

procedure TForm1.Button1Click(Sender: TObject);
var
Pot: Double;
Fac: Longint;
begin
Pot:= Potencia(StrToFloat(EditX.Text),StrToInt(EditY.Text));
Fac:= Factorial(StrToInt(EditY.Text));
ShowMessage(FloatToStr(Pot)+' '+IntToStr(Fac));
end;

Con eso tenés las herramientas para solucionar el problema.

Nota: Como imagino que los valores de x e y son ingresados puse dos TEdit's para ello: EditX y EditY.

Saludos.


La franja horaria es GMT +2. Ahora son las 23:46:59.

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