Delphi 7 ve Devexpress Status Bar

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Nomercy
Üye
Mesajlar: 62
Kayıt: 17 Kas 2014 12:33

Delphi 7 ve Devexpress Status Bar

Mesaj gönderen Nomercy »

Arkadaşlar Delphi 7 ye Devexpress Kurdum Proje Yapıyorum Ama Şöyle Bir Sorunum Var;

dxRibbonStatusBar da Panel Oluşturdum Sadece 1 Panelde Çalışacak Şekilde Popup Menu Yapmak İstedim Ama Yapamadım?

Bunu Yapma Seçeneğimiz Yok mu?
Nomercy
Üye
Mesajlar: 62
Kayıt: 17 Kas 2014 12:33

Re: Delphi 7 ve Devexpress Status Bar

Mesaj gönderen Nomercy »

Yardımcı olabilecek kimse yok mu?
AfterPost
Üye
Mesajlar: 144
Kayıt: 12 Tem 2014 10:22

Re: Delphi 7 ve Devexpress Status Bar

Mesaj gönderen AfterPost »

Bu konuda sanmıyorum ben de buna benzer bir konu açmıştım konuyu geri silmek zorunda kaldım..
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Delphi 7 ve Devexpress Status Bar

Mesaj gönderen SimaWB »

Bende kurulu Devexpress yok fakat genel olarak şöyle birşey söyleyebilirim:
TPopupMenu'nün OnPopup olayını kontrol ederek istediğiniz zaman görünmemesi sağlayabiliriz. Mesela 2 panel var, ikisine de popupmenu olarak PopupMenu1'i atadım. Normalde ikisinde de sağ tıkladığımızda menü açılacaktır. Mesela, Panel2'de açılmasını istemiyorsak:

Kod: Tümünü seç

procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
  if ((Sender as TPopupMenu).PopupComponent.Name = 'Panel2') then
    Abort;
end;
Dediğim gibi bende Devexpress olmadığı için deneyemiyorum ama TPanel vs. bileşenlerde bu şekilde düzgün çalışır.
There's no place like 127.0.0.1
Nomercy
Üye
Mesajlar: 62
Kayıt: 17 Kas 2014 12:33

Re: Delphi 7 ve Devexpress Status Bar

Mesaj gönderen Nomercy »

SimaWB yazdı:Bende kurulu Devexpress yok fakat genel olarak şöyle birşey söyleyebilirim:
TPopupMenu'nün OnPopup olayını kontrol ederek istediğiniz zaman görünmemesi sağlayabiliriz. Mesela 2 panel var, ikisine de popupmenu olarak PopupMenu1'i atadım. Normalde ikisinde de sağ tıkladığımızda menü açılacaktır. Mesela, Panel2'de açılmasını istemiyorsak:

Kod: Tümünü seç

procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
  if ((Sender as TPopupMenu).PopupComponent.Name = 'Panel2') then
    Abort;
end;
Dediğim gibi bende Devexpress olmadığı için deneyemiyorum ama TPanel vs. bileşenlerde bu şekilde düzgün çalışır.

Kod: Tümünü seç

procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
  if ((Sender as TPopupMenu).PopupComponent.Name = 'dxRibbonStatusBar.Panels[1]') then
    Abort;
