Formu Taskbar gibi yapma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Formu Taskbar gibi yapma
Selam.
yaptığım formun winowsun taskbarı gibi davranmasını istiyorum.
yani mesela siz bir pencereyi tam ekran yaptığınız zaman pencere ekranı kaplamıyor, ancak taskbara kadar olan boş kısımları kaplıyor.
işte bunun için bende formu alwaysontop yaptım. tabii herhangibir bir pencereyi tam ekran yaptığım zaman benim programın arkasında kalıyor.
yapmak istediğim program ise longhornu bilenler varsa onun sağ köşesinde bulunan barın aynısını yapmaya çalışıyorum
umarım ne demek istediğimi anlatabilmişimdir.
yaptığım formun winowsun taskbarı gibi davranmasını istiyorum.
yani mesela siz bir pencereyi tam ekran yaptığınız zaman pencere ekranı kaplamıyor, ancak taskbara kadar olan boş kısımları kaplıyor.
işte bunun için bende formu alwaysontop yaptım. tabii herhangibir bir pencereyi tam ekran yaptığım zaman benim programın arkasında kalıyor.
yapmak istediğim program ise longhornu bilenler varsa onun sağ köşesinde bulunan barın aynısını yapmaya çalışıyorum
umarım ne demek istediğimi anlatabilmişimdir.
[ F X E R K A N © - E r k a n Ç İ F T Ç İ ]
Hiç denemedim fakat formun align özelliğini ayarlarsan olabilir.
sağ-sol-alt-üst tarafa ayarlarsan arkada yada üstte kalmaz diye düşünüyorum sen bir dene
sağ-sol-alt-üst tarafa ayarlarsan arkada yada üstte kalmaz diye düşünüyorum sen bir dene

