Delphi - ¿como hacer una barra como la barra de tarea?

 
Vista:

¿como hacer una barra como la barra de tarea?

Publicado por NerCrack (7 intervenciones) el 11/08/2001 20:35:35
Hola
Estoy intentado hacer un programa de seguridad y necesito hacer una barra como la barra de inicio para que las aplicaciones se queden simple por encima y que cuando se maximize se ajuste justo a esta barra y para poder poner un reloj y toda esa historia. La verdad es que lo he visto en un programa llamado RedHand (creo) que es otro programa de seguridad y creo que se ha de poder hacer .

Gracias por la atención
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:¿como hacer una barra como la barra de tarea?

Publicado por mamcx (24 intervenciones) el 14/08/2001 00:42:28
Quieres hacerlo DENTRO de tu aplicación o que funcione de forma GLOBAL para Windows?

Dentro de tu aplicacion, es facil.

Creas un formulario MDI Parent
Le pones un menu, botones, status bar, etc...

Si quieres que se vea como el menú inicio, debes codificar un boton para que muestre el menú.... No te muestro como porque no lo he hecho...

Ahora, si quieres que funcione globalmente en windows.... ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿como hacer una barra como la barra de tarea?

Publicado por NerCrack (7 intervenciones) el 14/08/2001 15:21:24
Si en general. Se que el programa se tiene que instalar en el system.ini, para cambiar el shell por el mio. Pero no se hace hacer una barra y que se adapten a ella.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:¿como hacer una barra como la barra de tarea?

Publicado por seoane (65 intervenciones) el 15/08/2001 00:08:18
Si lo entiendo bien, lo que quieres es crear una ventana en un lado de la pantalla y que las demas ventanas al maximiza
se adapten a ella.

bien entonces aqui va un poco de codigo.
Esto es el codigo de un formulario con los eventos OnClose y OnCreate
En OnCreate se da forma a la ventana y se modifica el area de trabajo
En OnClose se deja como estaba
El procedure WMINICHANGE se utiliza por si otro programa modifica el area de trabajo
La variable OldWorkArea guarda el valor de la anterior area de trabajo y Workarea el de la nuestra
Bien, si te queda alguna duda me lo dices y te contestare, o si prefieres que te mande el codigo
completo tambien me lo dices y te lo mando por correo.

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
OldWorkArea: TRect;
Workarea: TRect;
procedure WMINICHANGE (var Msg: TMessage); message WM_WININICHANGE;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.WMINICHANGE (var Msg: TMessage);
begin
// Por si otro programa modifica el area de trabajo
SystemParametersInfo(SPI_SETWORKAREA,0,@WORKAREA,SPIF_SENDWININICHANGE);
inherited;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
//Obtenemos el area de trabajo anterior
SystemParametersInfo(SPI_GETWORKAREA,0,@OLDWORKAREA,0);
Workarea:= OldWorkArea;
// Ajustamos el tamaño, posicion y estilo de la ventana
// Sera una barra a la derecha de la pantalla
borderStyle:= bsnone;
formstyle:= fsStayOnTop;
width:= 25; // Tamaño de la barra
height:= OldWorkarea.Bottom - OldWorkarea.Top;
Top:= OldWorkarea.Top;
// Creamos un area de trabajo nueva
// El area de trabajo es el espacio que ocupa una ventana maximizada
WorkArea.Right:= OldWorkarea.Right - width;
Left:= WorkArea.Right;
SystemParametersInfo(SPI_SETWORKAREA,0,@WORKAREA,SPIF_SENDWININICHANGE);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
WORKAREA:= OLDWORKAREA;
// Volvemos a dejar el area de trabajo como estaba
SystemParametersInfo(SPI_SETWORKAREA,0,@OLDWORKAREA,SPIF_SENDWININICHANGE);
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar