Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];




Вниз

Как создать форму, похожую на ICQ 


sdn   (2002-02-01 19:15) [0]

Доброго времени суток!
Не подскажите, как создать форму похожую на ICQ, в смысле, чтоб она "прилипала" к desktop`у и имела возможность "auto hide". Есть какие-нибудь идеии по этому поводу? В интернете видел только один подобный компонент, точнее его demo. С автором связаться не удалось, что, чесно говоря сильно огорчило.


С наилучшими пожеланиями,
Дмитрий
ICQ: 58245670
Odigo: 6549174



Polevi   (2002-02-01 22:14) [1]

Application Desktop Toolbars



Mixan   (2002-02-02 19:43) [2]

Насчет прилипала:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TfrMain = class(TForm)
edStickAt: TEdit;
Label1: TLabel;
chkTop: TCheckBox;
chkBottom: TCheckBox;
chkRight: TCheckBox;
chkLeft: TCheckBox;
procedure edStickAtKeyPress(Sender: TObject; var Key: Char);
private
procedure WMWINDOWPOSCHANGING (Var Msg: TWMWINDOWPOSCHANGING); message WM_WINDOWPOSCHANGING;
public
{ Public declarations }
end;

var
frMain: TfrMain;

implementation
{$R *.DFM}


procedure TfrMain.WMWINDOWPOSCHANGING (var Msg: TWMWINDOWPOSCHANGING);
const
Docked: Boolean = FALSE;
var
rWorkArea: TRect;
StickAt : Word;
begin
StickAt := StrToInt(edStickAt.Text);

SystemParametersInfo (SPI_GETWORKAREA, 0, @rWorkArea, 0);

with Msg.WindowPos^ do begin
if chkLeft.Checked then
if x <= rWorkArea.Left + StickAt then begin
x := rWorkArea.Left;
Docked := TRUE;
end;

if chkRight.Checked then
if x + cx >= rWorkArea.Right - StickAt then begin
x := rWorkArea.Right - cx;
Docked := TRUE;
end;

if chkTop.Checked then
if y <= rWorkArea.Top + StickAt then begin
y := rWorkArea.Top;
Docked := TRUE;
end;

if chkBottom.Checked then
if y + cy >= rWorkArea.Bottom - StickAt then begin
y := rWorkArea.Bottom - cy;
Docked := TRUE;
end;

if Docked then begin
with rWorkArea do begin
// no moving out of the screen
if x < Left then x := Left;
if x + cx > Right then x := Right - cx;
if y < Top then y := Top;
if y + cy > Bottom then y := Bottom - cy;
end; {with rWorkArea}
end; {if Docked}
end; {with Msg.WindowPos^}

inherited;
end;

procedure TfrMain.edStickAtKeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ["0".."9"]) then Abort;
end;

end.




Форум: "WinAPI";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.021 c
1-100             Maybe                 2002-03-20 15:58  2002.04.01  
экземпляры различных классов в одной коллекции


1-163             Max                   2002-03-22 08:32  2002.04.01  
Delphi 5 + W2k


14-302            Алексей Петров (M)    2002-02-15 11:56  2002.04.01  
2 Merlin: Убери, Please, от меня большую синию (M)


3-57              sevylor               2002-03-08 05:30  2002.04.01  
clone


7-336             Dorixe                2001-12-26 16:00  2002.04.01  
SetLocaleInfo