Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    118

    Creazione nuovo componente attraverso codice.

    Vorrei riuscire a creare i componenti "published" senza importarli con il mouse dalla barra degli strumenti, cioè senza l'usilio della modalità visuale.
    Mi spiego meglio: vorrei far apparire sulla finestra del programma un componente di TEdit. Normalmente per questa operazione si clicca sulla finestra degli strumenti eppoi con il mouse sulla nostra finestra per fare apparire il componente.
    Ma se invece volessi fare come in Java o in C#, facendo apparire il componente sulla finestra scrivendo solo il codice?

    Vorrei creare un array di componenti TEdit senza aver bisogno di far puntare ogni singola locazione del mio array ad altri componenti TEdit.

    Vi ringrazio.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,308
    Si usa il metodo Create che è il costruttore; ad esempio, supponendo di dover creare un componente dinamicamente quando viene creato il Form che lo contiene, basta scrivere:
    codice:
    procedure TMyForm.OnCreate(Sender: TObject);
    var
      MyEdit: TEdit;
    begin
      MyEdit := TEdit.Create(Self);
      MyEdit.Parent := Self;
      MyEdit.Left := 10;
      MyEdit.Top := 10;
    end;
    Nel caso in esame, Self è un riferimento passato al metodo OnCreate, che risponde all'omonimo evento, che identifica l'istanza del Form presa in considerazione. Il riferimento Self viene passato come parametro al costruttore per far sì che il Form diventi l'owner del componente e lo distrugga automaticamente (rilasciando la memoria occupata) quando il Form stesso viene deallocato.

    L'impostazione di Parent è necessaria per i controlli visuali e ha lo scopo di indicare il contenitore che si occupa del loro posizionamento e visualizzazione; non va impostato, quindi, per i semplici componenti, in quanto si tratta di entità che non sono visibili.

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

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    118
    Ok. Grazie mille per il consiglio!

    Lavorando sui database diventa un'esigenza naturale dare l'opportunità all'utente del proprio client di creare un numero determinato di oggetti TEdi a proprio piacimento a secondo del tipo di Query.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,308
    Originariamente inviato da cshark
    Lavorando sui database diventa un'esigenza naturale dare l'opportunità all'utente del proprio client di creare un numero determinato di oggetti TEdi a proprio piacimento a secondo del tipo di Query.
    Se il tuo scopo è fare un Query Builder, può darsi...
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    118
    Mi sbizzarrirò a creare array di questi componenti.

    Grazie mille.

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,308
    Originariamente inviato da cshark
    Mi sbizzarrirò a creare array di questi componenti.
    Meglio usare liste (TList).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    118
    Originariamente inviato da alka
    Meglio usare liste (TList).
    Hai ragione, risulta difficile creare un array di TEdit dichiarandolo all'interno della classe.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.