Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Otomatik Tamamlama
#1
Pek çoğumuz bazen programlarımızın kullanıcılarından herhangi bir dosya seçimi için girdi yapmasını isteriz. Bunun için farklı yaklaşımlarımız olur. Kimimiz bir edit nesnesinin yanına bir button koyar, button'a tıklanınca da bir Opendialog açar, kimimiz shell control nesnelerinden istifade eder.

 Bugün size pek bilinmeyen bir API vasıtası ile bu işin kolayca nasıl yapılacağını örnekleyeceğim.

İlgili formunuzun uses kısmına WinAPI.ShlwAPI ekleyin ve aşağıdaki kodu kullanın, ardından edit'inize c:\ gibi bir şeyler yazın ve sonucu gözlemleyin Wink Kullanacağımız API: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol


procedure TForm1.Button1Click(Sender: TObject);
begin
 SHAutoComplete(Edit1.Handle, SHACF_FILESYSTEM);
end;

SHACF_FILESYSTEM flag'ının haricindeki seçenekleri sizlerin araştırmanıza bırakıyorum.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#2
Tuğrul abi,
Bu çok faydalı paylaşımın için teşekkür ederim.
SHAutoComplate fonksiyonunun formun OnCreate olayında etki etmemesinin sebebi nedir ?
Cevapla
#3
Emeğine sağlık Tuğrul Hocam.
There's no place like 127.0.0.1
WWW
Cevapla
#4
Süpermiş  Wink

Şuraya bir SS atalım o zaman...


LQ4djG.png
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#5
(23-08-2016, Saat: 09:42)vkamadan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlTuğrul abi,
Bu çok faydalı paylaşımın için teşekkür ederim.
SHAutoComplate fonksiyonunun formun OnCreate olayında etki etmemesinin sebebi nedir ?

Muhtemelen henüz edit'ler handle'larını almamışlardır Wink
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#6
Böyle birşey olabilir mi? Yani form üzerindeki elemanlar oluşmadan formun onCreate olayı tetiklenebilir mi? OldCreateOrder özelliği var ama bunu değiştirsem de yine de formun elemanları create edilmeden OnCreate tetiklenmiyor gibi.
There's no place like 127.0.0.1
WWW
Cevapla
#7
Selam, 
Tuğrul hocam izninizle, ufak bir araştırmayla bulduğum Delphi 7 de ki kullanımına bir örnek vereyim. Malum hala benim gibi eskilerden ilerleyen arkadaşlarda vardır foruma gelen Smile

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, COMOBJ;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

Const
    shlwapi = 'shlwapi.dll';
  SHACF_FILESYSTEM  = $1;

function AutoComplete(editField: TEdit; dwFlags: DWORD): Boolean;

implementation

{$R *.dfm}
function SHAutoComplete(hwndEdit: HWND; dwFlags: dWord): LongInt; stdcall; External shlwapi Name 'SHAutoComplete';

function AutoComplete(editField: TEdit; dwFlags: DWORD): Boolean;
begin
     Result := (SHAutoComplete(editField.Handle, dwFlags) = 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
AutoComplete(Edit1, SHACF_FILESYSTEM);
end;

end.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#8
(23-08-2016, Saat: 12:43)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(23-08-2016, Saat: 09:42)vkamadan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlTuğrul abi,
Bu çok faydalı paylaşımın için teşekkür ederim.
SHAutoComplate  fonksiyonunun formun OnCreate olayında etki etmemesinin sebebi nedir ?

Muhtemelen henüz edit'ler handle'larını almamışlardır Wink

(23-08-2016, Saat: 13:09)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBöyle birşey olabilir mi? Yani form üzerindeki elemanlar oluşmadan formun onCreate olayı tetiklenebilir mi? OldCreateOrder özelliği var ama bunu değiştirsem de yine de formun elemanları create edilmeden OnCreate tetiklenmiyor gibi.

Abi OnCreate olayında Edit1.Handle baktığımda bir değer alıyor, dedim belki sonradan mı değişiyor sonrasındada kontrol ettiğimde aynı değer yani Handle almamayla ilgili değil gibi.
Cevapla
#9
Çok güzel bir paylaşım olmuş hocam elinize sağlık. Teşekürler.
Ekleme:Kısa bir inceleme yaptım da gerçekten çok faydalı bir bilgi olmuş, WebBrowser çalışması olanlar için
SHACF_DEFAULT 
SHACF_URLHISTORY 
 
olmazsa olmazlardır sanırım.
Cevapla
#10
(23-08-2016, Saat: 09:42)vkamadan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlTuğrul abi,
Bu çok faydalı paylaşımın için teşekkür ederim.
SHAutoComplate  fonksiyonunun formun OnCreate olayında etki etmemesinin sebebi nedir ?

Formun OnCreate'inde Edit1 için SHAutoComplate'i çalıştırdığımda düzgün çalıştığını gözlemledim. Problemi yanlış mı anladım acaba?
There's no place like 127.0.0.1
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter





Konuyu Okuyanlar: 1 Ziyaretçi