Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    92

    [Delphi] runtime - creazione componenti

    Vorrei creare dei componenti a runtime su un PageControl.
    La creazione dei TabSheet a runtime funziona.
    ma vorrei che su di essi si visualizzassero delle label .
    La label me la crea da qualche parte... ma sicuro non la visualizza
    sul Tabsheet che ho appena creato...x essere + precisi..credo
    che la crei sotto il pageControl , ossia sulla form.
    Come potrei fargli capire che quella label va proprio
    sul tabsheet che ho appena cretao?

    questo il codice che sto sperimentando:

    with PageControl1 do
    begin
    with TTabSheet.Create(Self) do
    begin
    PageControl := PageControl1;
    Name := 'TabSheet2';
    TabVisible := True;
    Caption := 'Concessionario' ;
    PageIndex := 1;
    with TLabel.Create(owner) do
    begin
    Top := 72;
    Left := 19;
    Caption := 'Test';
    Name := 'Label12';
    Visible := True;
    Enabled := True;
    end; //TCustomLabel
    end;
    end;

    dove sto sbagliando ?
    Grazie
    Kate71

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Manca l'impostazione della proprietà Parent del controllo.

    Il parametro AOwner che viene specificato nella creazione dell'etichetta tramite il metodo Create dovrebbe essere sostituito da Self, in modo che sia la form stessa a fungere da Owner per il controllo; l'Owner è il componente che ha la responsabilità di distruggere i controlli posseduti al momento della distruzione dell'Owner stesso.

    La proprietà Parent di un controllo visuale, invece, indica il controllo al quale si riferiscono le proprietà Left e Top che servono poi a visualizzare correttamente il controllo stesso all'interno del controllo designato come contenitore.

    Nel tuo codice, devi memorizzare da qualche parte il riferimento al TabSheet creato e impostarlo come Parent della Label.

    Un esempio:
    codice:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      TabSheet: TTabSheet;
      Lbl: TLabel;
    begin
      TabSheet := TTabSheet.Create(Self);
      TabSheet.PageControl := PageControl1;
      TabSheet.Caption := 'Concessionario';
      TabSheet.PageIndex := 1;
      Lbl := TLabel.Create(Self);
      Lbl.Parent := TabSheet;
      Lbl.Left := 10;
      Lbl.Top := 10;
    end;
    Io eviterei di attribuire dinamicamente nomi ai controlli creati, poichè la creazione di un secondo controllo analogo non andrebbe a buon fine se ad esso venisse attribuito un nome identico al precedente.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    92
    Non so davvero come ringraziarti!
    Inutile dire che funziona perfettamente!!
    Grazie per la chiarezza e la celerità delle tue risposte!

    Kate71

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480
    Originariamente inviato da kate71
    Non so davvero come ringraziarti!
    Inutile dire che funziona perfettamente!!
    Grazie per la chiarezza e la celerità delle tue risposte!
    "De nada", signorina.
    Sono casi che ho già affrontato, quindi è abbastanza facile trovare una risposta.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.