Formun system iconlarının aktif pasif edilmesi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Formun system iconlarının aktif pasif edilmesi

Mesaj gönderen Biltes »

Arkadaşlar kolaygelsin;
Yazdığım projede formun başlığındaki minimize,maximize ve kapat butonları var form özelliklerinden kapat butonu hariç aktif pasif yapabiliyorum. Systemmenu özelliğini false yapınca hepsi kayboluyor. Benim amacım sadece minimize iconun görünmesi.Eğer sadece bunu göstermenin bir yolu yoksa minimize ve kapat tuşu kalacak alternatif olarak ama kod ile kapat düğmesini nasıl pasif bırakırım.

Yardımlarınız için şimdiden çok teşekkür ediyorum...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Arkadaşlar kolay gelsin;

Sanırım daha önce bu yöntemi kullanan hiç olmadı. Yoksa çok zor bişi mi sordum anlayamadım.Şimdilik çözümü formun properties bölümünden hallettim ama kapat butonu halen daha aktif duruyo gözümün içine bata bata.Eğer çözüm bulursam buraya da yazıcam.

Herkese çalışmalarında başarılar diliyorum...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
OrbaKO
Üye
Mesajlar: 4
Kayıt: 01 Tem 2007 11:39

Mesaj gönderen OrbaKO »

senin dedigin yontem bu sanirim baska sekilde olurmu bilmem ama button olusturarak kendin yapabilirsin daha baska turlu

http://img412.imageshack.us/my.php?image=yardim1lc1.jpg
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Bu gösterdiğiniz bölümde sadece minimize ve maximize butonu tek olarak aktif pasif edilebiliyor.En üstteki bisystemmenu'yi komple false yaparsanız hiç bir buton çıkmı başlıkta. Benim amacım minimize butonu aktif olacak maximize ve kapat butonu pasif duruma geçecek.

Yinede cevap için tşk ederim...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
OrbaKO
Üye
Mesajlar: 4
Kayıt: 01 Tem 2007 11:39

Mesaj gönderen OrbaKO »

aklima baska fikir geldi ve sanirim istedigin bu

http://img157.imageshack.us/img157/7262/istedigifs9.jpg
En son OrbaKO tarafından 10 Tem 2007 04:37 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Sayın OrbaKO, evet bahsettiğin şekilde yapmak istiyordum ama suipack bileşenlerini kullanmadan olabilirse diye demiştim.Yine de ilgin için çok teşekkürler.

Dediğim olayı formun oncreate'ine yazılan bu kod bloğu ile hallettim. Umarım lazım olan kişiler bundan faydalanabilir.

Kod: Tümünü seç

Procedure TForm1.FormCreate(Sender:TObject);
var
  hwndHandle : THANDLE;
  hMenuHandle : HMENU;
  iPos:Integer;
begin
  hwndHandle := FindWindow(nil,PChar(Caption));
  if (hwndHandle <> 0) then begin
    hMenuHandle := GetSystemMenu(hwndHandle, FALSE);
    if (hMenuHandle <> 0) then begin
      DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);
      iPos := GetMenuItemCount(hMenuHandle);
      Dec(iPos);
      if iPos > -1 then
        DeleteMenu(hMenuHandle,iPos,MF_BYPOSITION);
    end;
  end;
end;
Ben sorunu bu şekilde bileşen kullanmadan çözdüm. Herkese çalışmalarında başarılar..
Kolay gelsin...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Arkdaşlar sorum yine bu konu ile ilgili olduğu için yeni başlık açmadım. Şimdi bu kodu projedeki her formun oncreate'ine yazmak yerine bir dll yazılsa yada nasıl bir fonksiyon kullanabilirim ki sadece diğer formların on create'ine fonksiyonun ismini yazsak.

Bu konu ile ilgili yardımcı olabilrseniz yda örnek verebilrseniz çok memnun olurum.

Herkese ii çalışmalar...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Gördüğüm kadarıyla forma bağlı olarak değişen kısım sadece şu:
hwndHandle := FindWindow(nil,PChar(Caption));

Bir prosedür yazıp Caption'ı paremetre olarak geçmeniz yeterli.

Kolay gelsin...
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Caption yerine Handle kullanmak daha iyi olur.

Kod: Tümünü seç

procedure DisableCloseButton(FormHandle: HWND);
var
  hMenuHandle : HMENU;
  iPos:Integer;
begin
  if (FormHandle <> 0) then begin
    hMenuHandle := GetSystemMenu(FormHandle, FALSE);
    if (hMenuHandle <> 0) then begin
      DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);
      iPos := GetMenuItemCount(hMenuHandle);
      Dec(iPos);
      if iPos > -1 then
        DeleteMenu(hMenuHandle,iPos,MF_BYPOSITION);
    end;
  end;
end;
Kullanımı:
DisableCloseButton(Handle);

(Uses'a Windows eklenmesi yeterli)
Kullanıcı avatarı
Biltes
Üye
Mesajlar: 361
Kayıt: 11 Oca 2005 02:24
Konum: Edirne

Mesaj gönderen Biltes »

Hocam cevap için çok teşekkürler tam dediğim gibi oldu olay.Ellerinize sağlık.

Herkese çalışmalarınızda başarılar dilerim...
Var olmaya değer her şey bilinmeye de değerdir. Çünkü bilgi varlığın bir imgesidir. Onda iyi ve kötü aynı anda bulunmaktadır...
Cevapla