Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #17  
Antiguo 10-08-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Bueno, si es requisito imprescindible que la ventana del TPV se quede por detrás de las demás ventanas, no recomendaría trabajar con MDI.


Los problemas que te has encontrado son inherentes a los MDI, para solucionarlos hay que zambullirse en la VCL, derivar de TCustomForm haciendo tu propio MDI y modificando el comportamiento.

Para la imagen de fondo hay por ahí un código, pero la verdad, despues de usarlo y ver lo incomodo que era activar la imagen de fondo y desactivarla, dejé de usarla.

Para lo de maximizar.... bastante curioso, de hecho mirad el comentario que los hombres de borland añadieron al respecto:
(consideresé que Borland no añade casi comentarios a los fuentes, si en este caso lo hacen... por algo será )
Código Delphi [-]

// codigo original de Form.pas a partir de la linea 4417

        if FormStyle = fsMDIChild then
        begin
          { Fake a size message to get MDI to behave }
          if FWindowState = wsMaximized then
          begin
// quizás eliminando estas 2 lineas consigas lo que quieres, pero a saber
// que otro error pueda dar jejeje
            SendMessage(Application.MainForm.ClientHandle, WM_MDIRESTORE, Handle, 0);
            ShowWindow(Handle, SW_SHOWMAXIMIZED);
          end
          else
          begin
            ShowWindow(Handle, ShowCommands[FWindowState]);
            CallWindowProc(@DefMDIChildProc, Handle, WM_SIZE, SIZE_RESTORED,
              Width or (Height shl 16));
            BringToFront;
          end;
          SendMessage(Application.MainForm.ClientHandle,
            WM_MDIREFRESHMENU, 0, 0);
        end
        else
          ShowWindow(Handle, ShowCommands[FWindowState]);

Para CTRL + TAB (me picó la curiosidad ):
Código Delphi [-]

// código copiado de la unidad Forms.pas a partir de la línea 4317

procedure TCustomForm.CMDialogKey(var Message: TCMDialogKey);
begin
  if GetKeyState(VK_MENU) >= 0 then
    with Message do
      case CharCode of
        VK_TAB:
          if GetKeyState(VK_CONTROL) >= 0 then
          begin
//  cooooompadreeeeeee aqui estaaaaaaaamosssss
            SelectNext(FActiveControl, GetKeyState(VK_SHIFT) >= 0, True);
            Result := 1;
            Exit;
          end;
        VK_LEFT, VK_RIGHT, VK_UP, VK_DOWN:
          begin
            if FActiveControl <> nil then
            begin
              TForm(FActiveControl.Parent).SelectNext(FActiveControl,
                (CharCode = VK_RIGHT) or (CharCode = VK_DOWN), False);
              Result := 1;
            end;
            Exit;
          end;
      end;
  inherited;
end;

Puesto que tendríamos que sobreescribir (override) este método, lo más oportuno me parece crear una lista de Objetos con varias propiedades, de tal forma que el usuario de la forma MDI añade en esa lista las ventanas que no se desea el foco. Justo en el código de color rojo, tendríamos que comparar si la forma hija es una de las que hay en la "lista negra" y si está, pasar a otra ventana hija.

Por supuesto el derivar de esta clase y modificar su comportamiento, puede traer efectos colaterales no deseados, y solo haciendo el cambio podrás averiguar si tienes esos efectos o no.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
QReport has no parent window david duarte Impresión 1 19-01-2006 15:06:07
TreeView parent Caro OOP 4 09-11-2005 17:37:45
error : has no parent windows jorodgar Varios 5 23-05-2005 21:49:48
TTabSheet - TForm - Parent neon OOP 0 11-01-2005 16:34:03
Opciones de Parent pepelu1975 OOP 7 26-05-2004 18:35:36


La franja horaria es GMT +2. Ahora son las 11:09:40.


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