mouse cursor yapımı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

mouse cursor yapımı

Mesaj gönderen nitro »

merhaba, yaptığım programda kendi programıma özel bir muose cursor kullanmak istiyorum. cursor yapım programları indirdim. kurdum. yaptım ama benim istediğim ne animated cursor ne de standart cursor, benim istediğim normal dururken standart, tıklandığı zaman şekil değiştiren cursor yapmak. başka bir programda görmüştüm, normal bildiğimiz el şeklindeki cursor, tıklayınca kapanıyordu, yani tıklayınca objeyi tutmuş gibi oluyordu.
bilmem anlatabildim mi?

bu tür cursorları yapabileceğim program var mı?
ve yaparsam bunu delphide kullanabilirmiyim?
Akin_Delphi
Üye
Mesajlar: 163
Kayıt: 06 Nis 2006 12:22

Re: mouse cursor yapımı

Mesaj gönderen Akin_Delphi »

nitrokonat yazdı:merhaba, yaptığım programda kendi programıma özel bir muose cursor kullanmak istiyorum. cursor yapım programları indirdim. kurdum. yaptım ama benim istediğim ne animated cursor ne de standart cursor, benim istediğim normal dururken standart, tıklandığı zaman şekil değiştiren cursor yapmak. başka bir programda görmüştüm, normal bildiğimiz el şeklindeki cursor, tıklayınca kapanıyordu, yani tıklayınca objeyi tutmuş gibi oluyordu.
bilmem anlatabildim mi?

bu tür cursorları yapabileceğim program var mı?
ve yaparsam bunu delphide kullanabilirmiyim?
Sayın Nitrokonat,

Umarım yanlış anlamıyorumdur bunun doğrudan kursor yapım programlarıyla ilgisi yok. Daha çok programlama sorusu. İlgili nesneyi aldıktan sonra cursor:= (Sizin Kursorunuz) yapacaksınız. Nesneyi bıraktıktan sonra da cursor := (Eski kursor) yaparsanız sorununuz çözülür.

Saygılar ve başarılar
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

aslında doğru, haklısınız. formdaki tüm objelerin onmouse down eventine kursor değiştirme kodu yazmalıyım, onmouseuo eventlerinde de tekrar eski cursor'a dönüş yapan kod yazmalıyım. peki cursorlari exenin içine nasıl gömebilirim? ben en iyisi bi arama yapayım bu konuda.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
resource file yaparak gömebilirsin,
delphi ile birlikte gelen imageedit ile cursorları hazırlayıp
res dosyası olarak kaydedersin.
daha sonra
{$R mycursor.res}
satırı ile o dosyanın da derlenmesini sağlarsın.
programdan kullanma kısmını şu an hatırlamıyorum ama onunda bi load komutu vardı.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

cur dosyasını image editor ile açtım ama save as kısmında res olarak kaydedemiyorum. ben mi yanlış yapıyorum. arama yaptım, dosyaları exeye gömmekle ilgili makale buldum ama rc dosyası oluşturmayı bulamadım.
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

rc dosyasını oluşturdum ve forma {$R mycur.res} olarak ekledim.
formun create olayına kodu yazıyorum ama banamısın demiyor.

Kod: Tümünü seç

 Form2.Cursor :=LoadCursor(hInstance,'mynormalcur');
kodu hiç bir işe yaramıyor.

EDİT:

Kod: Tümünü seç

 Form2.Cursor :=LoadCursor(hInstance,'mynormalcur');
yerine

Kod: Tümünü seç

 Form2.Cursor :=LoadCursor(hInstance,'mynolcur');
yazdım hata bile vermedi. oysa res dosyasında mynolcur diye bişey yok.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam...

- RC dosyan içine animasyonlu olmayanları normal kaydedebilirsin ama animated cursor'leri RT_RCDATA olarak kaydetmen gerekiyor.

- Bir projem için Resource'dan ilgili animated cursoru alması için bir fonksiyon yazmıştım.

- RESOURCE içerisinde ANI_1, ANI_2 ve ANI_3 olmak üzere üç adet animated cursor olsun.

Kod: Tümünü seç

Function MousePointer(Idx:Word):Word;
Var
  CursorDosyasi : String;
  ResStream  : TResourceStream; // uses Classes
begin
  CursorDosyasi := ExtractFilePath(Application.ExeName)+'X.ANI';
  ResStream := Nil;
  Case Idx of
    1: ResStream  := TResourceStream.Create(HInstance, 'ANI_1',   RT_RCDATA);
    2: ResStream  := TResourceStream.Create(HInstance, 'ANI_2',   RT_RCDATA);
    3: ResStream  := TResourceStream.Create(HInstance, 'ANI_3',   RT_RCDATA);
  end; //Case
  ResStream.SaveToFile(CursorDosyasi);
  Screen.Cursors[Idx] := LoadCursorFromFile(PChar(CursorDosyasi));
  DeleteFile(CursorDosyasi);
  ResStream.Free;
  Result := Idx;
end;
- Kullanılışı da...

Kod: Tümünü seç

  Edit1.Cursor  := MousePointer(2);
gibi bir kullanım.
En son mrmarman tarafından 20 Haz 2006 12:21 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Resim
Resim ....Resim
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

Delphi helpde şöyle bişey var;

Kod: Tümünü seç

const

  crMyCursor = 5;
