Delphi Can

Orjinalini görmek için tıklayınız: InputQuery kullanımı
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
iyi akşamlar,

Projem de butonların isimlerini kullanıcının değiştirmesine imkan sağlamak için edit kullanmak yerine kolay bir çözüm getirmek için bakınırken delphi ile gelen örnek projelerden SQLite örnek projesine rastladım ve orda mobil için İnputbox ya da delphideki adı ile İnputQuery'nin kullanıldığını gördüm ve kullandım. bunu da paylaşmak istedim belki birisinin de işine yarar düşüncesi ile  Shy

uses : IOUtils, FMX.DialogService;

procedure Tgoogleform.Button1Click(Sender: TObject);
var
 LDefaultValue, LPrompt, TaskName: string;
begin
 try
   LPrompt := 'E-Posta';
   LDefaultValue := '';
   TDialogService.InputQuery('E-Posta Adresinizi Giriniz', [LPrompt], [LDefaultValue],
     procedure(const AResult: TModalResult; const AValues: array of string)
     begin
       if AResult = mrOk then
         TaskName := AValues[0]
       else
         TaskName := '';
       if not (TaskName.Trim = '') then
       begin
        Button1.Text  := TaskName ;
       end;
     end);
 except
   on e: Exception do
   begin
     ShowMessage(e.Message);
   end;
 end;
end;
Kullanıcıya "Cancel" hakkını vermek için aşağıdaki şekilde de deneyebilirsiniz.

procedure TForm1.Button1Click(Sender: TObject);
var
  aValue, LPrompt, TaskName : string;
begin
  try
    LPrompt := 'Lütfen Metni Giriniz : ';
    aValue := TButton(Sender).Text; // varsayılan olarak butonun kendisi
    if InputQuery( 'Giriş', [LPrompt], aValue ) then
    begin
     if Trim(aValue) <> ''
       then TButton(Sender).Text := aValue;
    end;
  except
    on e: Exception do
    begin
      ShowMessage(e.Message);
    end;
  end;
end;

(12-11-2018, Saat: 22:40)mrmarman Adlı Kullanıcıdan Alıntı: [ -> ]Kullanıcıya "Cancel" hakkını vermek için aşağıdaki şekilde de deneyebilirsiniz.

procedure TForm1.Button1Click(Sender: TObject);
var
  aValue, LPrompt, TaskName : string;
begin
  try
    LPrompt := 'Lütfen Metni Giriniz : ';
    aValue := TButton(Sender).Text; // varsayılan olarak butonun kendisi
    if InputQuery( 'Giriş', [LPrompt], aValue ) then
    begin
     if Trim(aValue) <> ''
       then TButton(Sender).Text := aValue;
    end;
  except
    on e: Exception do
    begin
      ShowMessage(e.Message);
    end;
  end;
end;


Cancel ve Ok butonlari varsayılan olarak mevcutmuş hocam  Shy

Teşekkürler destek için  Shy
Yanlış anladınız, Cancel butonu çalışmıyor diye yazmıştım
(13-11-2018, Saat: 12:11)mrmarman Adlı Kullanıcıdan Alıntı: [ -> ]Yanlış anladınız, Cancel butonu çalışmıyor diye yazmıştım

umarım yine yanlış anlıyorumdur çünkü cancel butonunu test ettim orjinalinde. ve çalışıyor hocam  Blush

ama boş bir yere basma işleminde de iptal ediyor belki cancel butonunu da öyle algılıyor olabilir  Shy


DÜZELTME ;

Fark ettim hocam windows ortamında işlevselliği yok cancel'in. Shy

mobilde sorun yaşatmıyor sadece  Shy
Eski bir konu ama mobille uğraşınca benim de başıma geldi.
Delphi 10.2 kullanıyorum ve TDialogService.InputQuery'nin Cancel butonu Windows ortamında çalışmıyor Sad
Ama 10.3 versiyonu ile sorun çözülmüş:
https://quality.embarcadero.com/browse/RSP-16148
(07-11-2019, Saat: 10:33)SimaWB Adlı Kullanıcıdan Alıntı: [ -> ]Eski bir konu ama mobille uğraşınca benim de başıma geldi.
Delphi 10.2 kullanıyorum ve TDialogService.InputQuery'nin Cancel butonu Windows ortamında çalışmıyor Sad
Ama 10.3 versiyonu ile sorun çözülmüş:
https://quality.embarcadero.com/browse/RSP-16148

Sorunun ne olduğunu Trace edip buldum; ama etrafından dolanmak için detaylı araştırma yapmadım:

FMX.DialogHelper.pas unit'i içinde tanımlı olan TDialogForm sınıfının içinde FCanCancel isimli public bir alan var ve bu alanın değeri False olduğu için CloseQuery metodundan çıkıyor. Bir şekilde FCanCancel'ın true yapılabilmesi ile; ilgili sorun fix'lenebilir eski Delphi sürümlerinde de.