TPaneli Showmodal olarak gostermek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2128
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

TPaneli Showmodal olarak gostermek

Mesaj gönderen sadettinpolat » 02 Haz 2009 02:02

form uzerinde bir adet tpanel var. icinde bir iki bilesen mevcut.
normalde bu panel gizli. bu paneli gorunur yaptigimda panele showmodal
ozelligi vermek istiyorum.
panel gorunur durumdayken kullanici form uzerindeki diger bilesenlere
mudahele edemesin taki paneli kapatana dek. bu isi paneli bi forma koyup
formuda showmodal olarak cagirip yapabiliriz ama ben bu is icin extra bir
form eklemek istemiyorum projeye.

boyle bir sey yapmak mumkun mudur?
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/

Jire
Üye
Mesajlar: 167
Kayıt: 07 Eki 2007 12:20

Re: TPaneli Showmodal olarak gostermek

Mesaj gönderen Jire » 02 Haz 2009 07:53

Bütün componentleri Enabled'ını False yapabilirsin belki?

bunu delphi.about'tan aldım. bütün editleri clear yapıyor. eğer biraz değiştirirsek, olur mu bilmiyorum denemedim
procedure ClearEdits;
var j : Integer;
begin
for j := 0 to ComponentCount-1 do
if (Components[j] is TEdit) then
(Components[j] as TEdit).Text := '';
end;
bu prosedür çalışır mı bilemem bütün panelleri enabled'ını false yapıyor

Kod: Tümünü seç

procedure PanelDisable;
  var j : Integer;
begin
for j := 0 to ComponentCount-1 do
begin
   if (Components[j] is TPanel) then
     (Components[j] as TPanel).Enabled := False;
end;
SeninIstediginPanel.Enabled := True;
end;
Ayrıca buna bakabilirsin.
http://www.daniweb.com/forums/thread150255-4.html#

Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2128
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: TPaneli Showmodal olarak gostermek

Mesaj gönderen sadettinpolat » 02 Haz 2009 09:47

butun bilesenleri dolasip panel ve panelin uzerindeki bilesenler haric digerlerini false yapmak ise yariyor fakat
form uzerindeki bilesen sayisi fazla olunca islem uzun suruyor. bir de bu sekilde yapinca paneli kapatmadan formu kapatmak istediginde ek bir kontrol yapmak gerekiyor

if panel.visible = true then
formu kapatma

gibi. ben bunlara gerek kalmasin istiyorum. sonucta windows icin formda bir pencere , panelde bir pencere. forma verilebilen bir ozelligin panelede verilebilmesi lazim.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/

Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 30 Eyl 2007 11:02
Konum: Ankara

Re: TPaneli Showmodal olarak gostermek

Mesaj gönderen Battosai » 02 Haz 2009 12:26

Şöyle bir fikir vereyim bende panel dışında kalan diğer elemanları başka bir panel içine alıp o panelin enabled özelliği ile istediğiniz yapabilirizsiniz diye düşünüyorum...

Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2128
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: TPaneli Showmodal olarak gostermek

Mesaj gönderen sadettinpolat » 02 Haz 2009 05:27

showmodal olarak gozukecek panel haricindeki diger panelleri disable yapmakta is gorurdu ama bu sekilde kullanacagim panel sayisi biraz fazla olunca pek kullanisli bir cozum gibi gelmedi.

bi tane form kullanarak isimi gorecek birseyler buldum.

paneli, projede bu is icin olusturmus oldugum bir formu create edip onun icine yerlestirip showmodal ediyorum.

Kod: Tümünü seç

procedure TForm3.Button4Click(Sender: TObject);
begin
PostMessage(Application.ActiveFormHandle,wm_close,0,0);
end;
 
 
procedure TForm3.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if button in [mbRight] then
  ShowPanelInModalForm(panel1,x,y);
end;
 
procedure TForm3.ShowPanelInModalForm(aPanel:TPanel;X,Y:Integer);
var
myForm:TfrmPanelContainer;
Panel:TPanel;
Point:TPoint;
begin
  Application.CreateForm(TfrmPanelContainer, myForm);
  Panel :=aPanel;
  Point.X := X;
  Point.Y :=Y;
  Point:=ClientToScreen(point);
  myform.Width :=panel.Width;
  myform.Height :=panel.Height;
  myForm.Left :=Point.X;
  myForm.Top :=point.Y;
 
  Panel.Parent:=myForm;
  Panel.Align :=alClient;
  Panel.Visible :=True;
  myForm.ShowModal;
  panel.Visible:=false;
  panel.Parent :=self;
  panel.Align:=alNone;
  FreeAndNil(myform);
end;
 
end.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/

Cevapla