messagedlg butonlarının yazısını EVET HAYR yapmak.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
ng
Üye
Mesajlar: 192
Kayıt: 01 Mar 2004 11:49
Konum: Bursa
İletişim:

messagedlg butonlarının yazısını EVET HAYR yapmak.

Mesaj gönderen ng »

Daha önce yazdığım bir programda bir çok yerde messagedlg fonksiyonunu kullanmışım bu da ekrana çıkan soruların cevaplarını YES, NO,OK,CANCEL gibi ingilizce yazıyor bunların tükçe çıkmalarını sağlayabilirmiyiz?
ng
Üye
Mesajlar: 192
Kayıt: 01 Mar 2004 11:49
Konum: Bursa
İletişim:

Mesaj gönderen ng »

teşekkürler.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhaba..

Sabitleri değiştirmek her zaman çözüm değil. Dilediğin şeyi yazdırmak için her defasında bu sabitler unitine el atmaktansa kendi fonksiyonunu yazmak çözüm adına atılmış daha etkin bir adım olacaktır.

- Projelerimde kullandığım bir yapıyı örnekleyim...

Kod: Tümünü seç

function MyMessageDlg(const Msg: string;
  DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons;
  Captions: array of string): Integer;
// Uses: Dialogs, stdctrls //
var
  aMsgDlg      : TForm;
  i            : Integer;
  dlgButton    : TButton;
  CaptionIndex : Integer;
begin
  aMsgDlg := CreateMessageDialog(Msg, DlgType, Buttons);
  aMsgDlg.FormStyle := fsStayOnTop;
  captionIndex := 0;

  for i := 0 to aMsgDlg.ComponentCount - 1 do
  begin
    if (aMsgDlg.Components[i] is TButton) then
    begin
      dlgButton := TButton(aMsgDlg.Components[i]);
      if CaptionIndex > High(Captions) then Break;
      dlgButton.Caption := Captions[CaptionIndex];
      Inc(CaptionIndex);
    end;
  end;
  aMsgDlg.Caption :=  'ARMAN';
  Result := aMsgDlg.ShowModal;
end;
Kullanımı ise çok basit.. Aynı MessageDLG gibi ama sonuna dilediğin buton içeriğini yazıyorsun..

Kod: Tümünü seç

If MyMessageDlg( 'Çıkmak istediğinize emin misiniz ?', mtConfirmation, [mbOk, mbCancel], ['Çık', 'Vazgeç'] ) = mrOk then Close;
- Dilersen bu mesaj penceresine TCheckBox bile ekleyebilir dilediğin şekle ve fonksiyona büründürebilirsin...
Resim
Resim ....Resim
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

ben de Varsayılan butonu secebilmeyi ekledim
teşekkürler Muharrem bey,

Kod: Tümünü seç

function MyMessageDlg(const Msg: string;
  DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons;
  Captions: array of string;
  DefButton: Integer): Integer;
// Uses: Dialogs, stdctrls //
var
  aMsgDlg      : TForm;
  i            : Integer;
  dlgButton    : TButton;
  CaptionIndex : Integer;
begin
  aMsgDlg := CreateMessageDialog(Msg, DlgType, Buttons);
  aMsgDlg.FormStyle := fsStayOnTop;
  captionIndex := 0;

  for i := 0 to aMsgDlg.ComponentCount - 1 do
  begin
    if (aMsgDlg.Components[i] is TButton) then
    begin
      dlgButton := TButton(aMsgDlg.Components[i]);
      if CaptionIndex > High(Captions) then Break;
      dlgButton.Caption := Captions[CaptionIndex];
      dlgButton.Default := dlgButton.ModalResult = DefButton;
        if dlgButton.Default then
          aMsgDlg.ActiveControl := dlgButton;
      Inc(CaptionIndex);
    end;
  end;
  aMsgDlg.Caption :=   StringReplace(ExtractFileName(Application.ExeName),'.exe','',[]);
  Result := aMsgDlg.ShowModal;
end;


kullanımı

