procedure TfrmMainform.btnHastaBazindaClick(Sender: TObject);
var form:TfrmHastaBazinda;
baslik:String;
sekme:TTabSheet;
i:integer;
varmi:boolean;
begin
baslik:='Hasta 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:=TfrmHastaBazinda.Create(sekme);
form.Parent:=sekme;
form.BorderStyle:=bsNone;
form.Align:=alClient;
form.Visible:=True;
form.tbHastaarama.SetFocus;
sekme.Caption:=form.Caption;
end;
sayfa_panel.ActivePage:=sekme;
end;
kodlarnı kullandım. şimdi ise şöyle bir sıkıntım var. ben bu formu açtıktan sonra üzerideki herhangi bir butonla yeni bir form showmodal ediyorum. açılan yeni formun kapanışında panelin içindeki herhangi bir nesneye müdahale etmem gerekiyor. mesela sekmenin içindeki formun üzerinde bulunan label'ın captionını değiştirmek istiyorum.
Şimdi sen sekmenin içerisinde aaçılan bir formun üzerindeki bir button a basarak bir başka formu modal olarak gösterdin. Sonra modal olan form kapandı. Yapamadığın şey nedir onu anlamadım. hangi formun caption ını değiştirmek istiyorsun? Eğer tabsheet içerisindeki formun mu yoksa PageControl u içeren formun caption ını mı?
Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
show modal ettiğim form kapanırken sekme içerisinde yer alan formun üzerindeki herhangi bir label'ın caption özelliğini değiştirmek istiyorum ama bu sefer access violation hatası veriyor.
Formu free ettikten sonra herhangi bir degişiklik yapamazsın, artık nesneler geçersizdir.
Free etmeden önce degişiklik yapabilirsin, ama form ve sekme lokal değişkenler, sadece bu procedure içindeyken geçerlidir. Başka procedure lerde kullanacaksan bu değişkenleri global olarak tanımlamalısın ve işin bittikten sonra nil ile içerigin boşaldıgını belirtmelisin.