Program ikonunun üstüne sürükleyip açtırma..
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Program ikonunun üstüne sürükleyip açtırma..
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
- muratmutlu
- Üye
- Mesajlar: 57
- Kayıt: 02 Tem 2005 02:44
- Konum: Antalya
Re: Program ikonunun üstüne sürükleyip açtırma..
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:
Ş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.
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));
Kod: Tümünü seç
if ParamCount>1 then
begin
for i := 1 to ParamCount do ShowMessage(ParamStr(i));
end;
Re: Program ikonunun üstüne sürükleyip açtırma..
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.
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.
Re: Program ikonunun üstüne sürükleyip açtırma..
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. 

- muratmutlu
- Üye
- Mesajlar: 57
- Kayıt: 02 Tem 2005 02:44
- Konum: Antalya
Re: Program ikonunun üstüne sürükleyip açtırma..
1. Boş bir proje aç.
2. Form1 in üzerine bir memo koy.
3. Form1 in OnCreate olayına aşağıdaki kodu yaz:
4. Aşağıdaki tanımlamayı formun private kısmına yapıyoruz:
5. Forma şöyle bir procedure ekliyoruz:
Hepsi bukadar.
Edit : Uses Shellapi demeyi unutmuşum.
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 ) ;
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;
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;
Edit : Uses Shellapi demeyi unutmuşum.
Re: Program ikonunun üstüne sürükleyip açtırma..
Tekrar çok teşekkür ederim. Her iki kod da mükemmel işimi gördü... 