procedure TForm1.FormCreate(Sender: TObject);
begin
  Screen.Cursors[crMyCursor] := LoadCursor(HInstance, 'NewCursor');
  Cursor := crMyCursor;
end;
işe yararmı bilmiyorum..kolay gelsin
Kullanıcı avatarı
Z.D.
Üye
Mesajlar: 104
Kayıt: 01 Nis 2006 01:48
Konum: İstanbul

Mesaj gönderen Z.D. »

x:\WINDOWS\Cursors\ klasöründen 3 tane cursor seçeriz

notepad ile aliveli.rc uzantılı bi dosya oluşturup

Kod: Tümünü seç

Cursor1    CURSOR "pen_il.cur"
Cursor2    CURSOR "3dgarro.cur"
Cursor3    CURSOR "hmove.cur"
kaydederiz. bitanede bat dosyası oluştururuz "Kısayol.bat"

Kod: Tümünü seç

..\brcc32.exe aliveli.rc
pause
yazıp kaydederiz. aldığımız 3 cursoru, ve oluşturduğpuz dosyaları bi klasör oluşturup içine atarız. daha sonra bu klasörü "X:\Program Files\Borland\Delphi7\Bin\" dizinine kopyaladıktan sonra "Kısayol.bat" dosyasına çift tıklarız.

Resource dosyamız oluşmuş olur. delphi tarafındada 3 buton koyup forma , cursorlar üzerine basit bir örnek yapabiliriz.

Kod: Tümünü seç

Unit Unit1;

Interface

Uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

Type
  TForm1 = Class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Panel1: TPanel;
    Label1: TLabel;
    Procedure Button1Click(Sender: TObject);
    Procedure Button2Click(Sender: TObject);
    Procedure Button3Click(Sender: TObject);
    Procedure FormCreate(Sender: TObject);
    Procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    Procedure Label1Click(Sender: TObject);
  Private
    { Private declarations }
  Public
    { Public declarations }
  End;

Var
  Form1: TForm1;
//====================================================================
// Ben örnek açısından eski cursorların handlelerinide alıyorum, ama
// gereksiz, isterseniz almayabilirsiniz ben örnek için yapıyorum
//====================================================================
  EskiCursor1: HCursor;
  EskiCursor2: HCursor;
  EskiCursor3: HCursor;

Const
//====================================================================
// Resource dosyamızdan aldığımız cursorlara birer const id(sabit) atayalım
// Dialogdan erişim için bu lazım.
//====================================================================
  YeniCursor1 = 123;
  YeniCursor2 = 124;
  YeniCursor3 = 125;
Implementation

//====================================================================
// derleyici oluşturduğumuz *.res dosyasınıda dialoga rcdata olarak eklesin
//====================================================================
{$R *.dfm}
{$R aliveli.RES}


//====================================================================
// dialogdaki controller oluştururken bizde cursorları yükleyelim
// ayrıca eski cursorlarıda alalım, üzerine set ettiğimizde controllerin,
// örnek için ben geride yüklüyorum. eski handlelerde lazım olucak oyüzden.
//====================================================================

Procedure TForm1.FormCreate(Sender: TObject);
Begin
  Screen.Cursors[YeniCursor1] := LoadCursor(hInstance, 'Cursor1');
  EskiCursor1 := Button1.Cursor;
  Screen.Cursors[YeniCursor2] := LoadCursor(hInstance, 'Cursor2');
  EskiCursor2 := Button2.Cursor;
  Screen.Cursors[YeniCursor3] := LoadCursor(hInstance, 'Cursor3');
  EskiCursor3 := Button3.Cursor;
End;


//====================================================================
// panel1 üzerinde hcursor ne? eğer yeni cursorsa eskiyi,
// eski cursorsa yeniyi set ediyorum
//====================================================================
Procedure TForm1.Button1Click(Sender: TObject);
Begin
  If Panel1.Cursor = YeniCursor1 Then
    Panel1.Cursor := EskiCursor1
  Else
    Panel1.Cursor := YeniCursor1;
End;

//====================================================================
// ana formun üzerinde, yani çalışma alanındaki cursor için
// ////     ///   /////// ///// aynısı..
//====================================================================
Procedure TForm1.Button2Click(Sender: TObject);
Begin
  If Form1.Cursor = YeniCursor2 Then
    Form1.Cursor := EskiCursor2
  Else
    Form1.Cursor := YeniCursor2;
End;


Procedure TForm1.Button3Click(Sender: TObject);
Begin
  If Button3.Cursor = YeniCursor3 Then
    Button3.Cursor := EskiCursor3
  Else
    Button3.Cursor := YeniCursor3;
End;


//====================================================================
// cursor1 panel1 üzerine geldiğinde, label nesnesini kontrol ediyorum
// örnek için.. eski cursor ise return, yeniyse hareketli.
//====================================================================
Procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
Begin
  If Panel1.Cursor = EskiCursor1 Then
    exit;
  Label1.Left := X;
  Label1.Top := Y;
End;

//====================================================================
// panel üzerine tıkladığında eski cursoru yüklüyorum. böylece hareket
// iptal ediliyor..
//====================================================================
Procedure TForm1.Label1Click(Sender: TObject);
Begin
  Panel1.Cursor := EskiCursor1
End;

End.
http://rapidshare.de/files/23532887/Cursor.zip.html
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

arkadaşlar cevaplarınız ışığında olayı hallettim.
hepinize çok teşekkürler.
Allah razı olsun.
Cevapla