Kod: Tümünü seç

If MyMessageDlg( 'Çıkmak istediğinize emin misiniz ?', mtConfirmation, [mbOk, mbCancel], ['Çık', 'Vazgeç'] ,mrCancel ) = mrOK then
    ShowMessage('Çıktınız');
ÜŞENME,ERTELEME,VAZGEÇME
NeverFear
Üye
Mesajlar: 69
Kayıt: 20 Tem 2004 09:41
Konum: İzmir

Delphi Türkçe (Design-Runtime)

Mesaj gönderen NeverFear »

Windows Başlat\Ara -> Dosya Adı kısmı : const
Konum kısmı : C:\Program Files\Borland\Delphi7\Source ayarlayıp aratmayı başlatın.
İşlem tamamlandığında size bütün const ifadesi içeren yaklaşık 34 adet dosya listeleyecektir.
Bunların hepsini seçin ve Kopyala komutunu çalıştırın. Hem C:\Program Files\Borland\Delphi7\Bin
dizini altına hem de kendiniz belirlediğiniz dizinin altına yedeğini alın.
** Uzantısı *.res olan dosyalarda değişiklik yapmayın. Ama, *.pas dosyaları kopyalama
yaptığınız dizinde mutlaka olmalı.

Delphi'nin asıl *.pas dosyalarında hiçbir zaman değişiklik yapmayın. Herhangi bir
aksaklık oluşması durumunda, bunların sizi kurtarıcı rol üstleneceğini asla unutmayın.
Aksi taktirde, herşeyi sil baştan yapmak zorunda kalabilirsin.
** İşleme C:\..\DelphiX(5,6,7,2005)\Bin altına kopyaladığınız Consts.pas dosyası ile başlayalım.
Bu dosyayı, kullandığınız Delphi altından açın. Yazılış biçimine zarar vermeden
gerekli Türkçe ifadenizi yazın. Örneğin;
SOpenFileTitle = 'Open'; --> SOpenFileTitle = 'Aç';
SClassMismatch = 'Resource %s is of incorrect class'; --> SClassMismatch = '%s kaynağı geçersiz sınıfta';
//
SOKButton = 'OK'; --> SOKButton = '&Tamam';
SCancelButton = 'Cancel'; --> SCancelButton = 'İ&ptal';
//
SMsgDlgWarning = 'Warning'; --> SMsgDlgWarning = 'Uyarı';
SMsgDlgError = 'Error'; --> SMsgDlgError = 'Hata';
SMsgDlgInformation = 'Information'; --> SMsgDlgInformation = 'Bilgi';
SMsgDlgConfirm = 'Confirm'; --> SMsgDlgConfirm = 'Onay'; ... v.s.
şeklinde değiştirebilirsin. İşlemleriniz bitince dosyayı kaydedin. Diğer const
ifadesi içeren tüm dosyalarda buna benzer ayarlamalar yapabilirsin.
//
** Kullandığınız Delphi'yi kapatın.
** Windows Başlat\Çalıştır --> cmd (Tamam/Enter) veya
Windows Başlat\Tüm Programlar\Donatılar\Komut İstemi'ni tıklayınız.
Komut satırında C:\....>cd \Program Files\Borland\DelphiX(5 6 7)\Bin(Enter/Return)
C:\...\Delphi7\Bin>DCC32 Consts.pas(Enter/Return) hata yoksa Consts.dcu oluşacaktır.
Bu yöntemle *.dcu(DelphiCompileUnit) oluşturduğun tüm derlenmiş dosyaları(Consts.dcu),
Windows Gezgini veya kendi belirleyeceğin bir yolla C:\...\Delphi7\Lib dizini altına
aktarın ve Delphi'yi açın. Projeye Button ekleyin ve Button1Click yordamına;
//
if MessageDlg('Delphi projeme holgeldiniz. Şimdi çıkılsın mı?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
MessageDlg('Delphi projesinden çıkılıyor.', mtInformation, [mbOk], 0);
Close;
end;
//
şeklinde bir kodlama yapın ve çalıştırın. Uyarı ve düğme başlıklarının Türkçe geldiğini
göreceksin. Eğer DBConsts.pas dosyasında da değişiklik yapıp *dcu'yu Lib dizini altına
kopyaladıysan, veritabanıyla ilgili uyarılar Türkçe olacaktır.
** C:\...\Delphi7\Bin dizini altında bulunan(değiştirdiğin) *.pas ve *.dcu dosyaları
R/RW bir CD'ye kaydedersen, ileride Delphi'yi tekrar kurduğunda sadece *dcu dosyaları
C:\...\Delphi7\Lib dizinine aktarman yeterli olacaktır.

***** Komut istemini kapatmayı unutmayın.
---------------------------------------------------------------------------------------------
*** Veritabanını Türkçeleştirme;
Bu konu da daha önce anlatılmış. BDE veya Türkçe olarak arama yaparsanız,
ilgili konuları görebilirsin. Kısaca, veritabanı ayarlarına Delphi'nin BDE Administrator
(BDEAdmin.exe) programıyla ulaşabilirsin. Bilgi idapi32.cfg dosyasında tutulur.
(C:\Program Files\Common Files\Borland Shared\BDE\bdeadmin).
1. bdeadmin uygulamasını çalıştırın(Başlat\Tüm Programlar\Borland Delphi X(5 6 7)\
BDE Administrator yolunu kullanabilirsin). Pencere başlığına dikkat edersen
C:\Program Files\Common Files\Borland Shared\BDE\idapi32.cfg ifadesini görürsün.
2. Configuration sekmesini seçin. Sol baştaki tüm " + "'lara tıklayıp açın.
3. Configuration\Drivers\Native\PARADOX tıkladığınızda, sağ tarafta ilgili ayarları
göreceksin.
NET DIR --> Windows dışında başka bir işletim sistemi kullanmıyorsan
C:\ kalmalı. C:\PDOXUSRS.NET oluşturur.
PDOXUSRS.NET dosyasını programın içinden de yönlendirebilirsin.
Örnek;
ChDir(AppPATH + '\Network');
if IOResult <> 0 then MkDir(AppPATH + '\Network');
Session.NetFileDir:= AppPATH + '\Network';
VERSION --> Değiştirmeyin.
TYPE --> Değiştirmeyin.
LANGDRIVER --> Paradox 'turk' veya Pdox ANSI Turkish (tercih Paradox 'turk')
Aktif duruma getirdiğinde, oluşan ComboBox listesinden seçin.
Buradaki diğer bilgileri değiştirmeyin.
PARADOX dışındakileri de aynı yöntemle ayarlayabilirsin.
4. Configuration\System\INIT --> AUTO ODBC kullanmıyorsan(hazırdeğer FALSE) sadece;
LANGDRIVER --> Paradox 'turk' ... diğerlerini değiştirmeyin.
5. Configuration\System\Formats\Date
Buradaki değerler sırasıyla; TRUE, TRUE, TRUE, 0, /, TRUE olmalı.
6. Configuration\System\Formats\Time
Buradaki değerler sırasıyla; AM, TRUE, PM, TRUE, TRUE olmalı.
7. Configuration\System\Formats\Number
Buradaki değerler sırasıyla; 2, Virgül(,işareti), TRUE, Nokta(.işareti) olmalı.

!!! "bdeadmin" uygulamasını sonlandırmadan önce değişikliklerinizi kaydettirmeyi
unutmayın. idapi32.cfg dosyasını da hazırladığın R/RW CD'ye ekleyebilirsin.

** 5. 6. 7.'deki bilgiler "Windows Bölgesel Ayarları"'yla uyuşmalı. Standart ayarları
kullanmalısın. Programını yüklediğin başka bir PC ile aynı olmalı. Aksi taktirde,
o bilgisayarda değişiklikler yapmak zorunda kalırsın.

Database Desktop programını çalıştırıp *.db dosyanızı açtığınızda ş,Ş,ğ,Ğ,ı,İ
karekterlerinin biçimsiz olduğunu göreceksin. Telaşlanmayın
Programındaki veritabanın aktifleştiğinde, bu karekterler Türkçe gözükecektir.

Not: Türkçeleştirme yaparken profesyonelce düşünün. Yazım(imla) hataları yapmayın.
Unutmayınız ki, yazdığınız program kitlelere hitap edecek. Programınız çalışma
zamanında(Runtime) kullanıcıya Türkçe uyarı gönderecek. Dolayısıyla, buna özen
gösterin. Dilimizin kelime ve deyim içeriğiyle mükemmel olduğunu unutmayın.
İnternet sohbet ortamını kullanmayın.
Hiç kimseye Türkçe dersi verme niyetinde değilim. Ama, madem bu işe bir profesyonel
gözüyle bakıyoruz, o zaman Türkçe'ye özen göstermenin şart olduğunu düşünüyorum.

İşinizi görmesi dileğimle,
Çalışmalarınızda başarılar dilerim.

NeverFear - kaheri579@hotmail.com
ozcank
Üye
Mesajlar: 925
Kayıt: 28 Nis 2005 05:29

MessageDlg

Mesaj gönderen ozcank »

Arkadaşlar ben bu şekilde kullanamıyorum hata veriyor bu alanda
['Çık', 'Vazgeç']

If MyMessageDlg( 'Çıkmak istediğinize emin misiniz ?', mtConfirmation, [mbOk, mbCancel], ['Çık', 'Vazgeç'] ) = mrOk then Close;
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: messagedlg butonlarının yazısını EVET HAYR yapmak.

Mesaj gönderen conari »

Fonksiyonu normal formlarda kullanıyordum.
MDI formda kullanmak istedim.

Kod: Tümünü seç

  dlgButton    : TButton;
şarladı.
[

Kod: Tümünü seç

Error] Unit1.pas(106): Undeclared identifier: 'TButton'
???
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: messagedlg butonlarının yazısını EVET HAYR yapmak.

Mesaj gönderen sabanakman »

Uses satırına StdCtrls eklemekte fayda var.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: messagedlg butonlarının yazısını EVET HAYR yapmak.

Mesaj gönderen conari »

Eyvallah Hoca.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: messagedlg butonlarının yazısını EVET HAYR yapmak.

Mesaj gönderen conari »

Arkadaşlar bu Dialoğa 3 soruyu nasıl ekleyeceğin.
Ben de şöle bir soru var.
Kapatmak mı gizlemek mi istersiniz
Kapat , Gizle, Vazgeç,
Vazgeç nasıl olacak Yani gelen cevabın vazgeç olduğunu nasıl anlayacağım.

İyi akşamlar.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: messagedlg butonlarının yazısını EVET HAYR yapmak.

Mesaj gönderen aslangeri »

s.a.
mesajdialogdan gelen değeri word bir değişkene atacaksın. onu kontrol edeceksin.
kod şöle bişi olacak.

Kod: Tümünü seç

cevap:=mymesagedlg(...........);
case cevap of
  mryes:evete basarsa
  mrno:....
  mrcancel:.....
  mrok:.....
  ....
end;
case yerine if ile de tek tek kontrol edebilirsin.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: messagedlg butonlarının yazısını EVET HAYR yapmak.

Mesaj gönderen conari »

Kodu henüz denedim ama case veya if kullanmak aklıma hiç gelmedi :)
Büyük ihtimal çalışacaktır. :bravo:
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
noname2040
Üye
Mesajlar: 5
Kayıt: 24 Ara 2013 05:26

Re: messagedlg butonlarının yazısını EVET HAYR yapmak.

Mesaj gönderen noname2040 »

xe5 de ben consts larla ilgili pas dosyası bulamıyorum
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: messagedlg butonlarının yazısını EVET HAYR yapmak.

Mesaj gönderen tayipk »

eğer projende bu tarz olaya daha sonra yine işin düşecekse bence kendi mesaj formunu kendin oluşturman en mantıklısı
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
Cevapla