ekrandaki su kordinatlar panel varmı yokmu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

ekrandaki su kordinatlar panel varmı yokmu

Mesaj gönderen tuanna »

ekrandaki su kordinatlar panel varmı yokmu
nasıl anlarım
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
miskin
Üye
Mesajlar: 103
Kayıt: 26 Tem 2005 02:02
Konum: Gavuristan

Mesaj gönderen miskin »

panelinin koordinatlari ile karsilastirarak
miskin
Ve Tanri, bütün kullarini davul edecek :)
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

GetControlAtPos metodunu inceleyin
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

ama panel varmı bilmyiorsunli yani sen bir kaç tane oluşturup siliyorsun ...veya kullanıcı silior..
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
miskin
Üye
Mesajlar: 103
Kayıt: 26 Tem 2005 02:02
Konum: Gavuristan

Mesaj gönderen miskin »

tuanna yazdı:ama panel varmı bilmyiorsunli yani sen bir kaç tane oluşturup siliyorsun ...veya kullanıcı silior..
Bir TList Olustur, Create yaptigin Panellerin hepsini TList'te kaydet. TListte bulunan bütün Panellerle karsilastir.

Yada MouseEventlerde, mouse move. Sender TPanel mi diye kontrol et.
Yada panel cözümün yanlis olabilir. Gereclerdeki Paint gibi birsey mi yapmak istiyorsun?
Bir de sana cevap verenlerin, daha önceki yazdiklarini incelediginden yola cikamazsin, böyle bir beklenti olamaz. Ayni konuyu 4 bes Theared de degisik getiriyorsun. Forumu kullanmada zorlaniyorsan, Forum kurallarinin altindan yardim iste!
miskin
Ve Tanri, bütün kullarini davul edecek :)
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

evet ama ben kullanıcdan bölmek istediği yerlere çizgi şeklinde paneller oluşturuyorum bunlara göre daha sonra resmibölüp parçalıyorum
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

t-hex bu metod ne kardeş biraz mümkünse açıklarsanız...
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
miskin
Üye
Mesajlar: 103
Kayıt: 26 Tem 2005 02:02
Konum: Gavuristan

Mesaj gönderen miskin »

t-hex in önerisini niye hafife aliyorsun?

[/code]

function TWinControl.ControlAtPos(const Pos: TPoint; AllowDisabled,
AllowWinControls: Boolean): TControl;
var
I: Integer;
P: TPoint;
LControl: TControl;
function GetControlAtPos(AControl: TControl): Boolean;
begin
with AControl do
begin
P := Point(Pos.X - Left, Pos.Y - Top);
Result := PtInRect(ClientRect, P) and
((csDesigning in ComponentState) and (Visible or
not (csNoDesignVisible in ControlStyle)) or
(Visible and (Enabled or AllowDisabled) and
(Perform(CM_HITTEST, 0, Longint(PointToSmallPoint(P))) <> 0)));
if Result then
LControl := AControl;
end;
end;
begin
LControl := nil;
if AllowWinControls and
(FWinControls <> nil) then
for I := FWinControls.Count - 1 downto 0 do
if GetControlAtPos(FWinControls) then
Break;
if (FControls <> nil) and
(LControl = nil) then
for I := FControls.Count - 1 downto 0 do
if GetControlAtPos(FControls) then
Break;
Result := LControl;
end;
miskin
Ve Tanri, bütün kullarini davul edecek :)
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

arkadaşlar kimsenin önerisni hafife almadım...bana gelen önerileri hafife almak değil önerileri değerlendirmek ve denemek düşer...bende deniyorum...

miskin kardeş burada verdiğin örneği nasıl kullanacağız..
En son tuanna tarafından 10 Ağu 2005 12:50 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

delphinin yardımın böle bir sey var ama

procedure GetControlInfo(AControl: TControl; var Insets: TRect; var PreferredSize, RowCount: Integer); virtual;
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

miskin

yazmış olduğun bu foksiyonu ben nasıl kullanacam...bir örnek verebilirmisin...
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
miskin
Üye
Mesajlar: 103
Kayıt: 26 Tem 2005 02:02
Konum: Gavuristan

Mesaj gönderen miskin »

