Ver Mensaje Individual
  #1  
Antiguo 17-09-2012
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Reputación: 21
AzidRain Va camino a la fama
No funciona la sección "Inserta trucos" (dejo aportación=)

Quise agregar el siguiente snippet o trozo de código, para los puristas del leungaje, con el fin de que le sirva a alguién pero en la sección de trucos, al presionar el enlace correspondiente no aparece nada, por lo que lo dejo aquí a ver si algún mod puede echarnos la mano para que salga bien.

El código que pongo es harto simple y hasta trivial pero bastante útil. Sirve para crear o abrir una ventana hija centrada correctamente en el área de escritorio de la ventana padre.


Código Delphi [-]
Procedure CreateMDIChildNormal(Owner:TForm; BaseClass:TFormClass;  FormVar:TForm);
 var
 found:Boolean;
 i:integer;
 r:TRect;
 Placement: TWindowPlacement;
 ClWidth, ClHeight: Integer;


begin
  found := FAlse;
  GetWindowPlacement(Owner.ClientHandle, @Placement);
  ClWidth := Placement.rcNormalPosition.Right - Placement.rcNormalPosition.Left;
  ClHeight := Placement.rcNormalPosition.Bottom - Placement.rcNormalPosition.Top;
  // recorremos el array de ventanas hijas
  For i:= 0 To Owner.MDIChildCount-1 Do
    If Owner.MDIChildren[i] is BaseClass Then
    Begin
      Owner.MDIChildren[i].Show;
      found := True;
    End;
  if not found then
  Begin
     FormVar := BaseClass.Create(Owner);
     FormVar.Left := (ClWidth - FormVar.Width) div 2;
     FormVar.Top := (ClHeight - FormVar.Height) div 2;
    End;
 end;
 
end.

Ejemplo de llamada desde el form principal:
Código Delphi [-]
  CreateMDIChildNormal(Self, TMiForm,  FMiForm);

Se aprovecha el hecho de que por default Delphi crea una variable para instanaciar la clase que corresponda a nuestra form, pero nada impide que se use cualquier otra variable del mismo tipo. La función busca si ya esta instanciada la ventana hija y de ser así simplemente la muestra en primer plano en caso contrario la crea y la muestra. Partes del código son aportaciones de Román para que la ventana se centre en el área cliente de nuestra ventana padre.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita