Cursorun Yanında koordinatlarını nasıl gösterebiliriz?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
kahraman1285
Üye
Mesajlar: 360
Kayıt: 10 Nis 2006 09:07

Cursorun Yanında koordinatlarını nasıl gösterebiliriz?

Mesaj gönderen kahraman1285 »

İmlec form üzerinde gezerken yanında koordinatlarının gözükmesini istiyorum.

Bunu hint özelliğinin pause süresiyle oynayarak yapmaya çalıştım ama istediğim gibi olmadı.

imleci form üzerinde gezdiriken Cursorun yanında sürekli olarak koordinatlarını gösterebileceğim bi compopnent yada tavsiye edeceğiniz bi uygulama var mı?

Teşekkürler...
Mysterio
Üye
Mesajlar: 44
Kayıt: 18 Eki 2006 01:42

Mesaj gönderen Mysterio »

formun bir köşesine bunu yazdırmak daha kolay olmazmıydı?
illa yanında olması şart mı?
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

CM_HINT_SHOW mesajını yakalayın. TForm1 ile end arasına imleci getirin ve control+space tuşuna basın. CMHINT yazin, zaten listede ilk mesaj handler olarak CM_HINT_SHOW gelecektir.

ReShowTimeout, ne kadar süreyle tazeleyeciğini belirtir.
HintStr ise ipucu olarak ne görüntüleneciğini belirtir.
rengi vs'yi de değiştirebilirsiniz.

Kod: Tümünü seç

procedure TForm1.CMHintShow(var Message: TCMHintShow);
begin
  with Message.HintInfo^ do begin
    ReshowTimeout := 1;
    HintStr := Format('%d:%d',[Mouse.CursorPos.X,Mouse.CursorPos.Y]);
  end;
end;
Kolay gelsin
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@t-hex +1

- ScreenToClient deyip koordinatları form sınırlarına dönüştürmek lazım gelebilir.

Kod: Tümünü seç

   procedure CMHintShow(var Msg: TCMHintShow); message CM_HINTSHOW;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

Kod: Tümünü seç

procedure TForm1.CMHintShow(var Msg: TCMHintShow);
Var
  P : TPoint;
begin
  P := ScreenToClient( Mouse.CursorPos );
   with Msg.HintInfo^ do begin
    ReshowTimeout := 1;
    HintStr := Format('%d:%d',[P.X, P.Y]);
  end;
end;
Resim
Resim ....Resim
kahraman1285
Üye
Mesajlar: 360
Kayıt: 10 Nis 2006 09:07

Mesaj gönderen kahraman1285 »

Cevaplar için herkese çok teşekkürler.
Beni büyük bi uğraştan kurtardınız.

Run time da create edeceğim nesnelerin ölçülerini kullanıcıya göstermek için kullanacam.Kendime göre uyarladım.

Kod: Tümünü seç

procedure Tanasayfa.CMHintShow(var Msg: TCMHintShow);
Var 
  P : TPoint; 
begin 
  P := ScreenToClient( Mouse.CursorPos );
  if PozisyonGoster=true then
  begin
   with Msg.HintInfo^ do begin
    ReshowTimeout := 1;
   // HintStr := Format('%d:%d',[P.X, P.Y]);
    HintStr:=Format('Genişlik: %d:  Yükseklik: %d',[bitx , bity]);
  end;
  end;

end;

procedure TAnaSayfa.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
BasX:=x;
basy:=y;
PozisyonGoster:=true;
CmdShow:=1;

end;

procedure TAnaSayfa.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
  begin
Bitx:=abs(x-basx);
bity:=abs(y-basy);
if ResimCiz=true then ImageNesnesiCreate(sender);
if FlashCiz=true then FlashNesnesiCreate(sender);
PozisyonGoster:=false;

end;

procedure TAnaSayfa.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
begin
Bitx:=abs(x-basx);
bity:=abs(y-basy);

end;


  PozisyonGoster:boolean=false;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Ek olarak hoş olabileceğini değerlendirdiğim bir eklenti... 8)

Kod: Tümünü seç

procedure Tanasayfa.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Bitx := abs(x-basx);
  Bity := abs(y-basy);
  if ssLeft in Shift then
  begin
    anasayfa.Repaint;
    anasayfa.Canvas.DrawFocusRect( Rect( BasX, BasY, X, Y ) );
  end;
end;
Afiyet olsun. Belki lazım olur...
Resim
Resim ....Resim
kahraman1285
Üye
Mesajlar: 360
Kayıt: 10 Nis 2006 09:07

Mesaj gönderen kahraman1285 »

mrmarman yazdı:Ek olarak hoş olabileceğini değerlendirdiğim bir eklenti... 8)
Evet Tam olarak yapmak istediğim buydu.... :D :D :D

Teşekkürler @mrmarman
Cevapla