(10-06-2023, Saat: 20:29)ermanispir@gmail.com Adlı Kullanıcıdan Alıntı: Merhaba,
Projemde bir Mdiform var ve bu form üzerindeki bir butonla 2 veya daha çok sayıda runtime mdichildform create ediyorum.
Sorum şu;
Örneğin 3 adet create ettiğim formlardan sadece son create ettiğime mdiform üzerinden ulaşabiliyorum, diğer ilk ikisine form ismi olmadığından ulaşamıyorum.
Bu formlara ulaşabileceğim bir method paylaşırsanız çok makbule geçecek.
Şimdiden teşekkürler.
Bunu yapmak için, oluşturduğunuz yeni MdiChild formlarını bir `TList` nesnesinde saklayabilirsiniz. Bu şekilde, tüm oluşturulan formlara erişebilirsiniz.
Örneğin, MdiChild formlarını saklamak için bir `TList` oluşturun ve her yeni MdiChild formu açarken `Add` yöntemini kullanın:
type
TForm1 = class(TForm)
btnOpenChildForms: TButton;
procedure btnOpenChildFormsClick(Sender: TObject);
private
FChildForms: TList;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
{$R *.dfm}
constructor TForm1.Create(AOwner: TComponent);
begin
inherited;
FChildForms := TList.Create;
end;
destructor TForm1.Destroy;
var
I: Integer;
begin
for I := 0 to FChildForms.Count - 1 do
TCustomForm(FChildForms[I]).Free; // Free child forms
FChildForms.Free; // Free the list
inherited;
end;
procedure TForm1.btnOpenChildFormsClick(Sender: TObject);
var
ChildForm: TForm;
begin
// Create a new MdiChild form
ChildForm := TForm.Create(Application);
ChildForm.Parent := Self;
ChildForm.BorderStyle := bsNone;
ChildForm.WindowState := wsMaximized;
// Add the new form to the list
FChildForms.Add(ChildForm);
// Show the new form
ChildForm.Show;
end;
Bu şekilde, formların isimlerine ihtiyacınız kalmayacak ve tüm oluşturulan MdiChild formlarına erişebileceksiniz. Her formu liste nesnesine eklediğinizde, form örneklerine listeyi kullanarak erişebilirsiniz.
Ayrıca, MdiChild formlarını ayrı bir `TPanel` içinde görüntülemek için paneli oluşturabilir ve her yeni formu panele ekleyebilirsiniz. Böylece, form listesindeki formlara erişirken, her MdiChild formun panele yerleştirildiği panel üzerinde görüntüleyebilirsiniz.