Windows funktionu her control'un var. Panelin.owner i olarak verdigin komponentten cagir.

birde kesit almak icin sectigin yolu anlamiyorum. Bir Tane kesit nesnesi yaz, Form acildiginda create yap, Form kapandiginda destroy.
tuanna yazdı:arkadaşlar kimsenin önerisni hafife almadım gelen önerileri hafife almak değerlendirmek ve denemek düşer...bende deniyorum...

miskin kardeş burada verdiğin örneği nasıl kullanacağız..
miskin
Ve Tanri, bütün kullarini davul edecek :)
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

miskin beni yanlış anladın daha doğrusu yazım eksik olduğundan böle bir yanlış anlaşılma oldu özür dilerim bende düzeltim hemen ....

ama bunu nasılkullanacağımı hala anlamadım ben
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

alacağım kesit bir tane değil bir ikincisi kesitleri kullanıcıdan istiyorum kulanıcıda bana bölmek istediği noktaları seçtiğinde bende oraya panel koyuyorum...ve bu panelinkordinatların resmi alıyorum... yani almaya çalışıyorum...
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
miskin
Üye
Mesajlar: 103
Kayıt: 26 Tem 2005 02:02
Konum: Gavuristan

Mesaj gönderen miskin »

Kesitleri ard ardina alabilirsin
Asagida Paint programinda oldugu gibi calisan birseyler buldum.
Bence Windowsun gereclerindeki gibi calisabilirsin. Panel kullandigin zaman ilerde daha degisik zorluklar yasayabilirsin.

Kod: Tümünü seç

.....
Resim : TPaint;

procedure Kesitislemleri(X,Y,StartposX,StartPosY:integer); 
...

implementation

uses
var
  EskiKesit : TPoint; 
  StartPos :Tpoint;
{$R *.DFM}

procedure TForm1.KesitCiz(Canvas: TCanvas; X,Y : Integer); 
begin 
  if (X > 0) and (Y > 0) and (StartPos.X > 0) and (StartPos.Y > 0)then begin
   Canvas.Pen.Mode := pmNot; 
   Canvas.Pen.Width := 1; 
   Canvas.Brush.Style := bsClear; 
   Canvas.Rectangle(StartPos.X,StartPos.Y,X,Y); 
   Canvas.Pen.Mode := pmCopy; 
end; 

procedure TForm1.ResimMouseDown(Sender: TObject; Button: TMouseButton;  Shift: TShiftState; X, Y: Integer); 
begin 
//Paint Üzerinde  Sol kulak cekilirse
  if (ssLeft in Shift) then begin 
    StartPos.X := X; StartPos.Y := Y; 
    KesitCiz(Resim.Canvas,X,Y); 
    EskiKesit.X := X; EskiKesit.Y := Y; 
  end;
end; 

procedure TForm1.BildMouseMove(Sender: TObject; Shift: TShiftState; X, 
  Y: Integer); 
begin 
//Hala sol kulak cekiliyorsa
   if (ssLeft in Shift) then begin 
     KesitCiz(Resim.Canvas,EskiKesit.X,EskiKEsit.Y); // Eski Kesiti Siler  
     KesitCiz(Bild.Canvas,X,Y); // Yeni kesit Cizer
     EskiKesit.X := X; EskiKesit.Y := Y; 
   end; 
end; 

procedure TForm1.BildMouseUp(Sender: TObject; Button: TMouseButton; 
  Shift: TShiftState; X, Y: Integer); 

begin 
   KesitCiz(Bild.Canvas,OldMark.X,OldMark.Y); // Eski Kesiti sil
   if (ssShift in Shift) then 
     Kesitislemleri(X,Y,Startpos.X,StartPos.Y); 
     StartPos.X := 0; StartPos.Y := 0; OldMark.X := 0; OldMark.Y := 0; 
   end; 
end; 
Bu sekilde Islem yapilacak yeri göstermis olursun.

Kesitislemleri procedurunda kulalnici ile diyaloga gecersin. degisik alternatifler sunarsin.
Pointinrect funktionu ilerde isine yarayacak funktionlardan biri
miskin
Ve Tanri, bütün kullarini davul edecek :)
Cevapla