end;
olarak değiştirdiğimde olmuyor :( istediğim başka nasıl bir çözüm olabilir?
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Delphi 7 ve Devexpress Status Bar

Mesaj gönderen SimaWB »

Kodunuza breakpoint koyup (Sender as TPopupMenu).PopupComponent.Name değerini kontrol ettiniz mi?
There's no place like 127.0.0.1
Nomercy
Üye
Mesajlar: 62
Kayıt: 17 Kas 2014 12:33

Re: Delphi 7 ve Devexpress Status Bar

Mesaj gönderen Nomercy »

SimaWB yazdı:Kodunuza breakpoint koyup (Sender as TPopupMenu).PopupComponent.Name değerini kontrol ettiniz mi?
nasıl yani hocam örnek verebilirmisiniz?
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Delphi 7 ve Devexpress Status Bar

Mesaj gönderen SimaWB »

O satır üzerindeyken F5'e basın. Satır kırmızı renge dönüşür yada satırın başında kırmızı bir nokta belirir. Sonra programı F9'a basarak çalıştırın. PopupMenu ne zaman açılırsa, yani program o satırı çalıştırmayı denerse, programınız durur ve Delphi üzerinde siz istediğiniz değişkenin o anki durumunu görebilirsiniz. Bu esnada (Sender as TPopupMenu).PopupComponent.Name 'i komple seçip Ctrl+F7'ye bastığınızda değeri görürsünüz. Programın kaldığı yerden çalışmasına devam etmek için F9'a basmalısınız.
Yada

Kod: Tümünü seç

if ((Sender as TPopupMenu).PopupComponent.Name = 'dxRibbonStatusBar.Panels[1]') then
satırından hemen önce

Kod: Tümünü seç

ShowMessage((Sender as TPopupMenu).PopupComponent.Name));
yazarsanız Name değerini görürsünüz.
There's no place like 127.0.0.1
Nomercy
Üye
Mesajlar: 62
Kayıt: 17 Kas 2014 12:33

Re: Delphi 7 ve Devexpress Status Bar

Mesaj gönderen Nomercy »

SimaWB yazdı:O satır üzerindeyken F5'e basın. Satır kırmızı renge dönüşür yada satırın başında kırmızı bir nokta belirir. Sonra programı F9'a basarak çalıştırın. PopupMenu ne zaman açılırsa, yani program o satırı çalıştırmayı denerse, programınız durur ve Delphi üzerinde siz istediğiniz değişkenin o anki durumunu görebilirsiniz. Bu esnada (Sender as TPopupMenu).PopupComponent.Name 'i komple seçip Ctrl+F7'ye bastığınızda değeri görürsünüz. Programın kaldığı yerden çalışmasına devam etmek için F9'a basmalısınız.
Yada

Kod: Tümünü seç

if ((Sender as TPopupMenu).PopupComponent.Name = 'dxRibbonStatusBar.Panels[1]') then
satırından hemen önce

Kod: Tümünü seç

ShowMessage((Sender as TPopupMenu).PopupComponent.Name));
yazarsanız Name değerini görürsünüz.
Hocam Name değeri dxRibbonStatusBar olarak görünüyor ama ben panelslerine ulaşamıyorum bu yolla yani dxRibbonStatusBar.Panels[0] değerine ulaşamıyorum. dxRibbonStatusBar yazdığımda Name değerine çalışıyor ama dxRibbonStatusBar ı panellere ayırdığım için hepsinde çalışmıyor bu kez ben dxRibbonStatusBar.Panels[1] haricinde diğerlerinde çalışmasın istiyorum ama olmuyor.

Not: Siz ne demek istediğimi normal statusbar kullanarak anlarsınız.
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Delphi 7 ve Devexpress Status Bar

Mesaj gönderen SimaWB »

Normal statusbar'la şöyle bir deneme yaptım:
Statusbar'a bir adet PopupMenu atadım. Ayrıca statusbar'da 3 adet panel oluşturdum.
Mesela ikinci panelde PopupMenu'nün görünmesini istemiyorum:

Kod: Tümünü seç

procedure TForm3.PopupMenu1Popup(Sender: TObject);
var
  p: TPoint;
  i: integer;
  Panel2_start, Panel2_end: integer;
begin
  p := StatusBar1.ScreenToClient(Mouse.CursorPos);
  Panel2_start := StatusBar1.Panels[0].Width;
  Panel2_end := Panel2_start + StatusBar1.Panels[1].Width;
  if (p.x > Panel2_start) and (p.x < Panel2_end) then
    Abort;
end;
There's no place like 127.0.0.1
Cevapla