![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
|
Dos ventanas activas
¿Cómo puede hacerse para abrir una segunda ventana y que la primera siga estando activa, o por lo menos que lo parezca?
Me explico. En varias aplicaciones, por ejemplo MS Word, cuando colocamos una barra de herramientas como una ventana independiente, tanto la barra como la ventana principal tienen su barra de título en azul. Pienso que esto podría servirme pero concretamente lo que quiero hacer es simular una lista desplegable creando yo mi propia ventana en donde desplegar sus elementos. Esto puedo hacerlo con una ventana sin borde que coloco en la posición deseada pero al mostrar la lista se desactiva la ventana desde la que la abrí, detalle que quisiera evitar. Por ejemplo, en el IDE de Delphi, cuando se muestra la lista de métodos y propiedades de un objeto no se desactiva la ventana del editor. ¿Alguien sabe como puedo lograr esto? // Gracias |
|
#2
|
||||
|
||||
|
Si quieres puedes ver ese código de las RX, en los componentes TDateEdit, TRxCalc.
Igualmente te cuento que yo tengo hecho algo así, de cero, de no servirte, te puedo pasar un resumen de como lo hago. Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
|
|
#3
|
||||
|
||||
Me faltó un detalle: creo que los popups nunca reciben el foco realmenteSaludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Última edición por delphi.com.ar fecha: 30-06-2003 a las 19:05:16. |
|
#4
|
||||
|
||||
|
Cita:
Si puedes resumirme lo que me cuentas estaría perfecto. Gracias! |
|
#5
|
||||
|
||||
|
Este es un combo mío que despega un CheckListBox:
Código:
TPopupCheckList = class(TCheckListBox)
private
protected
procedure KeyPress(var Key: Char); override;
procedure CreateWnd; override;
procedure CreateParams(var Params: TCreateParams); override;
public
constructor Create(AOwner: TComponent); override;
published
end;
inplementation
{ TPopupCheckList }
constructor TPopupCheckList.Create(AOwner: TComponent);
begin
inherited;
Visible := False;
end;
procedure TPopupCheckList.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do begin
Style := Style or WS_BORDER;
ExStyle := WS_EX_TOOLWINDOW or WS_EX_TOPMOST;
AddBiDiModeExStyle(ExStyle);
WindowClass.Style := CS_SAVEBITS;
end;
end;
procedure TPopupCheckList.CreateWnd;
begin
inherited CreateWnd;
if not (csDesigning in ComponentState) then begin
Windows.SetParent(Handle, 0);
CallWindowProc(DefWndProc, Handle, WM_SETFOCUS, 0, 0);
end;
end;
procedure TPopupCheckList.KeyPress(var Key: Char);
begin
if (Key = #27) or (Key = #13) Then
TCustomCheckCombo(Owner).CloseUp
else
...
end;
end;
Código:
constructor TCustomCheckCombo.Create(AOwner: TComponent);
begin
inherited;
PopupWindow := TPopupCheckList.Create( Self );
PopupWindow.Parent := Self;
PopupWindow.Visible := False;
...
end;
procedure TCustomCheckCombo.DropDown;
begin
{ Calcula la posicion y tamaño del Popup .... }
...
Windows.SetParent(PopupWindow.Handle, 0);
PopupWindow.Visible := True;
SetWindowPos(PopupWindow.Handle, HWND_TOP, P.X, vPos, 0, 0, SWP_NOSIZE or SWP_NOACTIVATE or SWP_SHOWWINDOW);
SetActiveWindow(PopupWindow.Handle);
end;
procedure TCustomComboEditor.CloseUp;
begin
SetWindowPos(PopupWindow.Handle, 0, 0, 0, 0, 0, SWP_NOZORDER or SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE or SWP_HIDEWINDOW);
PopupWindow.Visible := False;
end;
Espero que te sirva, creo no haber olvidado nada, si notas los nombres de las clases te darás cuenta que tengo todo un árbol de jerarquías con esto, así que no fue fácil "resumirlo", Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
|
|
#6
|
||||
|
||||
|
Muchas gracias por tu resumen y por el tiempo dedicado a ello. Voy a revisarlo y estudiarlo con cuidado.
// Saludos |
![]() |
|
|
|