form kapatırken diğer formdaki bileşen özelliğini değiştirme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
sarp_halit
Üye
Mesajlar: 241
Kayıt: 17 Ara 2003 04:30
Konum: Cennet Fethiye
İletişim:

form kapatırken diğer formdaki bileşen özelliğini değiştirme

Mesaj gönderen sarp_halit »

S. A. arkadaşlar.

üzerinde çalıştığım projede formları ana form üzerine koyduğum bir page control üzerinde oluşturuyorum. buraya kadar herhangi bir sorun yok. hatta isteyen arkadaşlar için kodu da veriyorum.

Kod: Tümünü seç

var form:TfrmIstatistikler;
baslik:String;
sekme:TTabSheet;
i:integer;
varmi:boolean;
begin
baslik:='İstatistikler';
varmi:=False;
for i := 0 to sayfa_panel.PageCount - 1 do
    if sayfa_panel.Pages[i].Caption=baslik then
    begin
      sekme:=sayfa_panel.Pages[i];
      varmi:=true;
      form.sekmeler.ActivePage:=tabInternetten; //eğer panelde form varsa forum üzerindeki pagecontrol nesnesinin aktif tabını tabinternetten olan olarak ayarla.
      Break;
    end;
    if not varmi then
    begin
      //ilk olarak sekmeyi oluşturalım
      sekme:=TTabSheet.Create(sayfa_panel);
      sekme.PageControl:=sayfa_panel;
      //formu sekmenin içine açalım
      form:=TfrmIstatistikler.Create(sekme);
      form.Parent:=sekme;
      form.BorderStyle:=bsNone;
      form.Align:=alClient;
      form.Visible:=True;
      sekme.Caption:=form.Caption;
    end;
  sayfa_panel.ActivePage:=sekme;
end;
Sorunum şu. Page Control üzerinde oluşturduğum formdan bir başka form modal ettiğimde, showmodal ettiğim form kapanırken bu formdaki herhangi bir bileşenin herhangi bir özelliğini değiştirmeye çalıştığımda Access Violation hatası veriyor.

showmodal ettiğim formun onClose olayında yazan kod ise şu şekilde

Kod: Tümünü seç

      frmHastaBazinda.lblMesaj.Caption:='Yeni randevu başarılı bir şekilde verildi.';
      frmHastaBazinda.HastaSec(gecerlihasta);
bu birinci problemim.

ikinci problem ise page contrl üzerinde oluşturduğum formun içerisine bir tane daha page control daha koyuyuorum ve şu şekilde bir bir kod yazıyorum.

Kod: Tümünü seç

var form:TfrmServisBazinda;
baslik:String;
sekme:TTabSheet;
i:integer;
varmi:boolean;
begin
baslik:='Servis Bazında Randevular';
varmi:=False;
for i := 0 to sayfa_panel.PageCount - 1 do
    if sayfa_panel.Pages[i].Caption=baslik then
    begin
      sekme:=sayfa_panel.Pages[i];
      varmi:=true;
      Break;
    end;
    if not varmi then
    begin
      //ilk olarak sekmeyi oluşturalım
      sekme:=TTabSheet.Create(sayfa_panel);
      sekme.PageControl:=sayfa_panel;
      //formu sekmenin içine açalım
      form:=TfrmServisBazinda.Create(sekme);
      form.Parent:=sekme;
      form.BorderStyle:=bsNone;
      form.Align:=alClient;
      form.Visible:=True;
      sekme.Caption:=form.Caption;
    end;
  sayfa_panel.ActivePage:=sekme;
end;
bu şekilde üç tane sekme var ve bu code üç sekme içinde ayrı ayrı sekmeleri aktif hale getiriyor.

eğer form ilk kez açılacaksa herhangi bir sorun yok ama form açıksa ve seçenek başka olursa o zaman yine yukarıdaki hatayı veriyor.

nasıl bir yol izleyebilirim?

teşekkür ederim.
Fethiye den herkese sevgiler ...
X))@:>
Cevapla