Oldeye Software
http://www.oldeye.com
http://www.oldeye.com
Kod: Tümünü seç
// form'a button ve Label koymayı unutma...
uses shellapi;
function FindTaskBar(var ARect: TRect): Integer;
var
AppData: TAppBarData;
begin
// 'Shell_TrayWnd' is the name of the task bar's window
AppData.Hwnd := FindWindow('Shell_TrayWnd', nil);
if AppData.Hwnd = 0 then
RaiseLastWin32Error;
AppData.cbSize := SizeOf(TAppBarData);
// SHAppBarMessage will return False (0) when an error
// happens.
if SHAppBarMessage(ABM_GETTASKBARPOS, AppData) = 0 then
raise Exception.Create('SHAppBarMessage returned false when trying ' +
'to find the Task Bar''s position');
// Otherwise, we had success, so fill in the results.
Result := AppData.uEdge;
ARect := AppData.rc;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Rect: TRect;
DestLeft: Integer;
DestTop: Integer;
begin
DestLeft := Left;
DestTop := Top;
case FindTaskBar(Rect) of
ABE_BOTTOM:
begin
DestLeft := Trunc((Screen.Width - Width) / 2.0);
DestTop := Rect.Top - Height;
end;
ABE_LEFT:
begin
DestTop := Trunc((Screen.Height - Height) / 2.0);
DestLeft := Rect.Right;
end;
ABE_RIGHT:
begin
DestTop := Trunc((Screen.Height - Height) / 2.0);
DestLeft := Rect.Left - Width;
end;
ABE_TOP:
begin
DestLeft := Trunc((Screen.Width - Width) / 2.0);
DestTop := Rect.Bottom;
end;
end;
Label1.Caption := Format('Found at Top: %d Left: %d Bottom: %d Right: %d)',
[Rect.Top, Rect.Left, Rect.Bottom, Rect.Right]);
// Move us to the task bar
while (Left <> DestLeft) or (Top <> DestTop) do
begin
if Left < DestLeft then
Left := Left + 1
else if Left <> DestLeft then
Left := Left - 1;
if Top < DestTop then
Top := Top + 1
else if Top <> DestTop then
Top := Top - 1;
Application.ProcessMessages;
end;
end;
Kolay Gelsin...
Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
husonet
abicim gönderdiğin kod için teşekkür ederim ama galiba sorunumu tam izah edememişim
sorun şu abicim
benim formumum
borderstylı : bsNone
Formstyle : fsStayOnTop
form ekranın sağ kısmında hizalı bir şekilde duruyor
şimdi yapmak istediğim şey şu şekilde
bu form daima ekranın sağında duracak stayontop biçiminde
ben mesela masaüstünde başka bir pencere açıpta bunu tam ekran yaptığım zaman
bu pencere ekranı kaplıyor ve benim formumum altında kalıyor. işte ben bu altta kalma olayını
engellemek istiyorum
aynen windowsun taskbarı gibi,
bunu nasıl yapabilirm sormak istediğim buydu işte
abicim gönderdiğin kod için teşekkür ederim ama galiba sorunumu tam izah edememişim
sorun şu abicim
benim formumum
borderstylı : bsNone
Formstyle : fsStayOnTop
form ekranın sağ kısmında hizalı bir şekilde duruyor
şimdi yapmak istediğim şey şu şekilde
bu form daima ekranın sağında duracak stayontop biçiminde
ben mesela masaüstünde başka bir pencere açıpta bunu tam ekran yaptığım zaman
bu pencere ekranı kaplıyor ve benim formumum altında kalıyor. işte ben bu altta kalma olayını
engellemek istiyorum
aynen windowsun taskbarı gibi,
bunu nasıl yapabilirm sormak istediğim buydu işte
[ F X E R K A N © - E r k a n Ç İ F T Ç İ ]
baska bir forumda gozume carptı
basit bir api varmıs SystemParametersInfo diye:)
basit bir api varmıs SystemParametersInfo diye:)
Kod: Tümünü seç
procedure TForm1.FormCreate(Sender: TObject);
var
aRect: TRect;
begin
BorderStyle:= bsNone;
Top := 0;
Left := 0;
Width := Screen.Width;
Height := 41;
FormStyle := fsStayOnTop;
aRect.Top :=45;
aRect.Left := 0;
aRect.Right := Screen.Width;
aRect.Bottom := Screen.Height;
SystemParametersInfo(SPI_SETWORKAREA, 0, @aRect, 0);
end;
ÜŞENME,ERTELEME,VAZGEÇME
Selam.
- @gkimirti'nin verdiği kodlar geçerlidir.
aRect.Top := 0;
aRect.Left := 0;
aRect.Right := Screen.Width - Formunuz.Width; //gibi bir alan sizin dışınızdaki program formlarına kalacak alandır.
aRect.Bottom := Screen.Height;
- Formun Maximize - Minimize olaylarını Widnows mesajlarından takip edin. Form Resize'da WindowState kontrolü geç kalabilir. Bir deneyin ama mesaj kontrolü daha hızlı sonuç verir.
- Sadece dikkat edeceğiniz işlem; iki kere Maximize Window yapılmasına izin verirseniz, formunuz kendi belirleyeceğini sınırlarınızın dışına atılır.
- Formun width değerini sınırlayıp, Align özelliğini alRight yaptığınızada da aynı ICQ gibi bir formunuz olur.
- Eklenecek bir durum ise ekranda aktif pencereleri de aratıp, bunlardan Maximized durumda olanları Restore edip tekrar maximize ettirmelisiniz ki sizin formunuzdan geriye kalan alana uyum sağlayabilsinler.
- @gkimirti'nin verdiği kodlar geçerlidir.

aRect.Top := 0;
aRect.Left := 0;
aRect.Right := Screen.Width - Formunuz.Width; //gibi bir alan sizin dışınızdaki program formlarına kalacak alandır.
aRect.Bottom := Screen.Height;
- Formun Maximize - Minimize olaylarını Widnows mesajlarından takip edin. Form Resize'da WindowState kontrolü geç kalabilir. Bir deneyin ama mesaj kontrolü daha hızlı sonuç verir.
- Sadece dikkat edeceğiniz işlem; iki kere Maximize Window yapılmasına izin verirseniz, formunuz kendi belirleyeceğini sınırlarınızın dışına atılır.
- Formun width değerini sınırlayıp, Align özelliğini alRight yaptığınızada da aynı ICQ gibi bir formunuz olur.
- Eklenecek bir durum ise ekranda aktif pencereleri de aratıp, bunlardan Maximized durumda olanları Restore edip tekrar maximize ettirmelisiniz ki sizin formunuzdan geriye kalan alana uyum sağlayabilsinler.