Selaminaleyküm Forumdaki kardeşlerim.Hepinize kolay gelsin.
Benim problemim şöyle....Şimdi form1 var form2 var ikiside aynı anda çalışacak. Form1 üstte form2 onun hemen altında olacak ve form1 in başlığından tutup sürükleyerek götürdüğümüz zaman form2 de form1 den ayrılmadan takip edecek.Bunu nasıl yapabilirim.
yani winamp sistemi var ya aynen onuun gibi...
Çok teşekkürlerimi sunarım
Form larla İlgili
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Gönderdiğim bu kodda iki tane form var (form1. form2) içinde hiç bir eleman koymadım.
form1. in onshow olayına form2.show ekledim.
onposchange diye bir procedure tanımladım. form1 i tutup taşıdığında form2 de taşınıcaktır.
burdaki 250 değeri form1 in yüksekliğini gösteriyor.
formhazir boolean değişkeni form1, form2 oluşmadan üzerinde işlem yapmaya çalışacağı için hata vericektir. bunu engellemek için ekledim.
iyi çalışmalar.
[/code]
form1. in onshow olayına form2.show ekledim.
onposchange diye bir procedure tanımladım. form1 i tutup taşıdığında form2 de taşınıcaktır.
burdaki 250 değeri form1 in yüksekliğini gösteriyor.
Kod: Tümünü seç
form2.Top:=top+250;
Kod: Tümünü seç
form2.Top:=top+250;
iyi çalışmalar.
Kod: Tümünü seç
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
procedure OnPosChange(var Msg: TWmWindowPosChanging); message
WM_WINDOWPOSCHANGING;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
formhazir:boolean;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.OnPosChange(var Msg: TWmWindowPosChanging);
begin
if formhazir then
begin
form2.Top:=top+250;
form2.left:=left;
end;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
form2.show;
formhazir:=true;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
form2.Close;
end;
end.
Öğrenmek ve öğretmek, akıntıya karşı yüzmek gibidir ilerleyemediğiniz taktirde gerilersiniz.
Bu iş tamam
İlk önce teşekkürlerimi sunarım.
Verdiğiniz kodla problem halloldu.Peki form2 nin başlığından tutarak form1 den bağımsız başka bir yere taşımak için ne yapmak gerekir.ve daha sonra yine form2 nin altına alarak tekrar beraber hareket ettirebiliriz.
Verdiğiniz kodla problem halloldu.Peki form2 nin başlığından tutarak form1 den bağımsız başka bir yere taşımak için ne yapmak gerekir.ve daha sonra yine form2 nin altına alarak tekrar beraber hareket ettirebiliriz.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kodları bu şekilde düzenledim. Bir problemimiz var. Problem form1 i hızlı bir şekilde hareket ettirirsen. form2 form1 e yetişemiyor 
form1'i yavaş hareket ettirirsen istediğin şeyleri yapabilirsin. Burdaki mantık form2 nin ust kısmının form1 in alanı içinde ise taşıyor değil ise form2 serbest hareket ediyor.
Aşağıda unit1.pas ın içeriğini görebilirsiniz.
iyi çalışmalar.
Bu bölümde +50,-50 form2 nin form1 in bittiği noktadaki dikey aralığı
+20,-20 form2 nin form1 in sol taraftaki konumunun yatay aralığı.
form2 bu aralıktaki bir konuma denk gelirse form1 in kontorlüaltına girer.
Bu alanın dışında olursa başına buyruk hareket eder.

form1'i yavaş hareket ettirirsen istediğin şeyleri yapabilirsin. Burdaki mantık form2 nin ust kısmının form1 in alanı içinde ise taşıyor değil ise form2 serbest hareket ediyor.
Aşağıda unit1.pas ın içeriğini görebilirsiniz.
iyi çalışmalar.
Bu bölümde +50,-50 form2 nin form1 in bittiği noktadaki dikey aralığı
+20,-20 form2 nin form1 in sol taraftaki konumunun yatay aralığı.
form2 bu aralıktaki bir konuma denk gelirse form1 in kontorlüaltına girer.
Bu alanın dışında olursa başına buyruk hareket eder.
Kod: Tümünü seç
if (form2ust<form1ust+form1boy+50) and (form2ust>form1ust+form1boy-50) then
begin
if (form2sol<form1sol+20) and (form2sol>form1sol-20) then
begin
form2.Top:=form1.top+250;
form2.left:=form1.left;
end;
end;
Kod: Tümünü seç
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
procedure OnPosChange(var Msg: TWmWindowPosChanging); message WM_WINDOWPOSCHANGING;
public
{ Public declarations }
end;
var
Form1: TForm1;
formhazir:boolean;
form1ust,form1sol,form1boy,form2ust,form2sol:integer;
implementation
uses Unit2;
{$R *.dfm}
procedure tform1.OnPosChange(var Msg: TWmWindowPosChanging);
begin
form1ust:=form1.top;
form1sol:=form1.left;
form1boy:=form1.height;
if formhazir then
begin
form2ust:=form2.top;
form2sol:=form2.left;
end;
if form1.Active then
if formhazir then
begin
if (form2ust<form1ust+form1boy+50) and (form2ust>form1ust+form1boy-50) then
begin
if (form2sol<form1sol+20) and (form2sol>form1sol-20) then
begin
form2.Top:=form1.top+250;
form2.left:=form1.left;
end;
end;
end;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
form2.show;
formhazir:=true;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
form2.Close;
end;
end.
Öğrenmek ve öğretmek, akıntıya karşı yüzmek gibidir ilerleyemediğiniz taktirde gerilersiniz.