Program ikonunun üstüne sürükleyip açtırma..

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Program ikonunun üstüne sürükleyip açtırma..

Mesaj gönderen varyemez »

Mesela bir text dosyayı notepad.exe ikonunun üstüne (veya notepad açıkken onun üstüne) sürükleyip çalıştırıyoruz. Bunun gibi text dosyadan bilgi okuyan bir programımız var , bahsetiğim olayı nasıl geçekleştiririz.. Param1 param2 ... şeklinde komut satırına koyarak açtırıyorum ama sürükleme işini beceremedim
Kullanıcı avatarı
muratmutlu
Üye
Mesajlar: 57
Kayıt: 02 Tem 2005 02:44
Konum: Antalya

Re: Program ikonunun üstüne sürükleyip açtırma..

Mesaj gönderen muratmutlu »

Merhaba,

Notepad örneğinden gidecek olursak eğer bunu test edebilmek için şöyle bir program yazabiliriz.

1. Boş bir proje aç.
2. Form1 in üzerine bir memo koy.
3. Form1 in OnCreate olayına aşağıdaki kodu yaz:

Kod: Tümünü seç

if FileExists(ParamStr(1)) then Memo1.Lines.LoadFromFile(ParamStr(1));
Şimdi test için programın üzerine çift tıklayarak çalıştır. Gördüğün gibi hiç bir şey olmadı. Daha sonra da exe nin üzerine herhangi bir text dosyayı sürükleyerek aç. Seninde gördüğün gibi text dosyanın içeriğini Memo1 de gösteriyor. Aslında burada ParamCount ifadesini kullanarak birden fazla parametre gelirse onları da görebilirsin.

Kod: Tümünü seç

if ParamCount>1 then
begin
for i := 1 to ParamCount do ShowMessage(ParamStr(i));
end;
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Re: Program ikonunun üstüne sürükleyip açtırma..

Mesaj gönderen varyemez »

Teşekkür ederim. Bu kod programı ilk açmak için güzel bir başlangıç. Peki program açıkken formun üstüne diğer dosyayı sürükleyip bırakmak nasıl olur?
Aslında program şöyle. Formda bir dbgrid var , dışardan belli bir desendeki csv dosyadan data alıp işliyoruz sıklıkla. bunu opendialog ile yapmanın yanısıra dosyayı dbgridin üstüne bıraksam diyorum.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Program ikonunun üstüne sürükleyip açtırma..

Mesaj gönderen mrmarman »

Bahsettiğiniz işlem (Taşı/Bırak işlemi) Drag / Drop olarak adlandırlır. File Drag/Drop olarak arama yaparsanız cevaba ulaşabilirsiniz. :ara
Resim
Resim ....Resim
Kullanıcı avatarı
muratmutlu
Üye
Mesajlar: 57
Kayıt: 02 Tem 2005 02:44
Konum: Antalya

Re: Program ikonunun üstüne sürükleyip açtırma..

Mesaj gönderen muratmutlu »

1. Boş bir proje aç.
2. Form1 in üzerine bir memo koy.
3. Form1 in OnCreate olayına aşağıdaki kodu yaz:

Kod: Tümünü seç

DragAcceptFiles( Handle, True ) ;
4. Aşağıdaki tanımlamayı formun private kısmına yapıyoruz:

Kod: Tümünü seç

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure WMDROPFILES(var msg : TWMDropFiles) ; message WM_DROPFILES;
  public
    { Public declarations }
  end;
5. Forma şöyle bir procedure ekliyoruz:

Kod: Tümünü seç

procedure TForm1.WMDROPFILES(var msg: TWMDropFiles) ;
const
   MAXFILENAME = 255;
var
  a, DosyaSayisi: integer;
  DosyaAdi: array [0..MAXFILENAME] of char;
begin
  DosyaSayisi := DragQueryFile(msg.Drop, $FFFFFFFF, DosyaAdi, MAXFILENAME) ;

  for a := 0 to -1 + DosyaSayisi do
  begin
    DragQueryFile(msg.Drop, a, DosyaAdi, MAXFILENAME) ;
    memo1.Lines.Add(DosyaAdi) ;
  end;

  // Release memory
  DragFinish(msg.Drop) ;
end;
Hepsi bukadar.

Edit : Uses Shellapi demeyi unutmuşum.
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Re: Program ikonunun üstüne sürükleyip açtırma..

Mesaj gönderen varyemez »

Tekrar çok teşekkür ederim. Her iki kod da mükemmel işimi gördü... :bravo:
Cevapla