Te paski na pasku zadań.

0

Hm... Tak cały czas główkuje też nad tym jak zrobić drugi no...ten...no wiecie co na pasku zadań jest pasek od aplikacji no to chce zrobić osobny dla drugiej formy - żeby była nie zależna.
Doszedłem do takiego miejsca:

SetWindowLong(Form2.Handle,GWL_EXSTYLE,WS_EX_APPWINDOW);

Jeżeli wpiszemy takie cosik i pokażemy drugą formę to pojawi się osobny pasek dla niej i tylko dla niej, ale niestety zależny dalej od projektu, tzn jeżeli zminimalizujemy okno główne to wtedy WSZYSTKO zrzuci się do tego głównego paska projektu.

Czy ktoś zna gotowe rozwiązanie lub może coś wykombinuje z tego?
W tej chwili to szukam po innych stronach rozwiązania :).

O wiem.. to można chyba nazwać belki.--Pozdrowienia,
Imperior

0

eee co? nie wiem o co ci chodzi ale czytaj dalej :)

otóż jeżeli chcesz aby w 2 formatce nie było normalnego paska to daj w objectinspector borderstyle na bsnone :)

I ja to tak zrozumiałem a jeżeli chcesz zrobić własn pasek to zrób takie coś.
stwórz jakiś tam komponent aby emulował pasek i następnie takie coś (funkcja drag and drop)

czyli: Przestudjuj ten kod z mojego programu może coś wyciągniesz z niego...

unit Unit5;

interface

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

type
TForm5 = class(TForm)
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
Label1: TLabel;
procedure SpeedButton1Click(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure SpeedButton2Click(Sender: TObject);
procedure Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Label1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);

private
x2, y2 : integer;
can : boolean;
public

end;

var
Form5: TForm5;

implementation

uses Unit1;

{$R *.DFM}

procedure TForm5.SpeedButton1Click(Sender: TObject);
begin
form1.close;
end;

procedure TForm5.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
p :TPoint;
begin
if button = mbleft then
begin
getcursorpos(p);
form5.left := p.x - 72;
form5.top := p.y - 16;
form1.left := p.x - 72;
form1.top := p.y;
can := true;
end;
end;

procedure TForm5.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button = mbleft then
begin
can := false;
end;
end;

procedure TForm5.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
p : TPoint;
begin
if can = true then
begin
getcursorpos(p);
form5.left := p.x - 72;
form5.top := p.y - 16;
form1.left := p.x - 72;
form1.top := p.y;
end;
end;

procedure TForm5.SpeedButton2Click(Sender: TObject);
begin
if form1.WindowState = wsnormal then
begin
form5.left := 0;
form5.top := 0;
form1.WindowState := wsminimized;
end else
begin
form1.WindowState := wsnormal;
form5.top := form1.Top - 16;
form5.left := form1.left;
end;

end;

procedure TForm5.Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
p : TPoint;
begin
if button = mbleft then
begin
getcursorpos(p);
form5.left := p.x - 72;
form5.top := p.y - 16;
form1.left := p.x - 72;
form1.top := p.y;
can := true;
end;
end;

procedure TForm5.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
p : TPoint;
begin
if can = true then
begin
getcursorpos(p);
form5.left := p.x - 72;
form5.top := p.y - 16;
form1.left := p.x - 72;
form1.top := p.y;
end;
end;

procedure TForm5.Label1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button = mbleft then
begin
can := false;
end;
end;
end.

i to wszystko Pozdro

0

To napisze to inaczej :)
Bo to nie o to mi chodzi.
Na dole ekranu (dowolny windows :) jest przycisk start, a obok niego każdy program ma swój pasek(dalej nazywany belką) i chcę aby druga forma w moim programie miała osobną belkę i , żeby ta forma z jej belką była niezależna od belki programu. Przykład: Gadu-Gadu - okienko rozmowy ma swoją niezależną belkę.

A tak poza tym to mogłeś sprawdzić ten kod co podałem i byś wiedział o co chodzi :)--Pozdrowienia,
Imperior

0

Znalazłem roziązanie które mi na razie w zupełności wystarcza.
Otóż zauważyłem, że gadu gadu nie ma pokazanego głównej belki programu, a więc:

  1. Jak ukryć program z paska zadań?
    Pasek musi być ukryty zanim stworzone zostaną formy. Poniższy kod należy więc dodać do źródła projektu ( Project | View Source ). Tak powinna wyglądać całość:

program Project1;

uses
Forms,
Windows,
Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

var
Ex : Integer;

begin
Application.Initialize;

Ex:=GetWindowLong(Application.Handle, GWL_EXSTYLE);
SetWindowLong(Application.Handle,GWL_EXSTYLE,
Ex or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);

Application.CreateForm(TForm1, Form1);
Application.Run;
end.

Program jest ukrywany z paska zadań dzięki parametrowi WS_EX_TOOL_WINDOW.

a potem dla nowej formy dajemy

SetWindowLong(Form1.Handle,GWL_EXSTYLE,WS_EX_APPWINDOW);

wtedy jest niezależny :)
główną formę można ukrywać i chować dowoli.--Pozdrowienia,
Imperior

1 użytkowników online, w tym zalogowanych: 0, gości: 1